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 repository in single system user environment
  • post-commit hook produces error on svn commit but works when run on manually on command line
  • Steps needed to allow hgsubversion SVN clone to push back
  • How to change credentials for SVN repository in Eclipse?
  • SVN hooks not working
  • Drupal DATABASE deployment strategies?
  • Migration from SVN to GIT
  • Only trigger a build on commits to the trunk with svn
  • using git to clone a CodePlex project that uses SVN
  • Is VisualSVN Server generally viewed as a trustworthy SVN server?
  • Xcodebuild fails in jenkins with cocoapods
  • svn to git migration: incomplete history
  • 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.