.. -*- coding: utf-8; -*-============= Subversion.=============.. contents:: :local:Installing Subversion=====================Under Cygwin:: $ apt-cyg install subversionCygwin's package can't be used with native Windows applications like IDE.Official home page provides own build (which require registration) and point toseveral trusted builds:https://subversion.apache.org/packages.html#windows Apache Subversion Binary Packages for Windows.https://sliksvn.com/download/ SlikSVN Windows command line client.Where palced config files?==========================The per-user configuration area currently contains three files twoconfiguration files ('config' and 'servers').``/etc/subversion`` Unix system wide configurations.``$HOME/.subversion`` Unix per-user configuration area.``%APPDATA%\Subversion`` Windows per-user configuration area.Coping repository.==================Making local repository copy:: $ svnadmin create $SVNROOT $ svnsync init file://$SVNROOT svn://$REMOTE $ svnsync synchronize file://$SVNROOTNote that you can't relocate working copy to new repository copy becase of:: $ svn relocate file://$SVNROOT svn: E195009: The repository at 'file:///home/user/devel/repo-copy' has uuid 'b064fe9f-b7ba-459e-afdf-3429ad89a318', but the WC has '11827c6b-1af5-4614-8a8b-dda7fb34cd94'Coping repository from SourceForge to GoogleCode:: $ svnsync init https://PROJ.googlecode.com/svn https://PROJ.svn.sourceforge.net/svnroot/PROJ $ svnsync --username NAME --password PASSWORD \ sync https://PROJ.googlecode.com/svn https://PROJ.svn.sourceforge.net/svnroot/PROJDisable interactive conflict resolution.========================================Write in ``$HOME/.subversion/config``:: [miscellany] interactive-conflicts = noCreating svn repo.==================:: $ mkdir -p /srv/svn $ svnadmin create /srv/svn/$repo $ svn co file:///srv/svn/$repo $repo $ cd /tmp/$repo $ mkdir trunk branches features tags $ svn add * $ svn st # check all OK $ svn ci -m "Init repo."For multi-project repo do follow:: $ mkdir -p /srv/svn $ svnadmin create /srv/svn/$repo $ svn co file:///srv/svn/$repo $repo $ cd /tmp/$repo $ for proj in $proj1 $proj2; do mkdir $proj/trunk $proj/branches $proj/features $proj/tags; done $ svn add * $ svn st # check all OK $ svn ci -m "Init repo."Run local svn server.=====================:: $ svnserve -d --pid-file=svnserve.pid --root=/srv/svn/proj # default port: 3690 $ svn ls svn://localhost # check all OK $ kill -lUndo bad commit.================:: $ emacs FILE ... $ svn ci -m "Introduce first bug." Sending trunk/FILE Transmitting file data . Committed revision 7. $ emacs FILE ... $ svn ci -m "Make a lot of good changes." ... Committed revision 8. ... $ emacs FILE ... $ svn ci -m "Introduce second bug." ... Committed revision 10. $ emacs FILE ... $ svn ci -m "Make a lot of good changes." ...Now you understand that revision 7 and 10 buggy. You decide revert changes:: $ svn merge -r 7:6 -r 10:9 FILE $ svn ci -m "Reverted revision 7 and 10."For one changeset revert you can use shortly syntax:: $ svn merge -c -7 -c -10 FILEAlso you can use ranges:: $ svn merge -r 10:6 FILEMerge branches.===============:: $ cd trunk $ svn mergeinfo --show-revs eligible ^/branches/feature $ svn merge ^/branches/feature $ svn ci -m 'Integrate feature X.'Fix EOL style.==============:: $ find . -type f -name '*.java' -exec svn propset svn:eol-style native {} ';' $ svn ci -m 'Fix svn:eol-style.'Note that this actions pollute history. For example every line of file withCR/LF (created on Windows on file without ``svn:eol-style native``) after thisactions would have new author in ``svn annotate``, and ``svn diff`` will showall on all change.