jasmine214--love

          只有當你的內心總是充滿快樂、美好的愿望和寧靜時,你才能擁有強壯的體魄和明朗、快樂或者寧靜的面容。
          posts - 731, comments - 60, trackbacks - 0, articles - 0
          我想用過Subversion的人一定有過這樣的問題:“為什么不允許用戶修改日志?”,因為這種改變不可還原(目前這個操作還沒有受到版本控制 的管理),所以這項功能默認是被禁止的。如果要開啟它,必須設置一個pre-revprop-change鉤子。

          版本庫生成后,hooks目錄下就存在一些鉤子腳本的模板,用戶可以作為參考。這里我們可以把已經存在的pre-revprop- change.tmpl復制一份,將復制后的文件名改為pre-revprop-change.bat,鉤子就設置好了。注意Windows下鉤子腳本必 須以.bat或者.exe的擴展名形式存在。

          默認的鉤子模板使用的是linux下的腳本語言,不能在Windows下運行。所以我們必須重寫,這里介紹用批處理文件來寫鉤子腳本的方法。最簡 單的允許修改日志的pre-revprop-change.bat連一行都不需要,直接把pre-revprop-change.bat的內容清空就行 了,因為按照Subversion的約定,鉤子腳本返回0就是允許修改任何屬性。(關于鉤子腳本的約定可參考這篇文章 http://blog.donews.com/foxgem/archive/2005/11/03/613854.aspx)

          但是假如我們希望作些判斷,比如只允許修改日志,而不允許修改用戶名或者其他屬性,那么下面是一個范例:

          SET REPOS="%1"
          SET REV="%2"
          SET USER="%3"
          SET PROPNAME="%4"
          SET ACTION="%5"

          IF %ACTION% == "M" (IF %PROPNAME% == "svn:log" (EXIT 0))

          ECHO "Changing revision properties %PROPNAME% is prohibited" >&2
          EXIT 1
          利用Subversion的一個程序svnlook,腳本中可以訪問的信息就不僅僅只有傳遞進來的5個參數了,從而可以實現更多的功能。比如判斷 修改日志的用戶是不是以前進行提交的那個作者,如果不是就不允許修改。

          只允許用戶修改自己的svn日志的鉤子腳本:

          for /f "usebackq" %%k in (`svnlook author %1 -r%2`) do @set var=%%k

          if "%3" == "%var%" goto test
          if "%3" == "li" goto test
          exit 1

          :test
          if "%4" == "svn:log" exit 0
          echo Property '%4' cannot be changed >&2
          exit 1
          實現每人可以修改自己的log日志,而管理員li可以任意修改。這個例子是從網上摘抄來的,因為手頭上缺少svnlook,所以沒有進行測試。
          ----------------------------------------------------------------------

          Subversion提交強制寫日志(windows)

          在每次提交的時候寫明提交的目的是一個很好的習慣,Subversion默認沒有提供,但是可以通過鉤子實現:

          將下面的代碼存為pre-commit.bat放到版本庫的hooks目錄下即可,當你不寫日志提交的話就會報告錯誤。(如果你下載使用,需要修 改SVN_BINDIR為你的Subversion安裝的程序目錄)


          @echo off
          set SVN_BINDIR=d:\Subversion\bin
          setlocal
          set REPOS=%1
          set TXN=%2
          rem check that logmessage contains at least 10 characters
          %SVN_BINDIR%\svnlook log "%REPOS%" -t "%TXN%" | findstr ".........." > nul
          if %errorlevel% gtr 0 goto err
          exit 0
          :err
          echo Empty log message not allowed. Commit aborted! 1>&2
          exit 1

          原文:http://hi.baidu.com/ayifa/blog/item/0d0fda16d0450d14972b43b3.html
          主站蜘蛛池模板: 雅江县| 余江县| 桓台县| 定襄县| 安西县| 邹平县| 闽侯县| 海淀区| 鹿邑县| 弥勒县| 黄大仙区| 木兰县| 铜陵市| 广宁县| 廉江市| 邳州市| 慈溪市| 中阳县| 阜康市| 丰顺县| 定南县| 额济纳旗| 大兴区| 蒙自县| 岱山县| 晋城| 雅安市| 库伦旗| 建瓯市| 景东| 垦利县| 石河子市| 东乡县| 延长县| 定襄县| 敖汉旗| 黄浦区| 启东市| 中牟县| 婺源县| 高密市|