Reputation: 13140
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?
Upvotes: 23
Views: 11877
Reputation: 51
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
Upvotes: 5
Reputation: 9994
Just commit filtered list of files.
svn ci `ls | grep -v file4`
Upvotes: 0
Reputation: 13140
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
Upvotes: 23
Reputation: 35845
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
Upvotes: 14
Reputation: 16615
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
.
Upvotes: 4
Reputation: 81724
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
svn revert
the modified file to get the original backSimple, easy, fast.
Upvotes: 4