GitHub migration script (was Re: About Github migration )
Heiko W.Rupp
hrupp at redhat.com
Fri Oct 19 11:04:44 UTC 2012
An update to the github migration script.
We should definitively decide which branches to migrate over and
not migrate "one-offs" or feature-branches that have long been merged
into master
Corrected migration script:
BRANCHES=`git branch -r | grep -v "upstream/" | sed -e 's/^ *origin\///'`
for B in $BRANCHES
do
echo $B
git checkout -t -b $B origin/$B
# git push upstream $B:$B
done
this fails on
+ git checkout -t -b release-3.0.1 origin/release-3.0.1
warning: refname 'origin/release-3.0.1' is ambiguous.
warning: refname 'origin/release-3.0.1' is ambiguous.
fatal: Ambiguous object name: 'origin/release-3.0.1'.
Probably because of
snert:/tmp/rhq hrupp$ git branch -r | grep 3.0.1
origin/origin/release-3.0.1
origin/release-3.0.1
[...]
so origin/release-3.0.1 needs to be filtered out above
After the script has run one can add the upstream remote
and then push all branches at once:
git push -v --all upstream
Now that this is done we can pull out the plugins
1) create the plugin repo on github
2) filter down the plugins
$ cd /tmp
$ git clone /tmp/rhq rhq-plugins
run this script to "nail" the branches":
BRANCHES=`git branch -r | grep -v "upstream/" | sed -e 's/^ *origin\///'`
for B in $BRANCHES
do
echo $B
git branch -t $B origin/$B
done
now filter down the plugins
git filter-branch --tag-name-filter cat --prune-empty --subdirectory-filter modules/plugins -- --all
Took another 10-15 mins locally
Now continue with step 5 of the git stackoverflow entry ( http://stackoverflow.com/a/359759/100957 ) , which is
$ git reset --hard
$ git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
$ git reflog expire --expire=now --all
$ git gc --aggressive --prune=now
And then push to GH:
$ git remote add upstream <github url>
$ git push --all upstream
3) Now get rid of the plugins in the first ("main") repository
NOTE: best is to check out the main tree from github and then do this.
Or make sure to remove origin from the remotes, so that this can not mess up
fedorahosted (as I accidentally did)
BRANCHES=`git branch -r | grep -v "upstream/" | grep -v "origin/release-3.0.1" | sed -e 's/^ *origin\///'`
for B in $BRANCHES
do
echo $B
git checkout -f $B
git rm -r --cached modules/plugins
git commit -m "removed plugins"
done
b) Remove the origin remote
$ git remote remove origin
c) Send updates to github:
$git push --all upstream
d) get rid of the (now untracked) plugins
$ rm -r modules/plugins
e) adjust modules/pom.xml to no longer list plugins (in all branches)
4) in rhq-plugins repository
a) copy over the .mailmap file from the main repo and commit
b) fix the pom.xml to use a 4.5.1 parent pom (for master at least)
c) fix the dev-container relative path within the pom.xml
d) add a .gitignore file
Results are at :
https://github.com/pilhuhn/rhq-plugins
and
https://github.com/pilhuhn/rhq/tree/master/modules
NOTES:
- It may make sense to populate a file with the branches to copy once and then use this subsequently
$ git branch -r | grep -v "upstream/" | grep -v "origin/release-3.0.1" | sed -e 's/^ *origin\///' > branch-list.txt
$ vi branch-list.txt ### only leave branches in we are interested in moving over
$ BRANCHES=`cat branch-list.txt`
The current list of branches is attached
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: blist.txt
URL: <https://lists.fedorahosted.org/pipermail/rhq-devel/attachments/20121019/bb6e91e8/attachment.txt>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 203 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <https://lists.fedorahosted.org/pipermail/rhq-devel/attachments/20121019/bb6e91e8/attachment.sig>
More information about the rhq-devel
mailing list