如何提交的所有文件,除了一个与SVN(How commit all files except one

2019-07-29 12:46发布

我想使用Subversion提交除此之外的所有修改过的文件。

因此,这里的情景:

$ svn st
M    file1
M    file2
M    file3
M    file4

我可以做这样的事情:

svn ci -m "Commit 1" file1 file2 file3
svn ci -m "Commit 2" file4

但是,当大量文件,我想简化我的工作:

svn ci -m "Commit 1" `svn st | awk '{print $2}' | grep -v file4`
svn ci -m "Commit 2" file4

该解决方案是非常脆弱的,因为这种情况下不工作:

$ svn st
M    file1
M    file2
D    file3
A +  file4

我认为SVN没有我的问题一个内置的解决方案,但我不能肯定。 任何其他办法?

Answer 1:

选项1,AWK:

svn ci -m "Commit 1" `svn st | awk '{print $NF}' | grep -v file4`
svn ci -m "Commit 2" file4

选项2,--targets:

svn ci -m "Commit 1" --targets filesToCommit.txt
svn ci -m "Commit 2" file4

选择3,--changelist:

svn changelist my-changelist file1 file2 file3
svn ci -m "Commit 1" --changelist my-changelist
svn ci -m "Commit 2" file4


Answer 2:

你可以像下面这样做:

svn diff file4 > tmp.patch
svn revert file4
svn ci -m "Commit 1"
svn patch tmp.patch

在这一点上的所有文件上犯下除了file4



Answer 3:

Commiting所有除一个利用修改列表:

svn changelist my-list -R .
svn changelist --remove file4
svn ci -m "Commit 1" --changelist my-list
svn ci -m "Commit 2" file4


Answer 4:

您可以通过使用脚本添加文件到您的方法一定程度上改善的变化列表和提交它。 您可以检查列表以确保它包含在提交之前正确的项目。

svn changelist --help--changelist在选项svn ci --help



Answer 5:

虽然我敢肯定,你可以制定出一个解决方案就像你打算使用更复杂awk命令行,因为我们谈论的只是一个文件,为什么不

  1. 将文件复制到一个临时位置
  2. svn revert修改后的文件以获得原始回来
  3. 提交整个库
  4. 修改后的文件复制回

操作简单,方便,快捷。



Answer 6:

刚刚提交的文件过滤列表。

svn ci `ls | grep -v file4`


文章来源: How commit all files except one with SVN