1. 程式人生 > >修改SVN提交記錄中的log message

修改SVN提交記錄中的log message

最近在提交svn有一次log message中打錯了兩個字,所以想去把那次提交的log message修改下,在工作目錄下空白處右鍵TortoiseSVN -> show log -> 選中需要修改的那次提交 -> 右鍵edit log message,整套操作如絲般順滑,錯字也很快改好,點選OK,下面是見證奇蹟的時刻:

錯誤資訊提示

看樣子大概是需要管理員建立一個hook程式?Google了一通之後明白了一些事情:

  1. 每次有新屬性提交,修改或者刪除時svn都會呼叫一個名叫pre-revprop-change的hook程式
  2. 在svn的repo/hooks 目錄下有一個 pre-revprop-change.tmpl 檔案,此檔案是一個模板檔案,裡面寫的內容很重要,標明瞭可用的引數以及正確的使用方式
  3. 如果想要使用pre-revprop-change這個hook程式,需要新建一個名為pre-revprop-change的可以行程式,windows上可以命名為 pre-revprop-change.bat 或者 pre-revprop-change.exe,Linux上應該不用字尾名,但是需要修改下許可權,使改檔案有可執行許可權,有文章中提到 chmod 755 就行了
  4. 此hook程式 return 0 表示執行成功,return 1 表示執行失敗

有了以上這些認識其實可以根據自己的需求去寫一個pre-revprop-change.bat檔案,比如大致邏輯是 只修改log資訊,log資訊不能為空 且 沒有修改其他內容,此時返回0,其餘情況返回1。

幸好已經有小夥伴做了這些操作,這篇文章 裡的小哥就寫好了這個bat檔案,看了下程式碼,嗯 沒啥問題,條件判斷很明確,就是goto用的有點多,不過沒關係了實現的邏輯和咱們的需求是一致的,所以可以使用。

新建一個空檔案,把文章中的程式碼複製到檔案中,儲存為 pre-revprop-change.bat,存放在 repo/hooks 路徑下即可。現在再去工作目錄下 edit log message 就可以成功了。

參考連結:
http://svnbook.red-bean.com/en/1.7/svn.ref.reposhooks.pre-revprop-change.html
https://stackoverflow.com/questions/197224/what-is-a-pre-revprop-change-hook-in-svn-and-how-do-i-create-it
https://ayria.livejournal.com/33438.html