[Subversion] 修改舊版次的訊息與作者名稱
Subversion能夠修改已存儲存過的紀錄訊息或作者名稱,因此漏打了一些資訊的或需要更正的,就有修改的機會。但修改並儲存時卻出現下列訊息:
DAV要求失敗;可能是檔案庫的 pre-revprop-change 掛勾執行失敗,或是不存在至少有一個性質變更失敗;檔案庫未更動
研讀了文件後才知道要修改訊息或作者必須手動設定 <Subversion安裝資料夾>hookspre-revprop-change.<系統執行檔名>所謂的<系統執行檔名>指的是Subversion Server的作業系統所能執行的檔案類型,例如在UNIX或Linux裡一般是.sh,Windows裡一般是.bat、.vbs或.exe等,只要複製hooks資料夾裡的pre-revprop-change.tmpl成.sh或.bat即可。
tmpl就是Template樣版的意思,而revprop-change指的是版次(rev, revision)的性質(prop, Property)的修改,檔名開頭的pre則是在修改動作要儲存至檔案庫「之前」要執行的程式,若程式傳回 0 表示沒有問題可以儲存,但若傳回 非0的數值 則表示發生狀況,因此要取消後續的儲存處理。
由pre-revprop-change.tmpl可以看出Subversion系統會傳出5個參數:
- 檔案庫名稱 (Repository)
- 要修改的版次 (Revision)
- 作者名稱 (User)
- 性質名稱 (Property Name)
- 操作的動作 (Action)
透過這幾個參數,就能方便的控制是否允許對訊息和作者這兩個重要的性質做變更了。以下是我將pre-revprop-change.tmpl的Bourne-shell改寫成Windows的.bat範例:
rem [1] REPOS-PATH (the path to this repository) rem [2] REVISION (the revision being tweaked) rem [3] USER (the username of the person tweaking the property) rem [4] PROPNAME (the property being set on the revision) rem [5] ACTION (the property is being 'A'dded, 'M'odified, or 'D'eleted)set REPOS=%1 set REV=%2 set USER=%3 set PROPNAME=%4 set ACTION=%5 echo "%PROPNAME%/%ACTION%" > "chg%REV%.txt" |
##
您可能也會有興趣的類似文章
- [SVN] Hook scripts的使用方法 (0則留言, 2005/12/09)
- [Subversion] 檔案庫的儲存格式比較 (0則留言, 2005/10/11)
- [SVN] JavaSVN改名並推出新版本 (0則留言, 2006/11/16)
- 由Subversion檔案庫匯出特定專案的內容 (0則留言, 2005/12/25)
- [Subversion] Keywords擴展設定 (2則留言, 2005/09/03)
- 試用TortoiseSVN 1.4 RC1–更新 (2則留言, 2006/09/06)
- Subversion的Apache設定 (0則留言, 2007/07/15)
- Subversion權限設定範例說明 (0則留言, 2009/09/09)
- Subversion與TortoiseSVN釋出新版1.3 (0則留言, 2006/01/05)
- 「勢不可擋」的Subversion (0則留言, 2007/08/18)
- 使用svn://連檔案庫:svnserve.exe (2則留言, 2006/09/10)
- CVS轉Subversion (0則留言, 2005/12/21)
- Subversion版本庫匯入Git的步驟與SVN整合步驟 (0則留言, 2014/10/03)
- 幾篇值得注意的Subversion相關文章 (0則留言, 2008/08/10)
- 見微知著:觀《版本控制之道-使用Subversion》有感 (1則留言, 2007/08/19)
Sorry, 很久沒用Google sc…