2010-09-06 81 views
15

我正在使用命令行SVN客戶端(出於速度原因),並有一個我希望忽略每次提交的文件更改列表(很像TortoiseSVN)。有沒有辦法提交除特定更改列表之外的所有文件,或者只是提交不在更改列表中的所有文件?如何只使用SVN提交未命名更改列表中的文件?

謝謝

回答

6

不可以。更改列表用於其他方式。只需提交包含在更改列表中的文件,不要將它們排除在提交之外。如果您想忽略某些文件,則應將其放入svn:ignore屬性中,但僅限於它們不受版本控制。

+1

問題是他們是,我已經在本地修改它們,以便它們僅向我顯示某些信息,但不希望其他人看到此信息。 – Ryall 2010-09-07 09:31:59

+9

我希望我能降低svn的這個「功能」。我目前在我的默認更改列表中有一大堆更改,並且正在尋找一種方法來避免檢查我不想在沒有按名稱簽入一百個文件的情況下提交的文件。 – 2011-03-28 16:36:06

+0

看起來像Subversion 1.8將有一個--changelist「」語法來定位不屬於任何變更列表的文件。 http://subversion.apache.org/docs/release-notes/1.8.html#cmdline – rlovtang 2012-11-04 12:36:22

5

我用下面的一行,假設你有一個變更命名TO_IGNORE,你把文件你不想犯:

svn st | sed -e "/^--- Changelist 'TO_IGNORE'/,/^--- Changelist/d" | grep '^[ADMR]' | awk '{print $2}' | xargs svn ci 

這依賴於一個事實,即「SVN ST」第一名單所有文件不在任何更改列表中,然後依次列出所有更改列表。

sed命令將刪除您要忽略的更改列表之間的所有行,直到下一個列表。

grep用於限制已提交,已刪除,已修改和已替換的文件。

awk從svn st輸出中提取文件名。

+1

這不完全適用於二進制文件 - awk命令打印出+符號而不是文件名。我將它改爲awk'{print $ NF}',這似乎很好用。 – 2013-09-13 19:41:09

相關問題