簡體   English   中英

Tortoise SVN預提交腳本允許包含已定義字符串的提交

[英]Tortoise SVN pre-commit script allow commit that contains defined string

創建一個預提交腳本,該腳本僅允許在文件Test.cfg中某處包含特定字符串的提交

目前,我的工作方式是查看所有提交的文件並阻止包含指定字符串的提交

REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook


$SVNLOOK diff -t "$TXN" "$REPOS" | \
   grep -i "Sting to search here" > /dev/null && { echo "String exists so block commit" 1>&2; exit 1; }

我需要的是上面的代碼完全相反:如果字符串存在,則允許提交;否則,阻止提交。 如果我可以指定要搜索的文件,這也很好,因為當前它搜索每個文件,並且某些提交可以包含1000個文件

請原諒,但是在您的情況下svnlook diff是丑陋的愚蠢方式。 在SVNBook中重新讀取svnlook子命令t opic ,注意svnlook tree / svnlook changed + svnlook cat

測試的完整業務邏輯必須是這樣的(我很懶於在此處編寫完整的bashism,這是您的職責)

如果 $FILENAME存在於事務中(我寧願使用svnlook tree --full-paths ...只是因為svnlook changed ...將需要附加| gawk {print $2}作為干凈的文件名) ,並且 $FILENAME包含$STRINGsvnlook cat "$FILENAME" | grep "STRING" ...做點什么

別忘了還要處理可能的邊緣情況:

  • $ FILENAME在事務中不存在,但在WC中以正確的$ STRING出現,但未根據svn狀態修改文件
  • 與上面相同,但進行了修改
  • 第1-2頁,但不允許$ STRING

由於上述注意事項,我建議通過測試掛鈎中的自定義修訂版屬性來探索|檢查替換文件+字符串的可能性(更短,更容易,更易於管理)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM