| 
  
   Size: 8808 
  
  Comment:  
 | 
  
   Size: 8839 
  
  Comment:  
 | 
| Deletions are marked like this. | Additions are marked like this. | 
| Line 148: | Line 148: | 
| svnserve -d -r /tmp/svnserver | 
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:
- 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 .
 
Mark script as executable
- svn propset svn:executable on xyz.sh
 
Search logs by username
- svn log --search username
 
Get folder without content
- svn ls
 - svn up "folderx" -N
 
svnserve
The svnserve program is a lightweight server, capable of speaking to clients over TCP/IP using a custom, stateful protocol. Listens port 3690 http://svnbook.red-bean.com/en/1.7/svn.serverconfig.svnserve.html
- mkdir -p /tmp/svnserver
 - svnserve -d -r /tmp/svnserver
 - svnadmin create --fs-type fsfs /tmp/svnserver/testrepo
 - cd /tmp
 - svn checkout svn://localhost/testrepo
 - cd testrepo
 
/tmp/svnserver/test/conf/passwd
[users] harry = 1234 sally = 1234
/tmp/svnserver/test/conf/svnserve.conf
[general] password-db = passwd [sasl] use-sasl = false
   1 #!/bin/sh
   2 mkdir -p /tmp/svnserver/testrepo
   3 svnserve -d -r /tmp/svnserver
   4 svnadmin create --fs-type fsfs /tmp/svnserver/testrepo
   5 cd /tmp/svnserver/testrepo
   6 echo -e "[users]\nharry = 1234\nsally = 1234\n" > conf/passwd
   7 echo -e "[general]\npassword-db = passwd\n[sasl]\nuse-sasl = false\n" > conf/svnserve.conf
   8 BASE_SVN_REPO=svn://localhost/testrepo
   9 CREDENTIALS="--username harry --password 1234"
  10 cd /tmp
  11 svn checkout $BASE_SVN_REPO
  12 cd testrepo 
  13 mkdir branches tag trunk
  14 svn add branches/ tag/ trunk/
  15 svn status
  16 svn commit -m "Created branches tag trunk" $CREDENTIALS
  17 # Committed revision 1.
  18 svn up .
  19 BASE=/tmp/testrepo
  20 cd $BASE/trunk
  21 echo -e "trunk 1" > dummy.txt
  22 svn add dummy.txt
  23 svn commit -m "Created dummy1.txt in trunk" $CREDENTIALS
  24 #Committed revision 2
  25 svn up .
  26 svn copy $BASE_SVN_REPO/trunk $BASE_SVN_REPO/branches/feature_branch1 $CREDENTIALS  -m "created feature branch1"
  27 # Committed revision 3.
  28 cd $BASE
  29 svn up .
  30 cd $BASE/branches/feature_branch1
  31 echo -e "fb1 1" >> dummy.txt
  32 svn commit -m "Changed dummy1.txt in feature_branch1" $CREDENTIALS
  33 #Committed revision 4
  34 svn up .
  35 cd $BASE/trunk
  36 echo -e "\ntrunk 2\n" >> dummy.txt 
  37 svn commit -m "Changed trunk" $CREDENTIALS
  38 svn up .
  39 # Committed revision 5
  40 # Synch from trunk to feature_branch1
  41 cd $BASE/branches/feature_branch1/
  42 svn up .
  43 svn merge $BASE_SVN_REPO/trunk $CREDENTIALS --accept postpone 
  44 # Conflict discovered in file 'dummy.txt'. postpone
  45 vi dummy.txt
  46 svn resolve --accept working dummy.txt
  47 svn status
  48 svn commit -m "synch merge from trunk to feature_branch1" $CREDENTIALS
  49 svn up .
  50 # Committed revision 6.
  51 # create feature branch2 from feature branch1
  52 svn copy $BASE_SVN_REPO/branches/feature_branch1 $BASE_SVN_REPO/branches/feature_branch2 $CREDENTIALS -m "created feature branch2 from feature branch1"
  53 # Committed revision 7.
  54 svn up .
  55 cd $BASE
  56 svn up .
  57 cd $BASE/branches/feature_branch2/
  58 echo -e "\nfb2 1\n" >> dummy.txt
  59 svn commit -m "changed feature branch2" $CREDENTIALS
  60 svn up . 
  61 # Committed revision 8.
  62 cd $BASE/branches/feature_branch1
  63 echo -e "\nfb1 2\n" >> dummy.txt 
  64 svn commit -m "changed feature branch1" $CREDENTIALS
  65 svn up .
  66 # Committed revision 9
  67 # synch feat_branch2 from feat_branch1
  68 cd $BASE/branches/feature_branch2/
  69 svn up .
  70 svn merge $BASE_SVN_REPO/branches/feature_branch1 $CREDENTIALS --accept postpone 
  71 # Conflict discovered in file 'dummy.txt'. postpone
  72 vi dummy.txt
  73 svn resolve --accept working dummy.txt
  74 svn status
  75 svn commit -m "synch merge from feature_branch1 to feature_branch2" $CREDENTIALS
  76 svn up .
  77 # Committed revision 10.
  78 cd $BASE/trunk
  79 echo -e "\ntrunk 3\n" >> dummy.txt 
  80 svn commit -m "Changed trunk" $CREDENTIALS
  81 svn up .
  82 # Committed revision 11.
  83 # synch fb1 with trunk
  84 cd $BASE/branches/feature_branch1
  85 svn merge $BASE_SVN_REPO/trunk $CREDENTIALS --accept postpone 
  86 vi dummy.txt # solve conflicts
  87 svn resolve --accept working dummy.txt
  88 svn commit -m "synch merge from parent trunk to feature branch1" $CREDENTIALS
  89 # Committed revision 12.
  90 svn up .
  91 cd $BASE/trunk/
  92 svn up .
  93 svn merge $BASE_SVN_REPO/branches/feature_branch1 $CREDENTIALS --accept postpone 
  94 svn status
  95 svn commit -m "got changes into trunk from feature branch1 (reintegrate)" $CREDENTIALS
  96 # Committed revision 13.
  97 # terminate feature branch 1
  98 svn rm $BASE_SVN_REPO/branches/feature_branch1 $CREDENTIALS -m "removed feature branch1"
  99 # Committed revision 14.
 100 cd $BASE
 101 svn up .
 102 # add new entry to trunk
 103 cd $BASE/trunk
 104 echo -e "\ntrunk 4\n" >> dummy.txt 
 105 svn commit -m "changed trunk" $CREDENTIALS
 106 #Committed revision 15
 107 svn up . 
 108 
 109 svn diff $BASE_SVN_REPO/trunk@13 $BASE_SVN_REPO/trunk@15  $CREDENTIALS 
 110 # added trunk 4
 111 svn diff $BASE_SVN_REPO/trunk@3 $BASE_SVN_REPO/trunk@13  $CREDENTIALS 
 112 # added fb1 1 , trunk 2 , fb1 2 , trunk 3
 113 # the synch from trunk to feature branch 2 should have ....
 114 # trunk1, trunk2, trunk3, trunk4, fb2 1, fb1 1, fb1 2, 7 elements
 115 # merge from integrate revision to head of trunk
 116 cd $BASE/branches/feat_branch2
 117 svn merge $BASE_SVN_REPO/trunk@13 $BASE_SVN_REPO/trunk@HEAD $CREDENTIALS --accept postpone 
 118 # has all the elements
 119 
 120 svn merge $BASE_SVN_REPO/trunk@15 $BASE_SVN_REPO/trunk@15 $CREDENTIALS --accept postpone
 121 # only has 5 elements
 122 
 123 # from fb1 creation to reintegration 13
 124 svn merge $BASE_SVN_REPO/trunk@3 $BASE_SVN_REPO/trunk@13 $CREDENTIALS --accept postpone 
 125 # has six elements, trunk 4 was added in r15
 126 
Show svn diff side by side
Revert commited file to previous revision
#1234 previous revision svn merge -c -1234 test.py svn commit svn up .
