svn 的使用(二)

這篇主要介紹下 svn 鉤子的使用,svn 的安裝以及配置等能夠查看 svn 的使用(一)

我們能夠在svn創建的倉庫目錄下看到 hooks 目錄。


這里面就存放這個各種svn操作同一時候會運行的腳本文件。


(你能夠自己查看每一個腳本文件,文件開始都有英文的介紹包含功能,參數以及返回值。
?? 我翻譯的不好所以就採用網上其他資料的解釋吧 - -! )
1.start-commit? 開始提交的通知
輸入參數:傳遞給你鉤子程序的命令行參數,順序例如以下:
??? 1. 版本號庫路徑
??? 2. 已經認證過的提交的username
它在提交事務產生前已執行,通經常使用來判定一個用戶是否有權提交。返回0表示認證通過。


2.pre-commit 在提交結束之前提醒
輸入參數:傳遞給你鉤子程序的命令行參數。順序是:
???? 1. 版本號庫路徑
???? 2. 提交事務的名稱
在事務完畢提交之前執行,通常這個鉤子是用來保護由于內容或位置(比如。你要求全部到一個特定分支的提交必須包含一個bug追蹤的ticket號,或者是 要求日志信息不為空)而不同意的提交。

無錯誤返回0。


?
3.post-commit? 成功提交的通知
傳遞給你鉤子程序的命令行參數。順序為:
???? 1. 版本號庫路徑
???? 2. 提交創建的修訂版本
它在事務完畢后執行,創建一個新的修訂版本號。無錯誤程序正常退出。
?
4.pre-revprop-change 版本號屬性改動
由于Subversion的修訂版本號屬性不是版本號化的,對這類屬性的改動(比如提交日志屬性svn:log)將會永久覆蓋曾經的屬性值。由于數據在此可能 丟失。所以Subversion提供了這樣的鉤子(及與之相應的post-revprop-change),因此版本號庫管理員可用一些外部方法記錄變化。

作 為對丟失未版本號化屬性數據的防范。Subversionclient不能遠程改動修訂版本號屬性,除非為你的版本號庫實現這個鉤子。
5.post-revprop-change 版本號屬性改動
這個鉤子與pre-revprop-change相應。

其實,由于多疑的原因,僅僅有存在pre-revprop-change時這個腳本才會執行。當這 兩個鉤子都存在時。post-revprop-change在修訂版本號屬性被改變之后執行,通經常使用來發送包括新屬性的email。版本號庫傳遞四個參數給該 鉤子:到版本號庫的路徑,屬性存在的修訂版本號。經過校驗的產生變化的username,和屬性自身的名字。

使用這些鉤子最簡單的方法就是
拷貝某個腳本,去掉.tmpl擴展名,然后自己定義鉤子的內容,確定腳本是可執行的。


PS:一定要確保鉤子腳本是可運行的

并且名稱就是去掉.tmpl后的名字。


另外要注意要使用SVN的鉤子一定要開設權限,并且是要用執行SVN的賬號進行執行這些鉤子
(假設不是能夠執行的會提示錯誤,錯誤代碼為255。其它錯誤能夠自行嘗試。。)
我想要做的就是 用戶commit 后server(測試環境的)自己主動同步 即做update操作
這里我的webserver和svnserver 在一臺。(假設是遠程的webserver能夠在
先使用ssh命令登入

那么我們須要使用的鉤子是post-commit
我們能夠使用命令
cp post-commit.tmpl post-commit.tmpl.bak
mv post-commit.tmpl post-commit
(別忘了 chmod 設置為可運行的)
chmod 755 post-commit
vi post-commit
這里我們能夠先做一個測試
即在文件最后加上一行
/bin/echo "commit" >> /tmp/commit.out
然后運行commit 操作 看一下 commit.out 是不是多了 commit這個單詞
那么編寫我們的腳本在post-commit 文件最后加入命令
/usr/bin/svn update /www/project --username m0sh1 --password m0sh1
PS:這里要 加上絕對路徑 , update 后面的是checkout 下來的項目路徑
假設提示錯誤 svn: Can't convert string from native encoding to 'UTF-8'
則須要加入一行命令
export lang = en_US.UTF-8
此時去工作文件夾看下是不是更新了。。

再舉個樣例,有非常多開發者為了快,往往忽略掉提交日志信息(也可能無意為之)。那么我們能夠在pre-commit腳本
中做出必須提交日志信息的限制:
REPOS="$1"
TXN="$2"

# Make sure that the log message contains some text.
SVNLOOK=/usr/bin/svnlook
$SVNLOOK log -t "$TXN" "$REPOS" | \
?? grep "[a-zA-Z0-9]" > /dev/null || exit 1

# Check that the author of this commit has the rights to perform
# the commit on the files and directories being modified.
commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1

# All checks passed, so allow the commit.
exit 0
(上面內容直接就是pre-commit腳本中的內容,那么僅僅須要給pre-commit可運行的權限就能夠了。)
之后我們就能夠以此,類推出其他想要實現的功能了。














本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281717.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281717.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281717.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java原子類場景,CAS你知道嗎?原子類AtomicInteger的ABA問題談談?,原子共面問題...

CAS你知道嗎?原子類AtomicInteger的ABA問題談談?,原子共面問題(1)CAS是什么?比較并交換舉例1, CAS產生場景代碼?importjava.util.concurrent.atomic.AtomicInteger;public classCASDemo {public static voidmain(Stri…

ABP Vnext 批量導入用戶,解決密碼加密問題

因為ABP Vnext在密碼加密方面使用的鹽加密的方式&#xff0c;底層的加密方式讓人摸不著頭腦。如何需要批量導入用戶的時候&#xff0c;這個密碼問題就很頭疼。假設&#xff0c;已經有一個集合List<entity>的用戶數據了&#xff0c;此時進行循環取出一條用戶信息&#xff…

深入分析JavaWeb Item7 -- HttpServletResponse詳解

Web服務器收到客戶端的http請求&#xff0c;會針對每一次請求&#xff0c;分別創建一個用于代表請求的request對象、和代表響應的response對象。request和response對象即然代表請求和響應&#xff0c;那我們要獲取客戶機提交過來的數據&#xff0c;只需要找request對象就行了。…

Spring.net學習記錄

Spring.Net功能&#xff1a; 1、控制反轉&#xff08;IOC&#xff09;&#xff1a;就是創建對象的權利由開發人員自己控制New&#xff0c;轉到了有容器來控制 2、依賴注入&#xff08;DI&#xff09;&#xff1a;就是通過容器來創建對象的時候&#xff0c;在對象初始化時給一些…

uAdmin the Golang Web framework

2019獨角獸企業重金招聘Python工程師標準>>> A little over two years ago, I started looking for a web framework like Django for Golang but to my surprise, I couldn’t find anything that even does the basic. My requirements were simple: A standard w…

ABP Vnext 數據庫表字段存在IsDeleted如何物理刪除HardDeleteAsync

ABP Vnext在寫表實體會繼承 xxxEntity : FullAuditedAggregateRoot<Guid>此時這個聚合根會包含一個 IsDeleted字段屬性&#xff0c;一旦繼承了這個軟刪除字段&#xff0c;你在倉儲對象調用 await _xxxxRepository.DeleteAsync(x > x.Id > 0)時的時候&#xff0c;…

詳解當當網的分布式作業框架elastic-job

詳解當當網的分布式作業框架elastic-job

java條件觸發,條件事件觸發Anylogic

所以首先event.restart()函數僅在事件具有觸發類型時才適用&#xff1a;timeout和mode&#xff1a;user control&#xff0c;否則你的event.restart()函數什么也不做......其次&#xff0c;你需要在有條件的事件上調用你的函數&#xff0c;但是在停車的那一刻......你可以在car…

攻城不易守城更難,匯付天下該如何守住打下來的“江山”?

伴隨著相關監管政策的實施&#xff0c;第三方支付市場儼然已經迎來了“罰單潮”。根據不完全統計&#xff0c;截至2018年10月8日&#xff0c;央行已開出109張支付罰單&#xff0c;國付寶等多家支付機構罰金甚至高達千萬以上&#xff0c;今年累計處罰的金額已超過2億元。照此速度…

1024技術論壇 | C#與.NET技術新發展

主辦方簡介上海維宏電子科技股份有限公司&#xff08;維宏股份&#xff0c;股票代碼&#xff1a;300508&#xff09;&#xff0c;是一家專業提供運動控制系統解決方案的高科技企業&#xff0c;公司擁有雄厚的研發力量和高素質的服務隊伍&#xff0c;我們以快捷的速度&#xff0…

Oracle Code登錄北京 代碼盛宴邀你high起來|免費報名

盛夏北京&#xff0c;將迎來 Oracle Code 北京站活動。作為貫穿全年、橫跨全球的 20 場活動中的一場&#xff0c;北京站汲取各地 Oracle Code 精華&#xff0c;結合國內開發者社區現狀和需求&#xff0c;呈現一場代碼盛宴。 來自 Oracle Code、OTN 及 AppsLap 的大咖們將齊聚北…

簡單的四則運算

// 20163536 楊宇航 獎勵原創 上課未完成原因&#xff1a; 哎&#xff0c;在上那節課時候&#xff0c;我們正在準備程序設計大賽&#xff0c;因為我們團隊當中只有我的電腦有數據庫&#xff0c;所有我只好將我的電腦貢獻給團隊了&#xff0c;不然在10分鐘內完成應該不成問題&a…

導出導入數據庫

一、導出用 mysqldump 備份數據庫 1mysqldump -u用戶 -p密碼 數據庫名 > &#xff08;目錄&#xff09;導出文件名如&#xff1a;mysqldump -uroot -p123 dbname > /root/test.sql 回車就直接完成備份。如果只需要建表指令&#xff0c;則命令如下&#xff1a; shell> …

matlab randn 范圍,請問randn產生的數據在什么范圍內變化

產生均值為0&#xff0c;方差 σ^2 1&#xff0c;標準差σ 1的正態分布的隨機數或矩陣的函數。Example:產生一個隨機分布的指定均值和方差的矩陣&#xff1a;將randn產生的結果乘以標準差&#xff0c;然后加上期望均值即可。例如&#xff0c;產生均值為0.6&#xff0c;方差為…

C#開發串口通信實例及串口基礎

一、串口通信簡介串行接口&#xff08;串口&#xff09;是一種可以將接受來自CPU的并行數據字符轉換為連續的串行數據流發送出去&#xff0c;同時可將接受的串行數據流轉換為并行的數據字符供給CPU的器件。一般完成這種功能的電路&#xff0c;我們稱為串行接口電路。串口通信&a…

我在SharePoint行業的從業經歷(一)

&#xfeff;&#xfeff;&#xfeff;&#xfeff;大約10年前&#xff0c;我剛剛畢業的時候&#xff0c;找到了一個試用的機會。那個時候的我對軟件根本沒有概念。編程學的也非常少。僅僅是在系里學過一點VB和C&#xff0c;以為軟件就是像QQ或者游戲之類的。我從來沒想到會認識…

Linux的學習思路

自學嵌入式確實不大現實&#xff08;當然也不是說沒有這個可能&#xff09;&#xff0c;畢竟嵌入式難度也是比較大的。 嵌入式的應用主要是幾個方向&#xff0c; 一是系統開發&#xff1a;側重開發環境搭建、內核原理、交叉編譯等&#xff1b; 二是嵌入式Linux應用開發&#xf…

tinycore php,tinycore中文支持

這兩天在弄tinycore&#xff0c;想用它來搭個小系統出來。下載最新的CorePlus-current.iso 4.5.2&#xff0c;用開源的usb的安裝工具core2usb-1.6.exe將它安裝到u盤&#xff0c;然后接上臺式機上&#xff0c;開機從u盤啟動&#xff0c;一切順利。好&#xff0c;開始搞起&#…

javascript權威指南--學習筆記

-一、JavaScript基本數據類型 1、數字--Number類 2、字符串--String類 3、布爾--Boolean類 4、函數Function 5、對象Object 6、數組Array 7、null 8、undefined 備注&#xff1a; 當一個未定義的值用于布爾環境&#xff0c;他就會轉為false&#xff0c;用于數字環境就會轉為…

支持 dotnet 6 的 dnSpy 神器版本

官方的 dnSpy 在 2021 時&#xff0c;由于某些吃瓜的原因 wtfsck 將 dnSpy 給 Archived 掉&#xff0c;在大佬被哄好之前&#xff0c;預計是不再更新。最新官方版本對 dotnet 6 的支持較弱&#xff0c;對于很多 dotnet 6 應用都無法成功調試&#xff0c;附加調試上去將會讓應用…