我在Subversion中有一個目錄結構。如何在所有標籤Subversion中限制訪問文件夾?
問題是我生成了很多標籤,現在需要限制它們內的訪問。
需要做一些通用的。
[Repo:/tags/**/folder]
developers =
Administrator = rw
問題是,這是行不通的,開發人員繼續獲得許可。
有沒有辦法,或者我必須爲每個生成的標籤進行配置?
我在Subversion中有一個目錄結構。如何在所有標籤Subversion中限制訪問文件夾?
問題是我生成了很多標籤,現在需要限制它們內的訪問。
需要做一些通用的。
[Repo:/tags/**/folder]
developers =
Administrator = rw
問題是,這是行不通的,開發人員繼續獲得許可。
有沒有辦法,或者我必須爲每個生成的標籤進行配置?
Subversion不支持通配符進行基於路徑的授權。您需要在更高級別進行限制,或者分別指定路徑。
問題是我生成了很多標籤,現在需要限制它們內的訪問。
兩件事情:
不要創造如此多的標籤。您始終可以使用版本號標籤,並且在許多網站中,這就是他們所做的。有人會說「我們是否對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
會全部搞砸。
最好的辦法不是首先創建問題。只爲發佈版本創建標籤,然後刪除標籤,如果您仍然覺得其中有太多標籤的話。