= Subversion = Subversion is an open source version control system https://subversion.apache.org/ == Update == {{{ svn update }}} == Commit == {{{ svn commit -m 'message' svn protected/* themes/* commit -m 'message' }}} == Add unversioned files == /usr/bin/svnaddunversioned.sh: {{{ #!/bin/sh svn status | grep ? | awk '//{print $2}' | xargs -i svn add {} }}} * chmod 755 /usr/bin/svnaddunversioned.sh == Branches == http://svnbook.red-bean.com/en/1.7/svn.branchmerge.using.html {{{ svn copy http://svn.example.com/repos/calc/trunk http://svn.example.com/repos/calc/branches/my-calc-branch -m "Creating a private branch of /calc/trunk." svn checkout http://svn.example.com/repos/calc/branches/my-calc-branch my-calc-branch }}} == Ignore one folder == http://stackoverflow.com/questions/11293539/equivalent-of-gitignore-file-with-subversion C# example: * cd ~/trunkx * svn propset svn:ignore "bin" . == Ignore several files folders == http://sdesmedt.wordpress.com/2006/12/10/how-to-make-subversion-ignore-files-and-folders/ svnignore.txt {{{ obj bin }}} Issue the command to ignore the folders listed inside the file * svn propset svn:ignore -F svnignore.txt . * svn status --no-ignore # see ignored files * svn propedit svn:ignore . # shows ignore list on editor * SVN_EDITOR=nano * svn propedit svn:ignore . # uses nano * svn proplist -v -R # shows all properties recursively Add to ~/.bashrc {{{ # export SVN_EDITOR=vi export SVN_EDITOR=nano }}} == Merge == * cd mergeDestination * svn merge --accept postpone originFolder -r1234:HEAD #postpone to resolve conflicts later * svn status | grep '^C ' # only show files with conflits * svn resolve --accept working filex #accepts that working copy of filex does not have conflicts * svn update --accept postpone # updates working copy and automatically postpones conflict resolution == Diff between branches == * svn diff --summarize http://example/svn/repository/branch1 http://example/svn/repository/branch2 == Commit with message(s) in file == * nano messages.txt * svn commit -F messages.txt --username userx == Files added or modified == {{{ svn status | grep "^A\|^M" }}} == Cherrypicking == * svn diff -c 1234 ~/calc/trunk # see diff for revision 1234 * svn merge -c 1234 ~/calc/trunk # merge revision 1234 == Solve conflict == * svn resolved path/file # mark as solved == Revert working copy == * svn revert --recursive .