2014-09-18 82 views
1

我在Subversion中有一個目錄結構。如何在所有標籤Subversion中限制訪問文件夾?

問題是我生成了很多標籤,現在需要限制它們內的訪問。

需要做一些通用的。

[Repo:/tags/**/folder] 
developers = 
Administrator = rw 

問題是,這是行不通的,開發人員繼續獲得許可。

有沒有辦法,或者我必須爲每個生成的標籤進行配置?

回答

3

Subversion不支持通配符進行基於路徑的授權。您需要在更高級別進行限制,或者分別指定路徑。

2

問題是我生成了很多標籤,現在需要限制它們內的訪問。

兩件事情:

  • 不要創造如此多的標籤。您始終可以使用版本號標籤,並且在許多網站中,這就是他們所做的。有人會說「我們是否對54220修訂版進行了代碼審查?」使用修訂號碼作爲標籤將使您無法創建如此多的標籤。如果您使用CI系統(例如Jenkins),則可以使用內部版本號作爲標籤,因爲它們指向特定的Subversion版本。

  • 你爲什麼試圖限制訪問標籤?突然有一些超級祕密信息在該標籤上,而之前並沒有出現該標籤的來源?您不能在svnaccess文件中使用通配符。

我認爲真正的問題是,你有太多的標籤,而用戶列出出來需要很長很長的時間。另外,如果您在/tags之下獲得了20,000個標籤,則很難找到您需要的標籤。在這種情況下,只需刪除不再需要的標籤即可。

但是,這不就是說我們會失去信息嗎?如果我發現我需要這個標籤怎麼辦?

Subversion不會永久刪除任何東西。如果你需要的話,你總能找回舊版本。假設您刪除了一箇舊標籤:

$ svn delete http://repo/svn/tags/2.4 

現在,您意識到您需要特定的版本來解決某些奇怪的原因。也許在舊版本中仍然有客戶。刪除後如何恢復它?

首先,找出哪些修改它在刪除:

$ svn log -v http://repo/svn/tags 

... 
---------------------------------------------------------------------- 
r32394 | alroc | 2003-01-17 22:56:19 -0600 (Fri, 17 Jan 2003) | 1 line 
    Changed Paths: 
     D /tags/2.4 
Deleted obsolete tag that's no longer needed 
---------------------------------------------------------------------- 

有!它在修訂版-r32394中被刪除。這意味着在之前的Subversion修訂版(32393)中,它仍然存在。讓我們來看看修訂版中的標籤:32393:

$ svn checkout -r32393 http://repo/svn/tags/[email protected] 

全部完成。我們有舊的代碼。如果你需要的標籤回你的資料庫,將它複製回/tags什麼:

$ svn copy -r32393 http://repo/svn/tags/[email protected] http://repo/svn/tags 

現在,/tags/2.4又回來了。


如果你真的不喜歡刪除標記,然後創建一個變量歸檔目錄裏,並移動過時的標籤了這一點。這樣,你不是刪除標籤,但是當你做svn ls http://repo/svn/tags時,你不會最終看到它。

這個問題是,如果你想做一個轉儲和加載(例如,你將項目分離到另一個回購),如果你不包含存檔標籤,svndumpfilter會全部搞砸。

最好的辦法不是首先創建問題。只爲發佈版本創建標籤,然後刪除標籤,如果您仍然覺得其中有太多標籤的話。