noresm:svntutorial

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
noresm:svntutorial [2013-12-10 14:13:12]
alfg
noresm:svntutorial [2014-04-14 08:37:48]
alfg [PART 7: Verify that you are happy with merge]
Line 64: Line 64:
 CHECK OUT TRUNK FOR ONE DEVELOPER CHECK OUT TRUNK FOR ONE DEVELOPER
 <file> <file>
-alfg@pc4400:~$svn checkout file://$HOME/svnrepos/testproject/trunk trunkĀ +alfg@pc4400:~/twoDevelopers$svn checkout file://$HOME/svnrepos/testproject/trunk trunkĀ 
-alfg@pc4400:~$cd trunk+alfg@pc4400:~/twoDevelopers$cd trunk
 </file> </file>
  
Line 169: Line 169:
 ==> You should now have working merge tools. This will make merging EASY!! ==> You should now have working merge tools. This will make merging EASY!!
  
 +
 +=====PART 6: Go back to merge operation and use merge tool =====
 +
 +<file>
 +alfg@pc4400:~/twoDevelopers/aBranch$ svn merge file://$HOME/svnrepos/testproject/trunk
 +</file>
 +
 +type "s" to "show all options" and "l" to "launch external tool"
 +
 +==> emacs or vi should be invoked in "merge mode"
 +
 +//The vi script// shows (your, ancestor, mine) on top and output below. Move around in the different windows with "ctrl+w+arrow". When in the upper windows you can use "[c" and "]p"] go move to previous/next diffs.
 +
 +//the emacs script// shows (yours, mine) on top and merged version (including common ancestor) below
 +
 +All editing should happen in the lowest part of the editor window
 +
 +When done editing, save the file and quit the editor
 +
 +When back in the merge-dialog, press "r" (resolved)
 +
 +
 +===== PART 7: Verify that you are happy with merge =====
 +
 +<file>
 +alfg@pc4400:~/twoDevelopers/aBranch$ svn diff
 +</file>
 +
 +Note how it is difficult to understand the diff ==> we need to configure a diff tool!
 +
 +To configure a nice diff-viewer, you need to replace a line in your $HOME/.subversion/config file like this:  
 +
 +<file>
 +diff-cmd = /home/alfg/bin/diffwrap.sh 
 +</file>
 +
 +The script "diffwrap.sh" has be created somewhere on your PC. The script is only TWO LINES long!! (Make sure it is executable with "chmod +x scriptname")
 +
 +The content of this script (only two lines) for emacs users can be: 
 +
 +<file>
 +#!/bin/sh
 +emacs --eval "(ediff-files "\"$6"\" \""$7"\" )"
 +</file>
 +
 +(In emcas, use | (pipeline) key in the "ediff" dialog to toggle between vertical/horizontal diff view)
 +
 +The content of this script for vi users can be
 +
 +<file>
 +#!/bin/sh
 +vimdiff $6 $7
 +</file>
 +
 +Visually verify the diff again using the diff viewer
 +<file>
 +alfg@pc4400:~/twoDevelopers/aBranch$ svn diff
 +</file>
 +
 +When you are happy with the diffs, do 
 +
 +<file>
 +alfg@pc4400:~/twoDevelopers/aBranch$ svn commit -m "Successfully branched trunk to my branch"
 +</file>
 +
 +==> DONE
 +
 +===== PART 8: Merge back to trunk =====
 +
 +After the conflict is resolved and committed from branch, go back to trunk
 +
 +<file>
 +alfg@pc4400:~/twoDevelopers/trunk$ svn update
 +alfg@pc4400:~/twoDevelopers/trunk$ svn merge --reintegrate file://$HOME/svnrepos/testproject/branches/aBranch
 +</file>
 +
 +AT THIS POINT YOU WANT TO PASS THE TESTS (IF THIS WAS NORESM)
 +
 +<file>
 +alfg@pc4400:~/twoDevelopers/trunk$ svn commit -m "merged aBranch back to trunk"
 +</file>
 +
 +==> Observe that you don't get any conflict this time. Svn knows that the conflict is already resolved.
 +
 +
 +===== Other important points =====
 +
 +  * The merge is not completed until you commit!
 +  * You have to know if you are doing a reintegrate merge or a merge from trunk (see noresm wiki)
 +  * You can undo the merge with alfg@pc4400:~/twoDevelopers/aBranch$ svn revert -R .
 +  * When you have done a "reintegrate merge", consider  your branch dead! (svn delete branchUrl -m "removed reintegrated branch aBranch")
 +  * If you insist on keeping reintegrated branches alive, there are two options:
 +      - Start using another version control system
 +      - Make sure you have latest svn version (version >= 1.7), Then read (and understand)  http://svnbook.red-bean.com/en/1.7/svn.branchmerge.advanced.html#svn.branchmerge.advanced.reintegratetwice
 +  
  • noresm/svntutorial.txt
  • Last modified: 2022-05-31 09:29:32
  • (external edit)