Date: Thu, 18 Oct 2012 08:11:15 +0000 (UTC) From: Ulrich Spoerlein <uqs@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r241674 - in user/uqs: . git_conv Message-ID: <201210180811.q9I8BFsF086230@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: uqs Date: Thu Oct 18 08:11:14 2012 New Revision: 241674 URL: http://svn.freebsd.org/changeset/base/241674 Log: Add git_conv scripts and rules, as used on git.freebsd.org The modified svn2git sources are at https://gitorious.org/~uqs/svn2git/uqs-svn2git This should make it easier for other people to re-do the conversions and verify their authenticity. Added: user/uqs/ user/uqs/git_conv/ user/uqs/git_conv/freebsd-doc.rules user/uqs/git_conv/freebsd-ports.rules user/uqs/git_conv/freebsd.rules user/uqs/git_conv/git_conv (contents, props changed) user/uqs/git_conv/git_conv_cron (contents, props changed) Added: user/uqs/git_conv/freebsd-doc.rules ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/uqs/git_conv/freebsd-doc.rules Thu Oct 18 08:11:14 2012 (r241674) @@ -0,0 +1,49 @@ +# vi:ft=perl: +create repository freebsd-doc.git +end repository + +match /head/ + repository freebsd-doc.git + branch master +end match + +# ignore this stuff +match /svnadmin/.* +end match +match /doc-branch-policy.txt +end match + +# Used during cvs2svn conversion +match /(branches)/([A-Z0-9_]+)/ + repository freebsd-doc.git + branch \1/\2 +end match + +match /(stable|releng|release)/([A-Z0-9.]+)/ + repository freebsd-doc.git + branch \1/\2 +end match + +match /(www)/ + repository freebsd-doc.git + branch \1 +end match + +match /(projects|release)/([^/]+)/ + repository freebsd-doc.git + branch \1/\2 +end match + +match /(translations)/ + repository freebsd-doc.git + branch \1 +end match + +match /(user)/([^/]+)/([^/]+)/ + repository freebsd-doc.git + branch \1/\2/\3 +end match + +# ignore the rest, XXX temp only +#match .* +#end match Added: user/uqs/git_conv/freebsd-ports.rules ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/uqs/git_conv/freebsd-ports.rules Thu Oct 18 08:11:14 2012 (r241674) @@ -0,0 +1,21 @@ +# vi:ft=perl: +create repository freebsd-ports.git +end repository + +match /head/ + repository freebsd-ports.git + branch master +end match + +# ignore this stuff +match /svnadmin/.* +end match + +match /(branches|tags)/([A-Z0-9_]+)/ + repository freebsd-ports.git + branch \1/\2 +end match + +# ignore the rest, XXX temp only +#match .* +#end match Added: user/uqs/git_conv/freebsd.rules ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/uqs/git_conv/freebsd.rules Thu Oct 18 08:11:14 2012 (r241674) @@ -0,0 +1,104 @@ +# vi:ft=perl: +create repository freebsd.git +end repository + +match /head/ + repository freebsd.git + branch master +end match + +# ignore this stuff +match /ROADMAP.txt +end match +match /projects/GUIDELINES.txt +end match +match /user/GUIDELINES.txt +end match +match /vendor/atf/(README.txt|FREEBSD-Xlist) +end match + +match /svnadmin/.* +end match + +match /(cvs2svn)/([^/]+)/([^/]+)/ + repository freebsd.git + branch \1/\2/\3 +end match + +match /(stable|releng|release)/([0-9.]+)/ + repository freebsd.git + branch \1/\2 +end match + +match /(releng)/ALPHA_2_0/ + repository freebsd.git + branch \1/2.0a +end match + +match /(releng)/BETA_2_0/ + repository freebsd.git + branch \1/2.0b +end match + +# special nesting for these +match /(projects)/(graid|ofed)/([^/]+)/ + repository freebsd.git + branch \1/\2/\3 +end match + +match /(projects)/([^/]+)/ + repository freebsd.git + branch \1/\2 +end match + +# /user/piso was created wrong +match /(user)/(piso)/ + repository freebsd.git + branch \1/\2/ipfw_old + min revision 186541 + max revision 190858 +end match +match /(user)/(piso)/([^/]+)/ + repository freebsd.git + branch \1/\2/\3 + min revision 190859 +end match +# ignore stuff, no branch for these +match /user/gad/README.txt +end match +match /user/des/Makefile.inc +end match +match /user/simon/test.txt +end match +match /user/peter/foo.txt +end match +match /vendor/(bzip2|flex)/FREEBSD-(Xlist|upgrade) +end match +match /vendor/v4l/README +end match + +# fixup trailing dot +match /vendor/(clang|llvm)/(clang|llvm)-(r73070)\./ + repository freebsd.git + branch vendor/\1/\2-\3 +end match + +# wrong tag, ignore r210074 and r210075 +match /vendor/(clang|llvm)-(r108243)/ +end match + +# unknown vendor is one level short +match /(vendor)/(unknown)/ + repository freebsd.git + branch \1/\2 +end match + +# XXX drop the different vendor-* prefixes? +match /(user|vendor|vendor-sys|vendor-cddl|vendor-crypto)/([^/]+)/([^/]+)/ + repository freebsd.git + branch \1/\2/\3 +end match + +# ignore the rest, XXX temp only +#match .* +#end match Added: user/uqs/git_conv/git_conv ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/uqs/git_conv/git_conv Thu Oct 18 08:11:14 2012 (r241674) @@ -0,0 +1,94 @@ +#!/bin/sh +# +# Repository creation and setup +# +# Simple for svn2git repos, need to run against local paths, using rules files in ~uqs/svn2git +# - First svn2git run will create target git repo +# - git remote add github github.com:freebsd/freebsd.git +# - git config --add remote.github.push '+refs/heads/master:refs/heads/master' +# - git config --add remote.github.push '+refs/heads/stable/*:refs/heads/stable/*' +# - git config --add remote.github.push '+refs/heads/projects/*:refs/heads/projects/*' +# - git config --add remote.github.push '+refs/notes/*:refs/notes/*' +# - etc. +# - touch freebsd.git/git-daemon-export-ok +# - ~uqs/svn2git/svn-all-fast-export --rules ~uqs/svn2git/freebsd.rules --add-metadata-notes --identity-domain FreeBSD.org /home/svn/base +# - git push github +# done. Analog steps needed for doc and ports. +# +# For git-svn it's a bit more involved. We use separate working dirs, but push to the same destination repo. +# - git svn init -Thead -rewrite-root=svn+ssh://svn.freebsd.org/base file:///home/svn/base src-head.git +# - cd src-head.git +# - git svn fetch -r 0:1000 +# - git remote add github github.com:freebsd/freebsd.git +# - git config --add remote.github.push '+refs/remotes/trunk:refs/heads/svn_head' +# - git svn rebase +# - git push github + +LOCK=/tmp/gitconv.lock +RULES=/home/uqs/svn2git +SVN2GIT=/home/uqs/svn2git/svn-all-fast-export +BASE=/home/git + +trap 'rm -f ${LOCK} ; exit 1' 1 2 3 15 +if ! shlock -p $$ -f ${LOCK}; then + echo "Locked by `cat ${LOCK}`, running too long? Please fix ..." >&2 + exit 1 +fi + +svn2git() +{ + local rules source target dest + rules=$1; shift + source=$1; shift + dest="$@" + + # FIXME: error prone, yuck + target=${rules%.rules}.git + target=`basename $target` + + echo "Converting $source to $target using svn2git" + cd $BASE + $SVN2GIT --add-metadata-notes --identity-domain FreeBSD.org \ + --rules $rules $source + if [ $? != 0 ]; then + echo "Error in svn2git conversion of $source" >&2 + exit 1 + fi + + echo "Pushing $target to $dest" + cd $target && for d in $dest; do git push $d || break; done + if [ $? != 0 ]; then + echo "Error in pushing to $dest" >&2 + exit 1 + fi +} + +gitsvn() +{ + local target dest + target=$1; shift + dest="$@" + + echo "Converting $target using git-svn" + cd $BASE/$target + git svn rebase + if [ $? != 0 ]; then + echo "Error in git-svn conversion of $target" >&2 + exit 1 + fi + + echo "Pushing $target to $dest" + for d in $dest; do git push $d || break; done + if [ $? != 0 ]; then + echo "Error in pushing to $dest" >&2 + exit 1 + fi +} + +svn2git $RULES/freebsd.rules /home/svn/base github +svn2git $RULES/freebsd-doc.rules /home/svn/doc github +svn2git $RULES/freebsd-ports.rules /home/svn/ports github + +gitsvn src-head.git github +gitsvn doc-head.git github +gitsvn ports-head.git github Added: user/uqs/git_conv/git_conv_cron ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/uqs/git_conv/git_conv_cron Thu Oct 18 08:11:14 2012 (r241674) @@ -0,0 +1,17 @@ +#!/bin/sh + +today="`date +%Y-%m-%d`" +log="$today.log" + +cd /home/git + +# TODO cleanup old logs + +git_conv >> $log 2>&1 + +if [ $? != 0 ]; then + echo "Error during git_conv" >&2 + tail $log + exit 1 +fi +
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201210180811.q9I8BFsF086230>