[prev in list] [next in list] [prev in thread] [next in thread]
List: rhq-devel
Subject: GitHub migration script (was Re: About Github migration )
From: lkrejci () redhat ! com (Lukas Krejci)
Date: 2012-10-19 11:24:12
Message-ID: 3593694.N6R701WPgs () metlos
[Download RAW message or body]
If we would like to filter out the branches that have been merged into master,
you can get a list of those like this:
git branch -a --merged master
Of course this will not find branches that have been completely cherry-picked
over to master (instead of merged) but I think it is good starting point
still.
Lukas
On Friday, October 19, 2012 13:04:44 Heiko W.Rupp wrote:
> 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
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic