2012-02-28 92 views
4

當我排除來自SVN的文件與svn:ignore然後另一個人試圖提交排除的文件,svn阻止他?或者他必須在他的電腦中執行相同的命令?svn:忽略本地到計算機?

+1

如果您提交屬性所在的文件夾,則當其他人svn更新文件在他的WC中也將被忽略。 – prodigitalson 2012-02-28 20:19:00

回答

4

當我從SVN中排除文件與svn:忽略,然後另一個人嘗試提交排除的文件,svn阻止他?

不,SVN:忽略只定義文件的模式(S),其中,如果未經跟蹤和存在內WC,將從svn statussvn add *

輸出進行過濾,他必須做他的電腦裏有同樣的命令?

的svn:忽略是版本文件夾的屬性,存儲的,與其他版本的數據,在儲存庫。如果您提交此數據並將其他WC更新到本版本(或更高版本),則其WC中的文件夾將具有相同的svn:ignore屬性設置

1

ignore屬性不會阻止任何人添加文件。它只能防止在執行諸如「svn status」之類的操作時將與該模式匹配的文件列表列爲「未知」。

但是,它必須提交到存檔以供所有用戶看到。

5

想象一下,如果你有一堆Java文件(*.java)。這些被編譯成*.class文件。已編譯的*.class文件不應存儲在Subversion中。

現在,想象一下誰創造了一堆新*.java文件,編譯了他們是滿意的結果,並沒有這樣的開發商:

$ svn add * 

在這種情況下,Subversion會歡快地添加在所有的編譯*.class文件。不是你想要的...

svn:ignore屬性在您要忽略文件的目錄上。如果並且只有當文件不在Subversion中時,如果文件匹配文件上的svn:ignore全局模式,並且用戶使用通配符執行svn statussvn add,則文件不會顯示。

使用svn status命令,這些文件不會在輸出行的開頭顯示?標記。如果用戶試圖添加通配符,Subversion將忽略這些文件。

在上述情況下,如果開發人員這樣做:

$ svn add * 

svn:ignore屬性將阻止*.class文件被添加。

但是,如果一個用戶專門增加了一個被忽略的文件:

$ SVN添加讓Foo.class

然後,Subversion會不會忽略該文件。而且,一旦將其添加到存儲庫中,如果文件被更改或刪除,Subversion將報告它。

svn:ignore屬性對簽出該目錄版本的所有用戶都可見。這是防止意外添加文件的好方法,但它不能阻止某些人實際添加文件。

我有一個pre-commit hook可以讓事情更進一步。有了它,您可以阻止用戶將特定文件添加到存儲庫中。您也可以強制用戶在創建新目錄時設置svn:ignore