如何提交除SVN之外的所有文件

时间:2012-05-24 14:00:56

标签: file svn command commit

除了使用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没有针对我的问题的内置解决方案,但我不确定。还有其他方法吗?

6 个答案:

答案 0 :(得分:23)

选项1,AWK:

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

选项2, - target:

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

答案 1 :(得分:14)

你可以这样做:

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

此时所有文件都被提交,file4

除外

答案 2 :(得分:5)

使用更改列表提交除一个以外的所有内容:

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

答案 3 :(得分:4)

您可以通过将带有脚本的文件添加到change list并提交来改进您的方法。您可以检查列表以确保在提交之前它包含正确的项目。

请参阅svn changelist --help中的--changelistsvn ci --help选项。

答案 4 :(得分:3)

虽然我确信你可以找到像你建议使用更复杂的awk命令行的解决方案,因为我们只讨论一个文件,为什么不呢?

  1. 将文件复制到临时位置
  2. svn revert修改后的文件以获取原始文件
  3. 提交整个存储库
  4. 将修改后的文件复制回来
  5. 简单,容易,快速。

答案 5 :(得分:0)

只提交已过滤的文件列表。

svn ci `ls | grep -v file4`