linuxsvn鉤子
A. 在lnmp下配置svn鉤子
在寫的時候首先要清楚幾點:
明白這些以後,應該就知道了,只需要在鉤子函數當中寫入,svn updae /home/wwwroot/default/,這一句就可以了,然後在/home/wwwroot/default/下手工檢出,保存賬號密碼。這樣就沒有任何的問題了
B. linux 下 svn 每次更新都提示被鎖,哪怕我svn cleanup之後,下次還這樣,而且,提示更新了但是線上沒變
從你貼的信息來看,是SVN伺服器端的post-commit這個鉤子報錯,從報錯內容分析,估計是post-commit這個鉤子調用了svn update去更新你們的線上測試環境,但update時發現html-dev文件夾被鎖,要求你去cleanup這個文件夾。
我估計你cleanup的不是伺服器上的那個文件夾,而是你自己客戶端的這個文件夾。去把伺服器上的那個文件夾cleanup一下,然後再從你的客戶端commit一次看看效果。
C. 如何通過svn鉤子腳本記錄提交人,提交庫,提交文件,提交時間
其實原理很簡單,就是利用svn的鉤子:post-commit,在提交過後想做什麼在這個腳本里就寫什麼。
假設我們的SVN目錄是:/home/svn
我們需要同步的web目錄是:/home/www/web(前提,這個web目錄也是從svn裡面檢出的)
D. SVN的POST-COMMIT鉤子怎麼用
利用SVN的POST-COMMIT鉤子自動部署代碼
我們在開發的過程將代碼提交到SVN後使用SVN的hook,通過post-commit腳本,在目
標文件夾根下執行svn update操作,將更新內容同步到測試環境,這樣開發調試非常方便。
post-commit內容:
--------------------------------------------
#!/bin/sh
#修改為服務編碼
export LANG=zh_CN.gb2312
#Set variable
REPOS="$1"
REV="$2"
SVN=/usr/bin/svn
WEB=/data/home/htdocs
LOG=/data/home/auto_svn.log
#update the code from the SVN
$SVN update $WEB --username username --password password --non-interactive
#......................
if [ $? == 0 ]
then
echo "$REPOS" "$REV" >> $LOG
echo `date` >> $LOG
echo "##############################" >> $LOG
fi
-----------------------------------------------
需要注意:
1、需要用export指定編碼。
2、需要指定svn全路徑。
3、代碼CO出來之後,可以進行post-commit腳本的測試了。因為svn的hooks執行的時候不帶有任何的環境變數,所以我們不能通過簡單的 ./post-commit 進行代碼的測試。必須要使用sudo su 等命令切換到svn或者apache伺服器運行用戶下,用下面的方法進行測試
Python代碼
env – ./post-commit
==================================================================================
#!/bin/bash
export LANG=en_US.UTF-8
src=/data/webroot/ask.j1.com ##local checkout directory###
deswebroot=/data/wwwroot/ask
remoteip=210.14.70.4
/usr/local/svn/bin/svn update $src --username webapp --password | grep -v -i update|awk '{print $2}'| while read chfile
do
if [ -e $chfile ];then
if [ -f $chfile ];then
#chown ftp.ftp $chfile
dfile=$(echo $chfile |sed "s:$src\/::") ###only file name###
rsync -avz -e ssh --exclude-from=/data/svndata/ask.j1.com/exclude-file $src/$dfile root@$remoteip:$deswebroot/$dfile
else
#chown ftp.ftp $chfile
dfile=$(echo $chfile |sed "s:$src\/::")
rsync -auvz -e ssh --exclude-from=/data/svndata/ask.j1.com/exclude-file $src/$dfile/ root@$remoteip:$deswebroot/$dfile/
fi
fi
done
E. linux配置的svn,上傳文件總是在root目錄下,怎麼改為我自定義的目錄
1、需要在伺服器上安裝svn伺服器端,啟動svn服務,並創建一個svn庫;
2、將當前的default文件夾變成新建的svn庫的工作副本(客戶端存放數據的文件夾),具體操作:將當前default文件夾下的內容import到新建的svn庫中,然後再清空default,然後再將svn庫中的內容checkout到default;
3、使用svn的post-commit鉤子(這個鉤子是在每次成功commit後被SVN伺服器自動調用的),編輯這個鉤子,內容就是svn update 文件夾default,這樣每次commit成功後就會自動更新default文件夾;
4、在你自己的電腦上checkout那個svn庫,然後你就可以從本地commit,然後伺服器端就自動更新default文件夾了。
F. svn鉤子:本地與伺服器的同步,即:本地提交之後,伺服器自動更新,請問可否實現如何實現
修改伺服器上hooks文件夾下的post-commit這個鉤子,在裡面加上svn update指令,這就可以實現你的需求了
post-commit這個鉤子就是在commit完成時自動執行的,如果伺服器是windows系統,那麼鉤子文件名就說post-commit.bat,內容就是一個批處理文件
G. linux下svn的鉤子怎麼配置
svn 的鉤子沒有使用過,既然這幾個編碼都不行你用下GB2312 或者你看下配置svn伺服器的編碼是不是正確的,有可能是 svn的伺服器編碼就是識別不了中文。
H. SVN錯誤是由於伺服器上的自定義鉤子函數處理導致
從報錯信息來看,是在SVN伺服器端設置了pre-commit這個鉤子,這個鉤子在每次發起commit時自動執行,在這個鉤子里檢查了你的SVN庫的佔用空間,對於佔用空間超過102400000的SVN庫就拒絕繼續提交
從這里看來,似乎你是租用了一個限制了容量的SVN伺服器,但現在你的容量已經滿了,估計你得聯系SVN服務提供商給你擴容,或者搬遷到其他SVN伺服器去了。
I. SVN鉤子程序如何寫,新手入門,完全不懂,從零開始
如果伺服器端是windows環境的話,那麼鉤子實際就是批處理文件(擴展名bat)
這些鉤子都存放在伺服器端的hooks文件夾內,比較常用的鉤子包括pre-commit.tmpl、post-commit.tmpl等,pre-commit.tmpl是當伺服器端接收到commit請求的時候自動調用這個鉤子,post-commit.tmpl是當完成commit操作的時候伺服器端自動調用這個鉤子,在windows環境下鉤子程序的擴展名要改成bat,而不能用tmpl
至於鉤子的內容,就看自己的發揮了,你需要熟悉DOS批處理文件的編寫技巧,常見的應用比如:當commit完成後,自動調用鉤子程序,通過svn update命令,將最新版本發布到伺服器上的測試環境中
J. linux svn hooks怎麼寫
post-commit.bat
echo off
set SVN_HOME="C:\Program Files (x86)\VisualSVN Server"
set SVN_ROOT=D:\Repositories
set UNIX_SVN_ROOT=D:\Repositories
set Log=D:\svnbackup\Log_files
set DELTA_BACKUP_SVN_ROOT=D:\svn_backup
set LOG_FILE=%1\backup.log
echo backup revision %2 >> %LOG_FILE%
echo %date%%time% %1 backup revision %2 >> %Log%\backup.log
for /r %SVN_ROOT% %%I in (.) do if D:\Repositories\%%~nI == %1 %SVN_ROOT%\%%~nI\hooks\deltaBackup %%~nI %2
goto end
:end