On Wed, Aug 22, 2012 at 04:12:30PM -0700, Justin Lebar wrote:
> bholley and I have a script for doing this in git. With thanks to
> glandium for telling us how to do it:
>
> 0. Fetch the prtypes change, and merge it into your local master branch.
>
> 1. Let your git checkout be directory |src|.
>
> 2. Save the script at the end of this message as src/../convert.sh.
>
> 3. For each branch B that you want to rebase over this change, do:
>
> a. $ git checkout B. Maybe make a note of the hash, so you can
> reset --hard in case something goes wrong.
If something goes wrong, you can check the reflog (git reflog show B)
and reset --hard to the old version of B that is not broken, most likely
B@{1}.
> b. Let P be the parent changeset of B. This is the result of |git
> qparent|, if you have moz-git-tools [1] installed. Otherwise it's
> |git merge-base B origin/master|, assuming that your branch is
> upstream from origin/master.
>
> c. $ git filter-branch --tree-filter /absolute/path/to/convert.sh P^..
>
> Note that it's "P^.." and not "P..". This is because we want to
> convert P and also all of the commits in B (and the rev range P.. does
> not include P). We're effectively applying the pr-types change to P
> and all changesets in B.
>
> d. Let P' be the new parent changeset of B. (The hash has changed,
> since we rewrote this commit.)
>
> e. $ git rebase --onto master P'
>
> Note that |git rebase master| will not do what you want, because
> that will try to move P' onto master. But P' is already in master!
> If in doubt, do rebase --interactive, so you can see what git is going
> to try to do.
>
>
> The git apologist in me feels compelled to admit that this is, in
> fact, much more complicated than the equivalent task in hg. :)
If you want to do the equivalent task from hg, you can:
a) git format-patch -o /some/where P..
b) patch the patches
c) git checkout master
d) git am /some/where/*
Mike
_______________________________________________
dev-platform mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-platform