2009/11/18

Subversion 的 Log

使用 Subversion 之類的 version control system 時,commit log 是非常重要的一項資訊。在你追查歷史時,可以幫助你回復記憶或幫助別人迅速理解 changeset 的目的。

但人吃五穀雜糧長大,打字難免會錯。因此,就有修改 commit log 的需求產生。Subversion 安裝預設是無法修改 commit log 的。以下是開放此項功能的方法 ($REPOS 代表 repository 的目錄):
cd $REPOS/hooks
mv pre-revprop-change.tmpl pre-revprop-change
chmod +x pre-revprop-change
若設定正確,就可以用以下指令來修改任一版本的 log:
svn pe -r 1234 --revprop svn:log $REPOS

svn ps -r 1234 --revprop svn:log "New commit log" $REPOS
若你恰好跟我一樣,也用 Trac 搭配 Subversion 時,正確的 log 更重要。因為 log 可用來搜尋 changeset。不過 Trac 上的 log 是你 commit 時,Trac 偷偷複製的。你改了 Subversion 的 log,Trac 並不知道,所以 Trac 上的 log 還是舊的。

解決方法是要求 Trac 重新校正 log:
# Trac 0.12 以前
trac-admin $PROJENV resync 1234
# Trac 0.12 及以後
trac-admin $PROJENV repository resync "" 1234
其中 $PROJENV 是 Trac 的 environment 位置;1234 是 revision number,若你改了很多 log,省略這個參數就可以全部一起校正。

每次手動校正 log 很麻煩,管理也不方便。所以可以將上述指令寫在另外一個 Subversion 的 hook script -- post-revprop-change:
REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"
TRAC_ENV="..."

if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then
PYTHON_EGG_CACHE=/tmp trac-admin $TRAC_ENV repository resync "" $2
# 若你的 Trac 比 0.12 版舊,請改用以下這一行
# PYTHON_EGG_CACHE=/tmp trac-admin $TRAC_ENV resync $2
exit 0;
fi
注意!上面的 TRAC_ENV 要設定到對應此 repository 的 Trac environment。

2009/11/01

由 Ubuntu 9.04 升級到 9.10 很不平順

由 Ubuntu 9.04 升級到 9.10 很簡單:執行 系統->管理->更新管理員,應該會看到 有新的發行版,只要按 升級 就可以將 9.04 升級到 9.10。

但升級後發現中文介面不見了,變成全英文介面。這倒還好,反正英文介面也是可以看中文文件。比較麻煩的是無法輸入中文。後來摸索了很久,終於研究出把中文介面找回來的方法:開啟 System -> Administration -> Synaptic Package Manager,點選 Installed 然後在 Quick search 輸入「hant」。這樣會列出所有已安裝的 Traditional Chinese 相關套件,全選這些套件然後 Mark for ReinstallationApply 即可重新安裝這些套件,重新開機之後便找回中文介面。

不過,問題還沒有完全解決。9.10 的輸入法引擎由 SCIM 改成 IBUS,我習慣用酷音輸入法搭配許氏鍵盤。但這種組合似乎還有 bug:會自動切回標準鍵盤。每次發生這種現象之後,就要重設一次鍵盤。又摸索了一陣子,終於找到解決方法:換回 SCIM。方法如下:
  • 系統->管理->語言支援
  • 鍵盤輸入系統 = scim
另外,升級到 9.10 也幫我解決不少 9.04 的問題:
  • 不支援 Asus 某款 NB 上的 Fn 功能鍵
  • 不支援上述 NB 的 Realtek High-Definition 音效控制晶片
  • Minicom 搭配某款 USB-to-serial adapter (/dev/ttyUSB0) 啟動時會有亂碼
總結:升級過程雖然有點不平順,但我還是 Ubuntu 的衷心擁護者,強烈推薦大家轉換到這個開放的平台。