在做版本的時候,需要svn做一些自動化的事情,比如提交前自動更新;提交一些檔案後關聯著提交另一些。所以需要寫一點自動化指令碼。
官方說法:
鉤子是通過版本庫事件觸發,例如新版本的建立或乙個未版本化屬性的修改。一些鉤子(叫做「pre hooks」)在事件發生前執行,可以用來報告發生了什麼以及防止它發生。還有一些鉤子(「post hooks」)在版本庫事件之後發生,只是用來報告。每個鉤子能夠獲得事件的足夠資訊,例如提出的(或完成的)版本庫修改細節,還有觸發事件的使用者名稱
以web目錄:/usr/share/nginx/html 、svn版本庫目錄:/var/svn/project 為例:
在 /var/svn/project/hooks下新建 post-commit 檔案
[root@vm_0_4_centos hooks]# vim post-commit
並加入以下內容
#!/bin/sh
epos="$1"
rev="$2"
export lang=en_us.utf-8
svn=/usr/bin/svn #這裡配置的是svn安裝bin目錄下的svn檔案
web=/usr/share/nginx/html #要更新的目錄
$svn update --username svn庫使用者名稱 --password svn庫密碼 $web
儲存後,給post-commit加執行的許可權
[root@vm_0_4_centos hooks]# chmod a+x post-commit
基本到這就已經ok了
/usr/bin/svn update –usename svn庫使用者名稱 –password svn庫密碼 /usr/share/nginx/html
如果能正常update就已經ok了
我的因為web目錄下之前就已經有檔案了,會和庫中的版本衝突
下面是解決方法
如果是提示檔案衝突:
svn revert –depth=infinity 有衝突的檔名
如果提示目錄有衝突:
svn revert –depth=infinity 目錄名
拓展:
svn有9種鉤子,上面只是其中一種
Lnmp環境下搭建SVN
第一步 安裝svn yum install subversion 第二步 在 usr local下建立svn資料夾並賦予777 chmod r 777 usr local svn 第三步 建立版本庫 svnadmin create usr local svn project 其中project等資料...
LNMP環境下搭建SVN服務
最近自己買了個伺服器,試著在上面搭建了lnmp環境,因為以前在本地用mamp pro搭建過lamp環境,所以基本上還算是輕車熟路,第一次搭建lnmp,使用的是一鍵安裝,過程是順利的,後來在使用過程中遇到了配置檔案誤改的問題,又改不回來了,所以又重灌了一次,這次重灌很順利,不過在搭建svn的時候,反反...
mysql 鉤子 svn鉤子的使用案例
svn鉤子的使用案例 我在這一篇博文中提到,svn鉤子指令碼是svn非常實用重要的功能,在工作中,會經常需要用到svn鉤子指令碼以實現除了svn自帶功能之外的附加功能,那麼這一篇博文,我們就舉例演示一下,svn鉤子是用來做什麼的,以及怎麼用。svn鉤子的功能 svn鉤子是乙個指令碼,它的具體寫法和l...