2010-09-06 83 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

相关问题