How commit all files except one with SVN

无人久伴 提交于 2019-12-03 11:53:04

问题


I want to commit all modified files except one using Subversion.

So here is the scenario:

$ svn st
M    file1
M    file2
M    file3
M    file4

I can do something like this:

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

But when a large number of files, I'm trying to simplify my work:

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

This solution is very fragile, because this scenario not works:

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

I think that SVN does not have a built-in solution for my problem, but I'm not sure. Any other approach?


回答1:


Option 1, AWK:

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

Option 2, --targets:

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

Option 3, --changelist:

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



回答2:


You can do it like this:

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

At this point all files are commited except file4




回答3:


Commiting all except one using changelists:

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



回答4:


You can somewhat improve on your approach by adding your files with a script to a change list and committing it. You can inspect the list to make sure that it contains the right items before committing.

See svn changelist --help and --changelist option in svn ci --help.




回答5:


Although I'm sure you could work out a solution like you propose using a more complex awk command line, since we're talking about just one file, why not

  1. Copy the file to a temporary location
  2. svn revert the modified file to get the original back
  3. Commit the whole repository
  4. Copy the modified file back

Simple, easy, fast.




回答6:


Just commit filtered list of files.

svn ci `ls | grep -v file4`


来源:https://stackoverflow.com/questions/10738994/how-commit-all-files-except-one-with-svn

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!