Subject: Re: Grafting mis-aligned trees.

From: "Boyd Stephen Smith Jr." <[email-masked]>
Date: Fri, 28 Nov 2008 17:01:41 -0600

On Tuesday 2008 November 18 03:24, Michael J Gruber wrote:
> Boyd Stephen Smith Jr. venit, vidit, dixit 17.11.2008 23:45:
> > I haven't gotten a response from my subscription email, so please CC me
> > on any replies.
> >
> > So, I've been managaing the source I had from a client project in git and
> > have a non-linear history.  Currently, two tips (production and testing)
> > but there are many feature branches that were git-merge'd in, not
> > rebased.
> >
> > Now, I've gotten the full tree.  Turns out all the source code I was
> > working on was in a subdirectory "project/web".  I'd like to "graft" the
> > *changes* I made onto the full tree.
> >
> > I figured this might be a job for git-filter-branch.  Certainly, that did
> > the job of moving all my changes into the subdirectory.  But, now I want
> > to do something that's a combination or git-rebase and git-filter-branch.
> >  I want to replay the *patches/deltas* (like rebase) on top of the full
> > tree I have, but *maintain the non-liear history* (like filter-branch).
> >
> > Can anyone think of a recipe for me?
> >
> > Trees look something like this right now.
> >
> > <some history> -> FT
> >
> > TI -> <non-linear history> -> A -> <non-linear history> -> C
> >    \                            \                           \
> >     -> PI ------------------------> B ------------------------> D
> >
> > I'd like to have it look something like:
> >
> > <some history> -> FT -> <non-linear history> -> A' -> <non-linear
> > history> -> C' \                            \                           \
> > -> PI' ----------------------> B' -----------------------> D'
> >
> > A', B', C', and D' are different commits, but the diff (and history)
> > between FT and A' is the same as the diff (and history) between TI and A.
> >
> > Again, please CC me on any replies.
>
> [CCing is customary here anyways.]
>
> So, your base directory for TI and FT is different, right? I.e.: In the
> TI repo, your project sits at the root, whereas in the FT repo it sits
> in project/web?

Yes.

> Has FT advanced since you took the initial subdir 
> snapshot for TI?

No.  Well, maybe.  I think the subdir diff is fairly trivial if not empty.  TI 
is an import from the code actually present on the testing server.  FT was 
the a subversion repository obtained later after some hullabaloo with the 
ex-development house.

Right now this tree is effectively all mine, so I can always graft in commits 
to synchronize the common subtree of FT and TI, if that makes things easier.
-- 
Boyd Stephen Smith Jr.                     ,= ,-_-. =. 
[email-masked]                      ((_/)o o(\_))
ICQ: 514984 YM/AIM: DaTwinkDaddy           `-'(. .)`-' 
http://iguanasuicide.org/                      \_/