svn利用鈎子腳本功能實現代碼同步到web目錄


一、hook簡單介紹

    為了方便管理員控制提交的過程 ,Subversion提供了hook機制。當特定的 事件發生時,相應的 hook會被調用,hook其實就相當於特定事件的處理函數。每個hook會得到與它所處理的事件相關的參數,根據 hook的返回值,Subversion會決定是否繼續當前的提交過程

    要實際安裝一個可用的鈎子,你需要在 repos/hooks目錄下安裝一些與鈎子同名(如 start-commit或者post-commit)的可執行程序或腳本。

 

二、本地機器SVN自動更新

1. export方式(備份)

    在使用svn客戶端時,有可能需要對某一個版本進行本地備份,比如制作成壓縮包進行發布,這時候需要從svn文件夾中提取出內容,去除.svn等隱藏的svn配置文件。最笨的方法拷貝一份出來,然后顯示隱藏文件,把所有 .svn文件夾都刪掉。在svn菜單中,可以找到export命令,這個命令可以將當前svn目錄中的內容干凈地導出到指定的目錄

    例如你版本庫的svn訪問地址是http://10.30.11.12:8080/svn/project1,你想把這個版本庫下的/trunk/web文件夾發布到tomcat上,發布到tomcat的文件夾地址是d:/tomcat/opt/web,svn的管理員用戶名是abc,密碼是12345,那么這個鈎子程序應該就是:
svn export http://10.30.11.12:8080/svn/project1/trunk/web  d:/tomcat/opt/web --force --username abc --password 12345 --no-auth-cache

 

注:
--force 是說強制覆蓋d:/tomcat/opt/web這個文件夾,避免這個文件夾不為空時報錯
--username abc --password 12345 是自動將用戶名和密碼作為參數傳送進去
--no-auth-cache 是說不緩存用戶名和密碼,這是出於安全考慮

  

2.update方式

修改hooks/post-commit  

export LANG=en_US.UTF-8  
SVN=/usr/bin/svn  

STATIC_DIR=/web/root/wwwdeng  #注意權限問題
$SVN update  $STATIC_DIR --username deng --password 123456 --no-auth-cache    

#必須加上--no-auth-cache不然會報錯!!

默認使用的shell類型是sh,最好改成bash,sh是bash的子集,centos中sh其實就是軟鏈接到bash

wKiom1VjzKaCE3pRAAFTxyIwIrs242.jpg

 

3.update和export比較

    update會生成一個隱藏.svn文件夾,這個文件夾是我們不需要的,當然了,如果整個發布的內容很多的話,建議還是用update,而不用export,因為update只更新有變化的部分,而export將重新導出所有內容,網絡消耗比update大。

 

三、svn實現遠程機器自動更新

首先實現A機器通過ssh無密碼登陸B機器, 修改A機器的post-commit文件

/usr/bin/ssh -l root  192.168.127.183 "/bin/bash /home/www/svnup.sh"    

 

然后在B機器的/home/www/目錄創建svnup.sh可執行文件

/usr/bin/svn update /web/root/code  

版本庫有提交請求的時候自動會執行post-commit腳本,post-commit腳本通過ssh讓遠程機器執行shell腳本自動更新svn。

 

 

附注:

@echo off並不是DOS程序中的,
而是DOS批處理中的。
當年的DOS,所有操作都用鍵盤命令來完成,
當你每次都要輸入相同的命令時,
可以把這么多命令存為一個批處理,
從此以后,只要運行這個批處理,
就相當於打了幾行、幾十行命令。

DOS在運行批處理時,
會依次執行批處理中的每條命令,
並且會在顯示器上顯示,
如果你不想讓它們顯示,
可以加一個“echo off”

當然,“echo off”也是命令,
它本身也會顯示,
如果連這條也不顯示,
就在前面加個“@”。

說了這么多,
我覺得非常詳細了,
可能你還是不懂。
沒有經過DOS時代的人,
想法跟我們是有區別的。


免責聲明!

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



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