How commit all files except one with SVN

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

So here is the scenario:

  • Git Commands at a Glance
  • sh.exe": syntax error near unexpected token `('
  • How to clone GIT repository with private key
  • Calling SVN commands from a java program
  • How do I ignore files in Subversion?
  • launchctl git: command not found
  • $ 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 with 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 not sure. Any other approach?

  • Git remove root commit
  • How to get diff between all files inside 2 folders that are on the web?
  • What should be in a first commit?
  • Git: how to avoid repetitive committing with sub-sub-sub… Git -repos?
  • Can git list the tags that occur between two particular commits?
  • How do I preserve the timestamp if I split a commit via git rebase --interactive?
  • 6 Solutions collect form web for “How commit all files except one with SVN”

    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

    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

    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.

    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

    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.

    Just commit filtered list of files.

    svn ci `ls | grep -v file4`
    Git Baby is a git and github fan, let's start git clone.