除了使用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没有针对我的问题的内置解决方案,但我不确定。还有其他方法吗?
答案 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
中的--changelist
和svn ci --help
选项。
答案 4 :(得分:3)
虽然我确信你可以找到像你建议使用更复杂的awk
命令行的解决方案,因为我们只讨论一个文件,为什么不呢?
svn revert
修改后的文件以获取原始文件简单,容易,快速。
答案 5 :(得分:0)
只提交已过滤的文件列表。
svn ci `ls | grep -v file4`