2012-09-20 66 views
1

我想發現在顛覆中的文件上實現寫限制的最佳方式。顛覆限制訪問一個文件的增長版本

隨着時間的推移,這個文件會有很多標籤和分支。 一個特定的用戶(用戶構建)必須有權訪問此文件(在所有可能的分支或標籤中),而不是其他任何內容。

i.e., 
svn://app/trunk/changelog.txt 
svn://app/branches/1.1/changelog.txt 
svn://app/tags/1.2/changelog.txt 
etc.. 

正如你所看到的,這不是一組有限的文件,但是一個文件,這將是,隨着時間的推移,複製到不同的分支和標籤。但是,我們可以確保文件名在文件樹中是唯一的。

爲了實現這個限制,在用戶'build'上,所有名爲'changelog.txt'的文件, 我曾經想過要實現一個預先提交的腳本。

這是最好的方法嗎?

謝謝!

回答

0

要做到這一點,最簡單的方法是編寫一個預先提交的鉤子並將其放入/掛鉤到資源庫中。

Subversion將始終將存儲庫目錄和修訂號傳遞給您的鉤子。

Pseudobash例如:

REPO="$1" 
NO="$2" 
AUTHOR=`svnlook author $REPO -t "$NO"` 
FILES=`svnlook changed -t "$NO" "$REPO" | cut -b2-` 


if echo $AUTHOR | grep -q builduser; then 
    for FILE in $FILES; do 
     if ! echo $FILE | grep -q changelog.txt$; then 
      exit 1 
     fi 
    done 
fi 

你得到它的要點,我希望。

+0

注意:這不允許「builduser」對任何不以「endlog.txt」結尾的內容提交。 –

+0

感謝您的回答....我開始這樣的事情,但由於我得到一個錯誤,我感到氣餒... 「試圖調用'svnlook'時需要的庫參數」 。另一個stackoverflow文章命中,我實際上需要通過這個腳本參數(而我假設顛覆本身傳遞參數'回購,txn'這個腳本....紅皮書似乎沒有太多的信息.​​. (或者我看錯了部分?) – svaens

+0

tim - 那正是我之後的 – svaens