亞寵展、全球?qū)櫸锂a(chǎn)業(yè)風(fēng)向標(biāo)——亞洲寵物展覽會(huì)深度解析
848
2022-05-29
一、hook簡單介紹
為了方便管理員控制提交的過程 ,Subversion提供了hook機(jī)制。當(dāng)特定的 事件發(fā)生時(shí),相應(yīng)的 hook會(huì)被調(diào)用,hook其實(shí)就相當(dāng)于特定事件的處理函數(shù)。每個(gè)hook會(huì)得到與它所處理的事件相關(guān)的參數(shù),根據(jù) hook的返回值,Subversion會(huì)決定是否繼續(xù)當(dāng)前的提交過程
要實(shí)際安裝一個(gè)可用的鉤子,你需要在 repos/hooks目錄下安裝一些與鉤子同名(如 start-commit或者post-commit)的可執(zhí)行程序或腳本。
二、本地機(jī)器SVN自動(dòng)更新
1. export方式(備份)
在使用svn客戶端時(shí),有可能需要對(duì)某一個(gè)版本進(jìn)行本地備份,比如制作成壓縮包進(jìn)行發(fā)布,這時(shí)候需要從svn文件夾中提取出內(nèi)容,去除.svn等隱藏的svn配置文件。最笨的方法拷貝一份出來,然后顯示隱藏文件,把所有 .svn文件夾都刪掉。在svn菜單中,可以找到export命令,這個(gè)命令可以將當(dāng)前svn目錄中的內(nèi)容干凈地導(dǎo)出到指定的目錄
例如你版本庫的svn訪問地址是http://10.30.11.12:8080/svn/project1,你想把這個(gè)版本庫下的/trunk/web文件夾發(fā)布到tomcat上,發(fā)布到tomcat的文件夾地址是d:/tomcat/opt/web,svn的管理員用戶名是abc,密碼是12345,那么這個(gè)鉤子程序應(yīng)該就是:
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 是說強(qiáng)制覆蓋d:/tomcat/opt/web這個(gè)文件夾,避免這個(gè)文件夾不為空時(shí)報(bào)錯(cuò)
--username abc --password 12345 是自動(dòng)將用戶名和密碼作為參數(shù)傳送進(jìn)去
--no-auth-cache 是說不緩存用戶名和密碼,這是出于安全考慮
2.update方式
修改hooks/post-commit
export LANG=en_US.UTF-8
SVN=/usr/bin/svn
STATIC_DIR=/web/root/wwwdeng ?#注意權(quán)限問題
$SVN update ?$STATIC_DIR --username deng --password 123456 --no-auth-cache
#必須加上--no-auth-cache不然會(huì)報(bào)錯(cuò)!!
默認(rèn)使用的shell類型是sh,最好改成bash,sh是bash的子集,centos中sh其實(shí)就是軟鏈接到bash
3.update和export比較
update會(huì)生成一個(gè)隱藏.svn文件夾,這個(gè)文件夾是我們不需要的,當(dāng)然了,如果整個(gè)發(fā)布的內(nèi)容很多的話,建議還是用update,而不用export,因?yàn)閡pdate只更新有變化的部分,而export將重新導(dǎo)出所有內(nèi)容,網(wǎng)絡(luò)消耗比update大。
三、svn實(shí)現(xiàn)遠(yuǎn)程機(jī)器自動(dòng)更新
首先實(shí)現(xiàn)A機(jī)器通過ssh無密碼登陸B(tài)機(jī)器, 修改A機(jī)器的post-commit文件
/usr/bin/ssh -l root ?192.168.127.183 "/bin/bash /home/www/svnup.sh"
然后在B機(jī)器的/home/www/目錄創(chuàng)建svnup.sh可執(zhí)行文件
/usr/bin/svn update /web/root/code
版本庫有提交請(qǐng)求的時(shí)候自動(dòng)會(huì)執(zhí)行post-commit腳本,post-commit腳本通過ssh讓遠(yuǎn)程機(jī)器執(zhí)行shell腳本自動(dòng)更新svn。
附注:
@echo off并不是DOS程序中的,
而是DOS批處理中的。
當(dāng)年的DOS,所有操作都用鍵盤命令來完成,
當(dāng)你每次都要輸入相同的命令時(shí),
可以把這么多命令存為一個(gè)批處理,
從此以后,只要運(yùn)行這個(gè)批處理,
就相當(dāng)于打了幾行、幾十行命令。
DOS在運(yùn)行批處理時(shí),
會(huì)依次執(zhí)行批處理中的每條命令,
并且會(huì)在顯示器上顯示,
如果你不想讓它們顯示,
可以加一個(gè)“echo off”
當(dāng)然,“echo off”也是命令,
它本身也會(huì)顯示,
如果連這條也不顯示,
就在前面加個(gè)“@”。
說了這么多,
我覺得非常詳細(xì)了,
可能你還是不懂。
沒有經(jīng)過DOS時(shí)代的人,
想法跟我們是有區(qū)別的。
SVN web前端
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。