SVN Commit specific files

Is there any way to commit only a list of specific files (e.q. just one of the list of files that SVN wants to commit).

I’m working on MAC OS X under Terminal, without any UI.

  • `git` and `less` integration in OS X terminal: prevent writing output of `less` to tty
  • Initialize gitolite repository in existing folder
  • Error linking git to homebrew
  • How to copy in Terminal without mouse
  • Do I Need to Run Git Init Multiple Times for Each Project I'm Working on?
  • How to exit a git status list in terminal?
  • Git commit in terminal opens VIM, but can't get back to terminal
  • Weird message on .git commit with exclamation point
  • 7 Solutions collect form web for “SVN Commit specific files”

    Sure. Just list the files:

    $ svn ci -m "Fixed all those horrible crashes" foo bar baz graphics/logo.png
    

    I’m not aware of a way to tell it to ignore a certain set of files. Of course, if the files you do want to commit are easily listed by the shell, you can use that:

    $ svn ci -m "No longer sets printer on fire" printer-driver/*.c
    

    You can also have the svn command read the list of files to commit from a file:

    $ svn ci -m "Now works" --targets fix4711.txt
    

    You basically put the files you want to commit on the command line

    svn ci file1 file2 dir1/file3
    

    Use changelists. The advantage over specifying files is that you can visualize and confirm everything you wanted is actually included before you commit.

    $ svn changelist fix-issue-237 foo.c 
    Path 'foo.c' is now a member of changelist 'fix-issue-237'.
    

    That done, svn now keeps things separate for you. This helps when you’re juggling multiple changes

    $ svn status
    A       bar.c
    A       baz.c
    
    --- Changelist 'fix-issue-237':
    A       foo.c
    

    Finally, tell it to commit what you wanted changed.

    $ svn commit --changelist fix-issue-237 -m "Issue 237"
    

    Due to my subversion state, I had to get creative. svn st showed M,A and ~ statuses. I only wanted M and A so…

    svn st | grep ^[A\|M] | cut -d' ' -f8- > targets.txt
    

    This command says find all the lines output by svn st that start with M or A, cut using space delimiter, then get colums 8 to the end. Dump that into targets.txt and overwrite.

    Then modify targets.txt to prune the file list further. Then run below to commit:

    svn ci -m "My commit message" --targets targets.txt
    

    Probably not the most common use case, but hopefully it helps someone.

    Besides listing the files explicitly as shown by unwind and Wienczny, you can setup change lists and checkin these. These allow you to manage disjunct sets of changes to the same working copy.

    You can read about them in the online version of the excellent SVN book.

    try this script..

    #!/bin/bash
    NULL="_"
    for f in `svn st|grep -v ^\?|sed s/.\ *//`; 
         do LIST="${LIST} $f $NULL on"; 
    done
    dialog --checklist "Select files to commit" 30 60 30 $LIST 2>/tmp/svnlist.txt
    svn ci `cat /tmp/svnlist.txt|sed 's/"//g'`
    

    I make a (sub)folder named “hide”, move the file I don’t want committed to there.
    Then do my commit, ignoring complaint about the missing file.
    Then move the hidden file from hide back to ./

    I know of no downside to this tactic.

    Git Baby is a git and github fan, let's start git clone.