svn.rst
changeset 1513 2a6cd59d5863
child 1530 d41385c7d4cb
equal deleted inserted replaced
1512:db0fedd5662e 1513:2a6cd59d5863
       
     1 .. -*- coding: utf-8; -*-
       
     2 .. include:: HEADER.rst
       
     3 
       
     4 =============
       
     5  Subversion.
       
     6 =============
       
     7 .. contents::
       
     8 
       
     9 Where palced config files?
       
    10 ==========================
       
    11 
       
    12 The per-user configuration area currently contains three files two
       
    13 configuration files ('config' and 'servers').
       
    14 
       
    15   /etc/subversion
       
    16                 Unix system wide configurations.
       
    17   $HOME/.subversion
       
    18                 Unix per-user configuration area.
       
    19   %APPDATA%\Subversion
       
    20                 Windows per-user configuration area.
       
    21 
       
    22 Copy repo from SourceForge to GoogleCode.
       
    23 =========================================
       
    24 ::
       
    25 
       
    26   $ svnsync init https://PROJ.googlecode.com/svn https://PROJ.svn.sourceforge.net/svnroot/PROJ
       
    27   $ svnsync --username NAME --password PASSWORD \
       
    28                 sync https://PROJ.googlecode.com/svn https://PROJ.svn.sourceforge.net/svnroot/PROJ
       
    29 
       
    30 Disable interactive conflict resolution.
       
    31 ========================================
       
    32 
       
    33 Write in ``$HOME/.subversion/config``::
       
    34 
       
    35   [miscellany]
       
    36   interactive-conflicts = no
       
    37 
       
    38 Creating svn repo.
       
    39 ==================
       
    40 ::
       
    41 
       
    42   $ mkdir -p /srv/svn
       
    43   $ svnadmin create /srv/svn/$repo
       
    44   $ svn co file:///srv/svn/$repo $repo
       
    45   $ cd /tmp/$repo
       
    46   $ mkdir trunk branches features tags
       
    47   $ svn add *
       
    48   $ svn st      # check all OK
       
    49   $ svn ci -m "Init repo."
       
    50 
       
    51 For multi-project repo do follow::
       
    52 
       
    53   $ mkdir -p /srv/svn
       
    54   $ svnadmin create /srv/svn/$repo
       
    55   $ svn co file:///srv/svn/$repo $repo
       
    56   $ cd /tmp/$repo
       
    57   $ for proj in $proj1 $proj2; do mkdir $proj/trunk $proj/branches $proj/features $proj/tags; done
       
    58   $ svn add *
       
    59   $ svn st      # check all OK
       
    60   $ svn ci -m "Init repo."
       
    61 
       
    62 Run local svn server.
       
    63 =====================
       
    64 ::
       
    65 
       
    66   $ svnserve.exe -d --pid-file=svnserve.pid --root=/srv/svn/proj  # default port: 3690
       
    67   $ svn ls svn://localhost    # check all OK
       
    68   $ kill -l
       
    69 
       
    70 Undo bad commit.
       
    71 ================
       
    72 ::
       
    73 
       
    74   $ emacs FILE
       
    75   ...
       
    76   $ svn ci -m "Introduce first bug."
       
    77   Sending        trunk/FILE
       
    78   Transmitting file data .
       
    79   Committed revision 7.
       
    80   $ emacs FILE
       
    81   ...
       
    82   $ svn ci -m "Make a lot of good changes."
       
    83   ...
       
    84   Committed revision 8.
       
    85   ...
       
    86   $ emacs FILE
       
    87   ...
       
    88   $ svn ci -m "Introduce second bug."
       
    89   ...
       
    90   Committed revision 10.
       
    91   $ emacs FILE
       
    92   ...
       
    93   $ svn ci -m "Make a lot of good changes."
       
    94   ...
       
    95 
       
    96 Now you understand that revision 7 and 10 buggy. You decide revert changes::
       
    97 
       
    98   $ svn merge -r 7:6 -r 10:9 FILE
       
    99   $ svn ci -m "Reverted revision 7 and 10."
       
   100 
       
   101 For one changeset revert you can use shortly syntax::
       
   102 
       
   103   $ svn merge -c -7 -c -10 FILE
       
   104 
       
   105 Also you can use long diapason::
       
   106 
       
   107   $ svn merge -r 10:6 FILE
       
   108 
       
   109 Merge branches.
       
   110 ===============
       
   111 ::
       
   112 
       
   113   $ cd trunk
       
   114   $ svn mergeinfo --show-revs eligible ^/branches/feature
       
   115   $ svn merge ^/branches/feature
       
   116   $ svn ci -m 'Integrate feature X.'
       
   117