我正在调查一种通过命令行使用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'
但是,还有更好的方法吗?我找不到任何有关它的文件。
答案 0 :(得分:7)
没有选项可以在提交时动态忽略文件。但是,您可以采取两种方法:
使用changelists功能。这可以帮助您为执行要提交的文件创建过滤器,并仅提交这些文件。在开发人员计算机上创建更改列表时,您的过滤器不会影响常规存储库。例如,您可以使用以下命令将所有文件添加到更改列表:
svn changelist to-commit *
然后删除那些你想忽略的内容:
svn changelist --remove /path/to/file1.php
只有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进行此操作。