使用Subversion通过命令行提交所有已修改/添加的文件,不包括提供的黑名单

时间:2012-10-30 16:25:56

标签: svn unix version-control commit

我正在调查一种通过命令行使用Subversion提交所有已修改/添加的文件的方法,排除提供的黑名单。这可能吗?

如果我有100个我想提交的文件,但穿插该列表的是我想要提交的七个文件。有没有办法说“提交所有文件,不包括/path/to/file1.php,/path/to/file2.php,/path/to/file3.php”等....

例如,我必须做类似的事情:

svn ci [list all files to commit in here] -m 'my commit message'

但是,还有更好的方法吗?我找不到任何有关它的文件。

3 个答案:

答案 0 :(得分:7)

没有选项可以在提交时动态忽略文件。但是,您可以采取两种方法:

  1. 使用changelists功能。这可以帮助您为执行要提交的文件创建过滤器,并仅提交这些文件。在开发人员计算机上创建更改列表时,您的过滤器不会影响常规存储库。例如,您可以使用以下命令将所有文件添加到更改列表:

    svn changelist to-commit *

    然后删除那些你想忽略的内容:

    svn changelist --remove /path/to/file1.php

  2. 只有svn add您正在处理的文件,一旦您开始编辑一个文件,就会一个接一个。在提交时将忽略尚未svn add到存储库的任何文件。当然,这样做的缺点是你将是唯一一个在他的机器上有这些文件的开发者。

答案 1 :(得分:5)

我有类似的情况,我只需要提交一堆修改过的文件中的某些文件。我必须更新/删除父项及其所有子项目(Maven)的依赖项并提交相应的更改。以下是我创建SVN更改列表的方法。

svn cl my-changelist $(svn st | grep '^M' | awk '{print $2}' | grep 'pom.xml')

svn commit -m "Updated dependencies" --changelist my-changelist

上面的第一个命令创建一个名为“my-changelist”的更改列表,并将名为“pom.xml”的所有修改文件添加到列表中。

第二个命令提交更改列表(列表中的所有文件针对单个修订号)。

答案 2 :(得分:0)

您可以使用Subversion svn:ignore property进行此操作。