1、配置svn的hooks
2、實例演示
1、配置svn的hooks
1.1)配置情況
承接上篇svn搭建的文章,今次繼續使用上篇文章的配置
上篇文章的地址:linux下搭建svn代碼庫
svn倉庫所在的目錄為/opt/svn/firsttest
1.2)修改hooks文件post-commit
我們的任務需求是:當firsttest代碼倉庫有任何人提交了代碼之后,本機器上的某個位置的副本就需要立刻進行svn up操作,這樣達到副本的內容和代碼倉庫的內容相同,可以實時看到情況的目的。
根據上述的要求,分析下來就是,當有人在 firsttest 提交了代碼之后,我們的副本也需要進行更新。所以,我們需要修改的hooks文件就是firsttest/hooks/post-commit。
查看firsttest/hooks/目錄下面的文件:
# ls post-commit.tmpl post-unlock.tmpl pre-revprop-change.tmpl post-lock.tmpl pre-commit.tmpl pre-unlock.tmpl post-revprop-change.tmpl pre-lock.tmpl start-commit.tmpl
並沒有發現 post-commit 文件,但是可以發現有個 post-commit.tmpl 文件,我們需要做的就是把這個文件重命名成post-commit,或者拷貝一份副本,起個名字叫post-commit。
# cp post-commit.tmpl post-commit root@OutRoot:hooks# ls post-commit post-revprop-change.tmpl pre-lock.tmpl start-commit.tmpl post-commit.tmpl post-unlock.tmpl pre-revprop-change.tmpl post-lock.tmpl pre-commit.tmpl pre-unlock.tmpl
現在有 post-commit 文件了,但是還差點兒,把它的權限改為775:
# chmod 775 post-commit root@OutRoot:hooks# ls post-commit post-revprop-change.tmpl pre-lock.tmpl start-commit.tmpl post-commit.tmpl post-unlock.tmpl pre-revprop-change.tmpl post-lock.tmpl pre-commit.tmpl pre-unlock.tmpl
# ls -al post-commit
-rwxrwxr-x 1 root root 1977 06-05 13:47 post-commit
1.3)編輯 hooks 文件 post-commit
從 post-commit 的文件名我們就可以看出,是在 commit(合入代碼)之后(post)所進行的操作。
以下是 post-commit 文件的前幾行:
#!/bin/sh
# POST-COMMIT HOOK
#
# The post-commit hook is invoked after a commit. Subversion runs
# this hook by invoking a program (script, executable, binary, etc.)
# named 'post-commit' (for which this file is a template) with the
# following ordered arguments:
看英文的大概意思是:post-commit 鈎子文件是在執行完一次commit之后執行的。這個hook會執行一個腳本或者可執行文件、二進制文件等。
那么我們就在這里寫上我們需要svn執行的腳本。
把 post-commit 文件的最后幾行改成如下內容:
REPOS="$1" REV="$2" #mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf su -c 'svn up /home/test/workspace/firsttest' test
其中“su -c 'svn up /home/test/workspace/firsttest' test”這句話的意思是:
切換到test賬戶,就是你的svn副本是哪個賬戶就切換到哪個賬戶,要是root就直接運行“svn up /home/test/workspace/firsttest”就可以了。
之所以要切換賬戶,是因為在svn進行update操作的時候會對副本里面的.svn目錄下的內容進行修改,有可能會添加新的文件或目錄,這樣會導致之后的副本里面使用非root賬戶操作的時候失敗。
2、實例演示
好累,就先不寫了吧。。。