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
noresm:svntutorial [2013-12-10 14:13:12]
alfg
noresm:svntutorial [2014-04-14 08:38:00]
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 emacs, 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)