注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Big-Time的博客

天行健,君子以自强不行。

 
 
 

日志

 
 
关于我

人生像攀登一座山,而找寻出路,却是一种学习的过程,我们应当在这过程中,学习稳定、冷静,学习如何从慌乱中找到生机。

网易考拉推荐

[转][SVN] Hook scripts的使用方法  

2011-09-29 14:41:19|  分类: Svn |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

為了達成Subversion在Commit前後能自行控管,例如:

  • Commit之前(Pre-commit)自行檢查權限,只有符合者能繼續Commit
  • Commit之後(Post-commit)自動寄Mail給特定人員
  • Commit之後將異動資訊寫入資料庫,以方便日後查詢

 

Subversion提供了下列幾種可供自行處理的事件,供自行擴充的檔案稱為Hook scripts(必須是可執行檔,在Windows裡就是副檔名為.bat、.exe、.cmd等的檔案),其範例樣板皆存放於Subversion檔案庫的hooks資料夾裡:

事件功能說明範例樣板
1Pre-commitCommit之前被執行pre-commit.tmpl
2Pre-lock檔案鎖定之前被執行pre-lock.tmpl
3Pre-revprop-change檔案庫被新增、修改或刪除前被執行pre-revprop-change.tmpl
4Pre-unlock檔案解除鎖定之前被執行pre-unlock.tmpl
5Post-commitCommit之後被執行post-commit.tmpl
6Post-lock檔案鎖定之後被執行post-lock.tmpl
7Post-revprop-change檔案庫被新增、修改或刪除後被執行post-revprop-change.tmpl
8Post-unlock檔案解除鎖定之後被執行post-unlock.tmpl
9start-commit異動開始前被執行start-commit.tmpl

這裡的處理觀念都和CVS類似(可參加我先前寫的這篇:loginfo.rb:自動寄送修改記錄信件),但麻煩的是Subversion只傳出檔案庫路徑和發生異動的Revision序號,其他資料資訊如作者、異動時間、異動檔案、異動內容等,都不會直接傳出來給Hook scripts;看了一些文件和範例程式後,發現這些資訊必須透過svn-win32-1.2.3binsvnlook.exe才能取得,我做了個簡單的測試,檔名是 檔案庫目錄/hooks/post-commit.bat:

指令說明
set APR_ICONV_PATH=d:svn-win32-1.2.3iconv設定語系Locale
echo %1 %2 >> d:repohookspost.txt看Post-commit後傳了那些東西給hook script
echo —changed: >> d:repohookspost.txt
d:svn-win32-1.2.3binSVNLOOK changed "%1″ "%2″ >> d:repohookspost.txt
把異動檔名寫入post.txt
echo —date: >> d:repohookspost.txt
d:svn-win32-1.2.3binSVNLOOK date "%1″ "%2″ >> d:repohookspost.txt
把異動時間寫入post.txt
echo —log: >> d:repohookspost.txt
d:svn-win32-1.2.3binSVNLOOK log "%1″ "%2″ >> d:repohookspost.txt
把commit時輸入的Log訊息寫入post.txt
echo —author: >> d:repohookspost.txt
d:svn-win32-1.2.3binSVNLOOK author "%1″ "%2″ >> d:repohookspost.txt
把作者寫入post.txt
echo —youngest: >> d:repohookspost.txt
d:svn-win32-1.2.3binSVNLOOK youngest "%1″ "%2″ >> d:repohookspost.txt
把最後的異動序號寫入post.txt
echo —diff: >> d:repohookspost.txt
d:svn-win32-1.2.3binSVNLOOK diff "%1″ "%2″ >> d:repohookspost.txt
把差異內容寫入post.txt

最後再寫一支程式去解析post.txt就可以了。嗯,post.txt的檔名還要再加上可分辨的序號才可以,以防止同時有許多人在Commit。

  评论这张
 
阅读(2098)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017