Skip to content

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
...
  • 4 commits
  • 3 files changed
  • 0 commit comments
  • 1 contributor
Showing with 79 additions and 27 deletions.
  1. +8 −1 bin/post-receive
  2. +10 −5 content/changes.rb
  3. +61 −21 lib/helpers/git_helper.rb
View
9 bin/post-receive
@@ -11,6 +11,7 @@
unset GIT_DIR
export HOME=/home/git
+export LANG=en_US.UTF-8
_D_VAR="$HOME/var/archlinuxvn/"
_F_LOCK="$HOME/var/archlinuxvn.lock"
@@ -30,7 +31,13 @@ die() {
}
_setup() {
- [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
+ if [[ -s "$HOME/.rvm/scripts/rvm" ]]; then
+ source "$HOME/.rvm/scripts/rvm"
+ rvm use ruby-1.9.2-head
+ else
+ die "rvm not found. We need ruby-1.9.2-head"
+ fi
+
source $HOME/bin/ssh-agent.sh >/dev/null 2>&1 || die "Can't load ssh configuration"
msg "Testing ssh connection"
ssh -o ConnectTimeout=3 kyanh@ssh.tuxfamily.org uptime >/dev/null
View
15 content/changes.rb
@@ -2,11 +2,16 @@
title: Thay đổi gần đây
---
-# Thay đổi gần đây
+# Những bài viết mới nhất
-Dưới đây là những thay đổi gần đây của trang chủ _(trên nhánh `master`)_.
-Các liên kết dẫn tới kho ở Github. Vì kho ở Github không được cập nhật
-thường xuyên, các liên kết mới nhất có thể không hợp lệ. Bạn có thể chờ đến
-ngày hôm sau thì mọi chuyện sẽ bình thường.
+<%= recent_posts %>
+
+# Những xác nhận gần nhất
+
+Dưới đây là những thay đổi gần đây của trang chủ _(trên nhánh `master`)_
+ở dạng danh sách những xác nhận vào kho `git` ở `Github`.
+Vì kho này không được cập nhật thường xuyên, các liên kết mới nhất có thể
+không hợp lệ. Bạn có thể chờ đến ngày hôm sau thì mọi chuyện sẽ bình thường.
<%= recent_changes %>
+
View
82 lib/helpers/git_helper.rb
@@ -7,29 +7,34 @@
module GitHelper
- # @purpose: Provide git information of an item
- # @author: Anh K. Huynh
- # @syntax:
- # git(:date, item)
- # git(:author, item)
- #
- # @example: see in layouts/default.html
- #
- def git(op, item)
+ # @purpose: Find the file name associated to an item
+ # @author : Anh K. Huynh
+ # @return : File path (real path) or nil
+ def item_to_file(item)
path = item.respond_to?(:identifier) ? item.send(:identifier) : item
if File.file?(path)
file_name = path
else
file_name = File.join("./content/", path.slice(0,path.size - 1))
- %w{.html .rb /index.html /index.rb}.each do |ext|
- if File.file?("#{file_name}#{ext}")
- file_name = "#{file_name}#{ext}"
- break
- end
+ ext = %w{.html .rb /index.html /index.rb}.detect do |e|
+ File.file?("#{file_name}#{e}")
end
+ file_name = ext ? "#{file_name}#{ext}" : nil
end
+ file_name = File.realpath(file_name) if file_name and File.symlink?(file_name)
+ file_name
+ end
- file_name = File.realpath(file_name) if File.symlink?(file_name)
+ # @purpose: Provide git information of an item
+ # @author: Anh K. Huynh
+ # @syntax:
+ # git(:date, item)
+ # git(:author, item)
+ # git(:stat, item)
+ # git(:last_update, item)
+ # @example: see in layouts/default.html
+ def git(op, item)
+ file_name = item_to_file(item)
command = case op
when :date then "git log -1 --pretty=\"format:%cd\" \"#{file_name}\""
@@ -46,16 +51,14 @@ def git(op, item)
end
command and File.file?(file_name) \
- ? %x{#{command}}.strip \
+ ? %x{#{command}}.strip.gsub("\n", "") \
: "Couldn't fetch information for item '#{path}'"
end
- # @purpose: Print last 50 changes in git log
+ # @purpose: Print last <num> changes in git log
# @author : Anh K. Huynh
# @date : 2012 July 19th
- # @syntax :
- # recent_changs(number_of_changes)
- #
+ # @syntax : recent_changs(number_of_changes)
def recent_changes(num = 30)
github = "https://github.com/archlinuxvn/home/commit/"
command = "git log --pretty=\"format:%h:%an:%s\" -#{num}"
@@ -70,7 +73,7 @@ def recent_changes(num = 30)
author, subject = splitted[1], splitted[2, splitted.size].join(":")
d_author = (author == current_author ? "" : "-- <strong>#{author}</strong>")
current_author = author
- "<li><a href=\"#{github}#{hash}\">#{hash}</a> #{subject} #{d_author}</li>"
+ "<li><a href=\"%s%s\">%s</a> %s %s</li>" % [github, hash, hash, subject, d_author]
else
current_author = nil
"<li>#{s}</li>"
@@ -80,4 +83,41 @@ def recent_changes(num = 30)
ret << ["</ol>"]
ret.join("\n")
end
+
+ # @purpose: Print last Mnum> posts
+ # @author : Anh K. Huynh
+ # @date : 2012 July 25th
+ # @syntax : recent_posts(<num>)
+ # @notes : This method is tricky. It reports only some selected posts.
+ # The posts are sorted by modified time returned by the system.
+ # This isn't like (Blogging) where you have to specify the
+ # (created_at) explicitly.
+ def recent_posts(num = 30)
+ all_items = @items.find_all.sort_by do |i|
+ if file_name = item_to_file(i)
+ File.mtime(file_name)
+ else
+ Time.new(0)
+ end
+ end.reverse.slice(0,num)
+
+ return "" if all_items.empty?
+
+ ret = ["<ol>"]
+ all_items.each do |p|
+ if gs = p.identifier.match(%r{^/blog/([^/]+)/.+})
+ ret << "<li>%s - %s</li>" % [gs[1], link_to(p[:title], p.identifier)]
+ elsif gs = p.identifier.match(%r{^/faq/.+})
+ ret << "<li>faq - %s</li>" % [link_to(p[:title], p.identifier)]
+ elsif gs = p.identifier.match(%r{^/vn/([^/]+)/})
+ page = gs[1]
+ if %w{author-guide bot irc news}.include?(page)
+ ret << "<li>home - %s</li>" % [link_to(p[:title], p.identifier)]
+ end
+ end
+ end
+ ret << ["</ol>"]
+
+ ret.join("\n")
+ end
end

No commit comments for this range

Something went wrong with that request. Please try again.