Open main menu

Changes

Git svn

7,267 bytes added, 21:20, 21 October 2020
m
{{historical svn}}
__TOC__
 
= relax branches at github =
You should install [[msysgit]] on windows, to do the commands.
 
== The relax_trunk ==
Go to https://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 set relax_trunk="C:\WinPython27\relax\relax_trunk" set GIT_USER_NAME="GIT_USER_NAME" md %relax_trunk% cd %relax_trunk% # Linux bash ; relax_trunk=$HOME/relax/relax_trunk GIT_USER_NAME="GIT_USER_NAME" mkdir -p ${relax_trunk} cd $relax_trunk  git init # Windows git remote add origin https://%GIT_USER_NAME%@github.com/nmr-relax/relax_trunk.git git remote add hub https://%GIT_USER_NAME%@github.com/%GIT_USER_NAME%/relax_trunk.git # Linux git remote add origin https://${GIT_USER_NAME}@github.com/nmr-relax/relax_trunk.git git remote add hub https://${GIT_USER_NAME}@github.com/${GIT_USER_NAME}/relax_trunk.git   # Or 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.git git remote set-url hub git@github.com:${GIT_USER_NAME}/relax_trunk.git  git fetch origin git checkout --track origin/master git fetch hub  #Build scons  ## Now we add the 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 remote add 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}/relax_scripts.git</source> == The relax_disp ==Go to https://github.com/nmr-relax/relax_disp <br>Click '''Fork'''.
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 fetch origin git checkout --track origin/master git fetch hub  #Build scons  ## Now we add the 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== Get future updates =="bash"> cd relax_scripts # WindowsFor future updates to the SVN revision HEAD, you now need to do a git svn rebase, which is very similar toremote add hub https: svn up//%GIT_USER_NAME%@github.com/%GIT_USER_NAME%/relax_scripts.git git svn rebaseCheck branch information# Linux git branch -aremote 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 should install [[msysgit]] on windows, to do the commands. md C:\WinPython27\relax cd C:\WinPython27\relax You need an [[Authors#authors.txt | authors.txt]] file, to correctly convert the metadata. <source lang="bash"> git svn clone http:bash ; relax=$HOME/backup/svn.gna.org/svnrelax ; relax_trunk=${relax}/relax_trunk ; relax_disp=${relax}/trunk --no-metadata -A authors.txtrelax_disp ; GIT_USER_NAME="GIT_USER_NAME" copy authors.txt trunkmkdir -p ${relax_trunk} ${relax_disp} ;
git svn clone http://svn.gna.org/svn/relax/branches/relax_disp trunk --no-metadata -A authors.txt${relax_trunk} ; copy cp authors.txt relax_disp${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
#Buildgit svn clone http://svn.gna.org/svn/relax/branches/relax_disp --no-metadata -A authors.txt ${relax_disp} ; cd trunkcp authors.txt ${relax_disp} ; sconscat ${relax_disp}/.git/config cd cp ${relax_disp}/.git/config ${relax_disp}/.git/config_bck cd awk '{gsub(a,b);print}' a=".*authorsfile =.*" b=" authorsfile = ${relax_disp}/authors.txt" ${relax_disp}/.git/config_bck > ${relax_disp}/.git/config sconscat ${relax_disp}/.git/config</source>
== Setup remotes to github ==
=== For branch trunk ===
<source lang="bash"> cd C:\WinPython27\relax\trunk$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 # See the info git remote -v git remote show origin</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 C:\WinPython27\relax\$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 # See the info git remote -v git remote show origin</source>
Now go to github.com at https://github.com/organizations/nmr-relax click '''Repositories -> New'''.<br>
Then send svn branch master of to github
<source lang="bash">
git push -u origin master
</source>
== git operations ==
You may need Get new changes from svn repository and push to make a setting github git co master git svn fetch git rebase --onto remotes/git-svn git push origin master == Saving credentials ==See [http://stackoverflow.com/questions/94835414629107/how-to-input-password-to-git-pushpull-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 currentrevision 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 how we : $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 branches.origin masterfi if [ "$curbranch" == "relax_disp" ] thenecho "Now doing something for relax_disp"cd $relax_dispgit svn fetchgit rebase --onto remotes/git-svngit config push.default simpleorigin 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