發表文章

目前顯示的是 7月, 2014的文章

SVN hook scripts如何debug

最近準備調整一些舊程式,於是在 Subversion 上新增四個版本庫(repository),並設定了post-commit這個hook。當commit程式時,自動做到以下動作 程式update到 /codepath 這目錄 將目錄 /codepath ,同步到另一台主機 這四個版本庫的hook設定可說是完全一樣(程式路徑當然不同)。沒想到,居然遇到一個奇怪的狀況。這四個版本庫中,兩個hook完全如預期的正常運作。另外兩個,雖然會做第二步驟的同步,第一步驟的update卻沒執行。 重新查看一遍所有設定,確認除了目錄不同,其他設定都一樣。增加了SVN的log來追查問題,看來hook也有執行。到底發生了什麼問題?真是令人百思不得其解。 最後,同事使用了一種語法去取得錯誤的資訊來debug,終於找到了問題。特別記錄一下… 他於hook中,使用 2>&1 。將shell script的執行結果,無論是成功、或失敗的訊息,都導向指定的log中。範例如下… /usr/local/bin/svn update /codepath > /tmp/hook_test.log 2 >&1 /path/synccode.sh 看到錯誤的log,就知道問題所在。原來,有問題的那兩個版本庫,裡面含有中文檔名、或中文目錄名。這些檔案是採用big5編碼。因此,調整如下就恢復正常了。 export LC_CTYPE = "zh_TW.Big5" /usr/local/bin/svn update /codepath > /tmp/hook_test.log 2 >&1 /path/synccode.sh