2009-01-06 88 views
10

今天我遇到了一個問題,有人意外地提交了一個proj.user文件到SVN倉庫。當我來更新時,顯然會引起問題。有什麼辦法阻止文件提交到SVN倉庫

它讓我想知道是否有任何方法可以阻止某些文件擴展名被提交到存儲庫。

我意識到有一個忽略列表,但據我所知,這仍然依賴於人添加文件忽略列表。理想情況下,我想集中控制這一點,以便存儲庫而不是個人擁有控制權。

這可能嗎?

回答

16

是,一般有兩種方法。要麼創建提交掛鉤(這可能不是你想要做的),或者更簡單的,將svn:ignore屬性添加到你的目錄中。由於屬性與項目一起維護,這會影響每個人。例如,忽略*.user文件,你可以添加這對他們會出現在目錄:

svn propset svn:ignore '*.user' . 

然後提交你的變化如常。從現在起,該目錄中的* .user文件將不再參與svn命令,例如stat,update,commit等等。但是,您必須將該屬性添加到需要忽略字段的每個目錄。它不會自動在您的項目樹上進行遞歸操作。如果出於任何原因,您確實想要更新忽略的文件,則可以將--no-ignores標誌傳遞給該命令。

+0

這實際上是否會避免顯式地'$ svn add``ed? – matpie 2009-01-06 18:14:56

+0

不,如果您專門添加它,它將被添加,但更新將被忽略。 – 2009-01-06 20:08:16

0

在SVN中,您手動將文件添加到存儲庫。因此,有一個文件擴展名塊列表是沒有意義的。你可以使用svn ignore來忽略特定的文件,但是你也可以手動添加和刪除存儲庫中的文件。

又見How do you remove a file from being version controlled without deleting the file in subversion?

+0

svn實際上並沒有忽略命令......所以svn ignore只會導致錯誤。 – 2009-01-06 12:32:35

+1

svn:忽略不是一個命令,它是一個屬性:http://svnbook.red-bean.com/en/1.1/ch07s02.html – 2009-01-06 12:38:43

3

你可能會添加一個subversion pre-commit hook來防止他人提交。這具有服務器端的優勢,而不是每個客戶端的設置。

+1

Subversion屬性也可以通過項目進行管理,因此它們可以在修改以及在服務器上進行維護的情況下受益:)並且不需要編碼。 – 2009-01-06 12:41:21

0

除了設置ignore property之外,還可以使用「global-ignore」運行時配置選項全局執行此操作。按照鏈接瞭解更多信息。我認爲全球忽視功能就是您可能需要的功能。

2

對此:

請問這實際上阻止它明確$ SVN add'ed是 ? - sirlancelot 1月6日09時18:14

不,如果你特別添加它,它 將被添加,但更新會 被忽略。 - 傑森·科科2009年1月6日在 20:08

我相信你不能這樣玩svn:忽略道具。根據svnbook 1。5手冊:

「Subversion的用於忽略 文件模式支持僅延伸到添加未版本控制 文件和目錄版本 控制的 一次性過程一旦對象是下 Subversion的控制中,忽略 模式機制不再適用於 它。換句話說,不要指望 顛覆以避免犯 你已經到了一個版本文件所做的只是 因爲該文件的名稱相匹配的 忽略模式,顛覆總是 變化注意到它的所有版本化對象。「

2

我不得不使用

svn propset svn:ignore '*.user' . 

爲了使用上述接受的答案。