Open main menu

Changes

Git svn

6,984 bytes added, 21:20, 21 October 2020
m
= Background ={{historical svn}}__TOC__
== Windows =relax branches at github =You should install [[http://www.tfnico.com/presentations/git-and-subversion Based on these postsmsysgit]] and on [http://trac.parrot.org/parrot/wiki/git-svn-tutorial this recommended post]windows, and [http://john.albin.net/git/convert-subversion-to-git also this postdo the commands.]
You should install [[msysgit]], == The relax_trunk ==Go to do the checkouthttps://github.com/nmr-relax/relax_trunk <br>Click '''Fork'''.
Now add this as a private remote, by setting the remote name '''hub'''.<source lang="bash"> # Windows md set relax_trunk="C:\WinPython27\relax\relax_trunk" set GIT_USER_NAME="GIT_USER_NAME" md %relax_trunk% cd C:\%relax_trunk% # Linux bash ; relax_trunk=$HOME/relax/relax_trunk GIT_USER_NAME="GIT_USER_NAME" mkdir -p ${relax_trunk} cd $relax_trunk
To clone from a revision number, use ''' git init # Windows git remote add origin https://%GIT_USER_NAME%@github.com/nmr-r NR'''relax/relax_trunk. This will tell which revision to start taking history fromgit git remote add hub https://%GIT_USER_NAME%@github. If you want to include all of the history, just leave that option off, but it will take a very long time, and you really don't need all of itcom/%GIT_USER_NAME%/relax_trunk.gitThe older a revision you choose, the longer it will take to import # Linux git remote add origin https://${GIT_USER_NAME}@github.com/nmr-relax/relax_trunk. But you will not be able to "git blame" past the earliest revision you import git remote add hub https://${GIT_USER_NAME}@github.com/${GIT_USER_NAME}/relax_trunk.git
You also need an [[Authors #authorsOr if you have setup a SSH key in github, and tested with: ssh -T git@github.com git remote set-url origin git@github.com:nmr-relax/relax_trunk.txt | authorsgit git remote set-url hub git@github.txt]] file, to correctly convert the metadatacom:${GIT_USER_NAME}/relax_trunk. git
git svn clone http://svn.gna.org/svn/relax/trunk --no-metadata -A authors.txtfetch origin git svn clone checkout -r 20000:HEAD http://svn.gna.org/svn/relax/trunk --no-metadata -A authors.txt  git svn clone http:track origin//svn.gna.org/svn/relax/branches/relax_disp --no-metadata -A authors.txtmaster git svn clone -r 20000:HEAD http://svn.gna.org/svn/relax/branches/relax_disp --no-metadata -A authors.txtfetch hub
#Build
cd trunk
scons
cd ..
cd relax_disp
scons
For futurev updates to the SVN revision HEAD, you now need to do a git svn rebase, which is very similar to: svn up
git svn rebase
Check branch information
git branch -a
=== Setup remotes to github ======= For branch trunk ==== ## Now we add the user scripts repo cd C:\relax\trunk# Windows git remote add origin clone https://%GIT_USER_NAME%@github.com/nmr-relax/trunkrelax_scripts.git # If you are a member of the organization, with writing permissions, then do:Linux git remote add origin clone https://${GIT_USER_NAME}@github.com/nmr-relax/trunkrelax_scripts.git # See the info git remote -v git remote show origin</source>
Now go Go to github.com at https://github.com/nmr-relax/trunk and click relax_scripts <br>Click '''Fork'''.<brsource lang="bash">Now cd relax_scripts # Windows git remote add this as a private remote, by setting the remote name '''hub'''https://%GIT_USER_NAME%@github.com/%GIT_USER_NAME%/relax_scripts.git # Linux git remote add hub https://${GIT_USER_NAME}@github.com/${GIT_USER_NAME}/trunkrelax_scripts.git</source>
==== For branch The relax_disp ==== cd C:\relax\relax_disp git remote add origin Go to https://github.com/nmr-relax/relax_disp.git # If you are a member of the organization, with writing permissions, then do:<br> git remote add origin https://GIT_USER_NAME@github.com/nmr-relax/relax_dispClick '''Fork'''.git # See the info git remote -v git remote show origin
Now go to github.com at https://github.com/nmr-relax/relax_disp and click '''Fork'''.<br>
Now add this as a private remote, by setting the remote name '''hub'''.
<source lang="bash"> # Windows set relax_disp="C:\WinPython27\relax\relax_disp" set GIT_USER_NAME="GIT_USER_NAME" md %relax_disp% cd %relax_disp% # Linux bash ; relax_disp=$HOME/relax/relax_disp GIT_USER_NAME="GIT_USER_NAME" mkdir -p ${relax_disp} cd $relax_disp  git init # Windows git remote add origin https://%GIT_USER_NAME%@github.com/nmr-relax/relax_disp.git git remote add hub https://%GIT_USER_NAME%@github.com/%GIT_USER_NAME%/relax_disp.git # Linux git remote add origin https://${GIT_USER_NAME}@github.com/nmr-relax/relax_disp.git git remote add hub https://${GIT_USER_NAME}@github.com/${GIT_USER_NAME}/relax_disp.git
=== git operations ===
Now fetch changes from remote hub
git fetch origin
git checkout --track origin/master
git fetch hub
git branch -a
We need to make a setting [http://stackoverflow.com/questions/948354/git-push-current-branch how we push branches.] #Build git config push.default simplescons
First get ## Now we add the latest changes from user scripts repo # Windows git clone https://%GIT_USER_NAME%@github.com/nmr-relax/relax_scripts.git # Linux git clone https://${GIT_USER_NAME}@github.com/nmr-relax/relax_scripts.git</source> Go to https://github.com/nmr-relax/relax_scripts <br>Click '''Fork'''.<source lang="bash"> cd relax_scripts # Windows git remoteadd hub https://%GIT_USER_NAME%@github.com/%GIT_USER_NAME%/relax_scripts.git # Linux git pull remote add hub https://${GIT_USER_NAME}@github.com/${GIT_USER_NAME}/relax_scripts.git</source> = How the import to github was done =[http://www.tfnico.com/presentations/git-and-subversion Based on these posts] and on [http://trac.parrot.org/parrot/wiki/git-svn-tutorial this recommended post], and [http://john.albin.net/git/convert-subversion-to-git also this post.] You need an [[Authors#authors.txt | authors.txt]] file, to correctly convert the metadata.<source lang="bash"> bash ; relax=$HOME/backup/relax ; relax_trunk=${relax}/relax_trunk ; relax_disp=${relax}/relax_disp ; GIT_USER_NAME="GIT_USER_NAME" mkdir -p ${relax_trunk} ${relax_disp} ;  git svn clone http://svn.gna.org/svn/relax/trunk --no-metadata -A authors.txt ${relax_trunk} ; cp authors.txt ${relax_trunk} ; cat ${relax_trunk}/.git/config cp ${relax_trunk}/.git/config ${relax_trunk}/.git/config_bck awk '{gsub(a,b);print}' a=".*authorsfile =.*" b=" authorsfile = ${relax_trunk}/authors.txt" ${relax_trunk}/.git/config_bck > ${relax_trunk}/.git/config cat ${relax_trunk}/.git/config  git svn clone http://svn.gna.org/svn/relax/branches/relax_disp --no-metadata -A authors.txt ${relax_disp} ; cp authors.txt ${relax_disp} ; cat ${relax_disp}/.git/config cp ${relax_disp}/.git/config ${relax_disp}/.git/config_bck awk '{gsub(a,b);print}' a=".*authorsfile =.*" b=" authorsfile = ${relax_disp}/authors.txt" ${relax_disp}/.git/config_bck > ${relax_disp}/.git/config cat ${relax_disp}/.git/config</source> == Setup remotes to github ===== For branch trunk ===<source lang="bash"> cd $relax_trunk git config --add user.name "Your Name" git config --add user.email you@example.com git config --add core.editor "nano" git config --add github.user ${GIT_USER_NAME} # If you are a member of the organization, with writing permissions, then do: git remote add origin https://${GIT_USER_NAME}@github.com/nmr-relax/relax_trunk.git</source>Now go to github.com at https://github.com/organizations/nmr-relax click '''Repositories -> New'''.<br>Call it '''relax_trunk'''. We want to preserve history , so do not '''Initialize this repository with a README''' or anything like, README or .gitignore. <br> Then send svn branch master of to github<source lang="bash"> git push -u origin master</source> === For branch relax_disp ===<source lang="bash"> cd $relax_disp git config --add user.name "Your Name" git config --add user.email you@example.com git config --add core.editor "nano" git config --add github.user ${GIT_USER_NAME} # If you are a member of the organization, with writing permissions, then do: git remote add origin https://${GIT_USER_NAME}@github.com/nmr-relax/relax_disp.git log</source> Now go to github.com at https://github.com/organizations/nmr-relax click '''Repositories -> New'''.<br>Call it '''relax_disp'''. We want to preserve history , so do not '''Initialize this repository with a README''' or anything like, README or .gitignore. <br>
Then send svn branch master of to github
<source lang="bash"> git push hub -u origin master</source> == git operations ==Get new changes from svn repository and push to github git co master git svn fetch git rebase --onto remotes/git-svn git push origin master == Saving credentials ==See [http://stackoverflow.com/questions/14629107/how-to-input-password-to-git-pull-command this post] echo "machine github.com login ${GIT_USER_NAME} password SECRET" >> ~/.netrc chmod 0600 ~/.netrc ls -la ~/.netrc cat ~/.netrc == Setup cronjob ==Checking each 15 minutes<source lang="bash">crontab -e # Add*/15 * * * * $HOME/backup/nmrrelax_sync_svn_git.sh</source> == Sync script from SVN to Github ==<source lang="bash">#!/bin/bash# -*- coding: UTF-8 -*-# Script for syncing SVN to git automatically using cron.# # exec testexec_test () {[ $? -eq 0 ] && echo "-- Command successfully executed" || echo "-- Command failed; exit 1"} # Filenamesurlhost="http://www.mail-archive.com/relax-commits@gna.org/"mydate=`date '+%Y%m%d_%H%M'`mytime=`date '+%T %Y%m%d'` # Set paths to do the mail syncbackupfolder="${HOME}/backup/nmrrelax_svn_git_sync"backupfolderurl="${backupfolder}/commit_url_dumps"dumpdate="commits_url.txt"curfile="currev.txt"prevfile="prevrev.txt"branchfile="curbranch.txt"mkdir -p $backupfolder $backupfolderurl # Set paths to GITrelax=$HOME/backup/relaxrelax_trunk=${relax}/relax_trunkrelax_disp=${relax}/relax_disp # Loggingexec 3>&1 4>&2trap 'exec 2>&4 1>&3' 0 1 2 3exec 1>>${backupfolder}/nmrrelax_svn_git_sync.log 2>&1# Everything below will go to the log file dump_base () {echo "###########################"echo "STARTING on: $mytime"echo "Dumping URL webpage revisions..."#lftp -e "open ftp://${dbuser}:${dbpwd}@${dbhost} && mirror --no-perms --exclude-glob backup_scripts/ --exclude-glob cache/ --exclude-glob LocalSettings.php --parallel=10 && bye"lynx -dump $urlhost > ${backupfolderurl}/${dumpdate}currev=`grep -E '^ \* \[5\]r' ${backupfolderurl}/${dumpdate} | awk '{print $2}' | cut -c5-`branch=`grep -E '^ \* \[5\]r' -A 5 ${backupfolderurl}/${dumpdate} | grep -m 1 -e '\/branches\/relax_disp\|\/trunk'` # Echo revision to logecho "Current revision is: $currev"# Write to current revision fileecho "$currev" > ${backupfolder}/${curfile} # Write to current branch fileecho "$branch" > ${backupfolder}/${branchfile} # Make string replacements in branch file## Replace empty spaces with nothingsed -i 's/ \+//g' ${backupfolder}/${branchfile}## Replace with relax trunksed -i "s/.*\/trunk.*/trunk/g" ${backupfolder}/${branchfile}## Replace with relax dispsed -i "s/.*\/branches\/relax_disp.*/relax_disp/g" ${backupfolder}/${branchfile}# Set current branch from the filecurbranch=`cat ${backupfolder}/${branchfile}` # Echo branch to logecho "This is branch: $curbranch"  # If previous revision does not exist, then create it.if [ ! -e ${backupfolder}/${prevfile} ] ; thentouch ${backupfolder}/${prevfile}fi} do_git_sync () {echo "Checking if need for for new commits ..."DIFF=`diff -q ${backupfolder}/${curfile} ${backupfolder}/${prevfile}`echo -e "Difference between current revision and current current revision is:\n${DIFF}\n"DIFFARR=($DIFF)LENDIFFARR=${#DIFFARR[@]}if [ "$LENDIFFARR" -gt "0" ]then echo -e "#Now doing git sync for: $curbranch"echo "Changed revision to ${currev}"echo "$currev" > ${backupfolder}/${prevfile} if [ "$curbranch" == "trunk" ]thenecho "Now doing something for trunk"cd $relax_trunkgit svn fetchgit rebase --onto remotes/git-svngit push origin masterfi if [ "$curbranch" == "relax_disp" ]thenecho "Now doing something for relax_disp"cd $relax_dispgit svn fetchgit rebase --onto remotes/git-svngit push origin masterfi fi} dump_base ; exec_testdo_git_sync ; exec_test echo "Done, quit!"</source>
== See also ==
[[Category:git]]
[[Category:Relax]]
Trusted, Bureaucrats
4,223

edits