我使用svn add *將文件添加到svn,並添加了可以添加到忽略的配置文件。「svn add *」甚至會添加那些忽略的文件
[email protected]:/workspace/project$ svn propget svn:ignore
.sass-cache
config.js
什麼會導致問題?
我使用svn add *將文件添加到svn,並添加了可以添加到忽略的配置文件。「svn add *」甚至會添加那些忽略的文件
[email protected]:/workspace/project$ svn propget svn:ignore
.sass-cache
config.js
什麼會導致問題?
你有沒有嘗試提交config.js,看看它是否真的被忽略?我想如果你明確地告訴svn添加一個文件到版本控制,它會超過忽略。
嘗試提交不是順便找出順便說一句,如果它被添加它將被提交。 svn:忽略是爲了防止它被添加。 – 2010-11-05 14:52:55
在UNIX和Linux,如果你說
svn add *
然後外殼將擴大在該目錄中的所有文件和程序將看到一樣的,如果你鍵入
svn add file-a.txt file-b.txt file-c.txt
等等。這意味着Subversion命令認爲你已經明確列出了要添加的文件。在這種情況下,即使可能設置svn:ignore
屬性,它也會添加它。
從documentation of svn:ignore
(我的重點):
Subversion使用忽略模式來確定哪些文件不應該進入版本控制系統作爲較大的遞歸此外或導入操作的一部分。
我發現this question包含一個非常好的解決方案。由於答案實際上並沒有回答這個問題,我不認爲它是重複的。 簡單使用的Unix工具的功率(可與Cygwin的窗戶上):
svn status | grep '?' | sed 's/^.* /svn add /' | bash
超級老問題,但我遇到了這個問題剛纔我找到了解決方法這裏就不列出。阿德里安史密斯的回答是正確的。我認爲文檔和SVN本身在5年內看到了許多更新。以下是我在SVN docs
發現即使
svn:ignore
設置,如果在命令中使用shell通配符,你可能會遇到問題。在Subversion操作它們之前,Shell通配符被擴展爲明確的目標列表,因此運行svn SUBCOMMAND *
就像運行svn SUBCOMMAND file1 file2 file3 …
一樣。在svn add
命令的情況下,這具有類似於傳遞--no-ignore
選項的效果。因此,不要使用通配符,而應使用svn add --force .
對非版本事物進行批量調度以進行添加。明確的目標將確保當前目錄由於已處於版本控制之下而不被忽略,並且--force
選項將使Subversion抓取該目錄,添加未版本化的文件,同時仍遵循svn:ignore
屬性和global-ignores
運行時配置變量。如果您不希望完全遞歸爬網以添加內容,請務必在svn add
命令中提供--depth files
選項。
簡短版本使用svn add --force .
這對我來說非常合適。
使用此命令,而不是svn add --force *
:
svn add --force ./
在這種情況下SVN本身解析目錄下的所有文件,並且認爲被忽略的文件,但是當你使用*,你明確地告訴SVN添加的所有文件。
問題沒有得到最終解決,我說服了我的團隊切換到git。非常高興! – lyuba 2011-02-22 15:09:11