在Windows下配置svn服务端钩子程序
在Windows下配置svn服務端鉤子程序
?本文章是給已經配置好windows下的svn服務,還需要配置一些比如svn提交必須輸入日志,提交之后同步web目錄這種功能的介紹。
由于業務需求有時我們需要SVNsvn提交時必須填寫log日志,svn本身并不提供這種強制寫log的功能,而是通過一系列的鉤子程序(我們稱為hook腳本),在提交之前(pre-commit),提交過程中(start-commit),提交之后(post-commit),調用預定的鉤子程序來完成一些附加的功能。
本次我們要實現的是在提交到版本庫之前檢查用戶是否已經寫了注釋,當然要使用pre-commit這個鉤子程序。我們打開SVN的repository下的hook目錄,可以發現有好幾個文件,其中一個是“pre-commit.tmpl”。這個文件是一個模板文件,它告訴了我們如何實現提交前控制。
?
需求一,svn提交時必須填寫log日志的需求,如何進行配置呢?請看下面。
需要在版本庫目錄下找到hooks文件夾,我的版本庫是dxoffice,所以是這個目錄,你要找自己的目錄
然后進入,創建一個pre-commit.bat文件,提交之前要做的一個hooks文件,編輯,將以下內容拷貝到文件中并進行保存。
@echo?off?? ::????? ::?Stops?commits?that?have?empty?log?messages.?? ::??@echo?off??set?svnlook="D:/Program?Files/VisualSVN?Server/bin/svnlook.exe"?//此處是你的svnanzhu?? setlocal??rem?Subversion?sends?through?the?path?to?the?repository?and?transaction?id?? set?REPOS=%1?? set?TXN=%2??rem?check?for?an?empty?log?message?? %svnlook%?log?%REPOS%?-t?%TXN%?|?findstr?.?>?nul?? if?%errorlevel%?gtr?0?(goto?err)?else?exit?0??:err?? echo.?1>&2?? echo?Your?commit?has?been?blocked?because?you?didn't?give?any?log?message?1>&2??//此處是返回給客戶端的錯誤信息?? echo?Please?write?a?log?message?describing?the?purpose?of?your?changes?and?1>&2?? echo?then?try?committing?again.?--?Thank?you?1>&2?? exit?1?? 如果您有最少提交多少字的需求,只需在%svnlook% log %REPOS% -t %TXN% | findstr . > nul這行代碼中找到findstr .在這里有一個 點表示最少輸入1個字符,如果是10個點代表最少輸入10個字符,以此類推。保存之后,不用重啟服務器就可以進行嘗試。網上找了很多提交時都會報錯,這個配置還可以,沒有報錯。 需求二:提交svn后,需要同步web目錄。方法同上面差不多。需要創建post-commit.bat文件,提交之后要做的hooks程序,編輯,然后將下面代碼拷貝到里面,這里要注意編碼了.bat文件編碼格式設置為:ANSI,否則報錯......
@echo?off?? SET?REPOS=%1?? SET?REV=%2?? SET?DIR=%REPOS%/hooks?? SET?PATH=%PATH%;?? SET?WORKING_COPY=E:/svn_test??//此處是你的項目路徑,此路徑必須是一個svn的路徑,這意味著你已經checkout出了源碼?? svn?update?%WORKING_COPY%?--username?name?--password?password????//輸入svn用戶名密碼???
還有一個注意問題——Visual SVN Server的權限,否則可能會出現下列錯誤:
post-commit hook failed (exit code 1) with output: svn: E155004: Working copy 'D:\www\Test' locked svn: E200031: sqlite: attempt to write a readonly database svn: E200031: sqlite: attempt to write a readonly database svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)
原因是Visual SVN Server服務的執行權限不夠,不能對指定目錄做讀寫操作。解決辦法,修改Visual SVN Server?
?????簡單操作 win+R? 運行 services.msc 找到visual svn server 服務 右鍵屬性 先停止服務之后,再設置登陸,設置桌面交互或者管理員權限
?
總結
以上是生活随笔為你收集整理的在Windows下配置svn服务端钩子程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java面试八股文 2021年最新Jav
- 下一篇: 庆祝kkkbo出道!