Open main menu

Changes

Git branch creation

4,871 bytes added, 11:51, 27 October 2017
Transclusion of the {{historical svn}} template.
{{historical svn}}
__TOC__
 
== Links ==
http://www.nmr-relax.com/manual/Branches.html
=== Check out the branch ===
See also [[Git_installation | Git installation]] for tips and tricks.
<source lang="bash">
# Catch which revision initiated the branch.
git svn clone -r $REV svn+ssh://$RUSER@svn.gna.org/svn/relax/branches/$BRANCH $BRANCH
# Copy .gitignore from relax_trunk and add relax_commit standard message.
cd $BRACHBRANCHgit config --add user.email $RUSER@nmr-relax.comcp ../relax_trunk/.gitignore .cp ../relax_trunk/relax_commit.txt .git config --add commit.template "relax_commit.txt"# And buildscons# Make an executable to this.ln -s $PWD/relax $HOME/bin/relax_${BRANCH} #Now check out the svn branch, which we will keep to perform certain svn commands.cd ..svn co svn+ssh://$RUSER@svn.gna.org/svn/relax/branches/$BRANCH ${BRANCH}_svn</source> For info about the commit template, see [[Format_commit_logs | Format commit logs]]. == Keeping the branch up to date using svnmerge.py ==As you develop your branch, changes will be occurring simultaneously within the main line. These changes should be merged into your branch on a regular basis to avoid large incompatible changes from forming between the two branches. To simplify this process, the svnmerge.py script located at [http://www.orcaware.com/svn/wiki/Svnmerge.py http://www.orcaware.com/svn/wiki/Svnmerge.py] can be used. It is best to download the trunk version from that page, unless that version is non-functional. <source lang="bash">cd ${BRANCH}_svn# Get the svnmerge scriptcurl http://svn.apache.org/repos/asf/subversion/trunk/contrib/client-side/svnmerge/svnmerge.py -o $HOME/bin/svnmerge.pychmod +x $HOME/bin/svnmerge.py  #Once you have this script, the merging from the main line to your private branch must be initialised by typing, from within the checked out copy of your branchsvnmerge.py init #This then needs to be committed using the automatically generated logsvn ci -F svnmerge-commit-message.txtrm svnmerge-commit-message.txt # See log svn log -l 5 # To keep up to date, simply typesvnmerge.py availsvnmerge.py merge</source>  If conflicts have occurred please refer to the Subversion book at [http://svnbook.red-bean.com/ http://svnbook.red-bean.com/] for information on how to resolve the problem. Otherwise, or once fixed, the main line revisions merged into your branch can be committed using the automatically generated log file: <source lang="bash">svn ci -F svnmerge-commit-message.txt</source> === BUG: svnmerge: no integration info available ===If you receive a message like: '''svnmerge: no integration info available'''.<br>Then you have probably run '''svnmerge.py''' before updating.Solution, run: '''svn revert .''' <source lang='bash'>> svnmerge.py avail23310-23312> svnmerge.py mergeproperty 'svnmerge-integrated' deleted from '.'. svnmerge: command execution failed (exit code: 1)svn --non-interactive merge --force -r 23309:23312 svn+ssh://XXXX@svn.gna.org/svn/relax/trunk .svn: E195020: Cannot merge into mixed-revision working copy [23304:23305]; try updating first > svn upUpdating '.':At revision 23312. > svnmerge.py mergesvnmerge: no integration info available > svn status M .? svnmerge-commit-message.txt > svn diffIndex: .===================================================================--- . (revision 23312)+++ . (working copy) Property changes on: .___________________________________________________________________Deleted: svnmerge-integrated## -1 +0,0 ##-/trunk:1-23304\ No newline at end of property
> svn revert .
Reverted '.'
 
> svnmerge.py avail
23310-23312
 
> svnmerge.py merge
property 'svnmerge-integrated' deleted from '.'.
 
--- Merging r23310 through r23312 into '.':
U test_suite/system_tests/relax_disp.py
U test_suite/system_tests/scripts/relax_disp/cpmg_synthetic.py
 
property 'svnmerge-integrated' set on '.'
</source>
 
== Merging the branch back into the main line ==
Once you have completed the modifications desired for your branch, all changes which have occurred in the main line have been merged using svnmerge.py, and the changes have been approved for merging back into the main line - then your branch can be merged. First check out a copy of the main line,
 
<source lang="bash">
svn co svn+ssh://$RUSER@svn.gna.org/svn/relax/trunk relax-trunk
# or update a previously checked out version,
svn up
</source>
 
Then svnmerge.py can be utilised again. First initialise the merging process by typing, from within the checked out copy of the main line,
<source lang="bash">
svnmerge.py init svn+ssh://$RUSER@svn.gna.org/svn/relax/branches/$BRANCH
#Then commit the change
svn ci -F svnmerge-commit-message.txt
</source>
 
To merge the branch and commit the changes, type
<source lang="bash">
svnmerge.py merge -bidirectional
svn ci -F svnmerge-commit-message.txt
</source>
 
Finally the merge properties need to be removed
<source lang="bash">
svnmerge.py uninit -S svn+ssh://$RUSER@svn.gna.org/svn/relax/branches/$BRANCH
# the changes committed
svn ci -F svnmerge-commit-message.txt
# and your private branch deleted
svn rm svn+ssh://$RUSER@svn.gna.org/svn/relax/branches/$BRANCH
</source>
== See also ==
[[Category:git]]
Trusted, Bureaucrats
4,228

edits