配置hooks使svn提交后自動同步客戶端代碼(客戶端與服務端在同一台機器上)


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、實例演示

  好累,就先不寫了吧。。。  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM