簡體   English   中英

如何在SVN中使用預提交鈎子將目錄創建限制為中繼,標簽,分支?

[英]How to restrict directory creation to trunk, tags, branches with a pre-commit hook in SVN?

當前設置:

SVN實例中大約有7個存儲庫。 每個存儲庫都有多個應用程序,每個應用程序應有一個主干,標簽和分支目錄(別無其他)!

例如:

 REPOSITORY-1
  --> APP-1
      --> trunk
      --> tags
      --> branches
  --> APP-2
      --> trunk
      --> tags
      --> branches

隨着時間的流逝,我注意到開發人員偏離了此過程,創建了各種目錄。 例如:

 REPOSITORY-1
   --> APP-1
       --> src
       --> READ-ME.txt
   --> APP-2
       --> build
       --> random-file.java
       --> build.xml

有沒有一種方法可以使鈎子有一個模式,從而限制該模式以拒絕任何嘗試在應用程序下創建除主干,標記和分支以外的任何文件或目錄的提交? 預先感謝您的任何幫助!

額外信息:我們的SVN服務器在RedHat盒子上。

在預提交中添加以下腳本以限制目錄的創建:

REPOS="$1"
TXN="$2"
DIRCHAR="/"
SVNLOOK=/opt/csvn/bin/svnlook
echo $($SVNLOOK changed -t "$TXN" "$REPOS" | awk '{print $2}') > /tmp/files_$TXN.txt
sed -i 's/ /&\n/g' /tmp/files_$TXN.txt
while read line
do
LASTCHAR=`echo $line | awk '{print substr($0,length,1)}'`
if [ "$LASTCHAR" == "$DIRCHAR" ]; then
    echo -e "Cannot commit directory." 1>&2
    exit 1
fi
done < /tmp/files_$TXN.txt

在預提交的鈎子中執行svnlook dirs-changed REPOS_PATH並檢查輸出(| grep -v ...)

暫無
暫無

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

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