我想使用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没有我的问题一个内置的解决方案,但我不能肯定。 任何其他办法?
选项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
你可以像下面这样做:
svn diff file4 > tmp.patch
svn revert file4
svn ci -m "Commit 1"
svn patch tmp.patch
在这一点上的所有文件上犯下除了file4
Commiting所有除一个利用修改列表:
svn changelist my-list -R .
svn changelist --remove file4
svn ci -m "Commit 1" --changelist my-list
svn ci -m "Commit 2" file4
您可以通过使用脚本添加文件到您的方法一定程度上改善的变化列表和提交它。 您可以检查列表以确保它包含在提交之前正确的项目。
见svn changelist --help
和--changelist
在选项svn ci --help
。
虽然我敢肯定,你可以制定出一个解决方案就像你打算使用更复杂awk
命令行,因为我们谈论的只是一个文件,为什么不
- 将文件复制到一个临时位置
-
svn revert
修改后的文件以获得原始回来 - 提交整个库
- 修改后的文件复制回
操作简单,方便,快捷。
刚刚提交的文件过滤列表。
svn ci `ls | grep -v file4`