On Thu, Mar 26, 2009 at 06:59:51PM -0400, David Reitter <david.reitter@xxxxxxxxx> wrote: > I have two separately developed projects (foo, bar) which I'd like to > merge; the contents of foo should, initially, go in a subdirectory of > bar. > > I'm aware of two methods: moving (renaming) everything within foo > into foo-dir, and then just pulling foo into bar. The result of the two methods are the same. > This works beautifully, except that the big rename causes havoc w.r.t. > to the files histories, i.e. git-log needs a "--follow" argument now, > and "diff-tree" can't track changes when given the new file name. No > good. > > I've also tried the method described in [1], but it seems that all > history is lost here (the text could point this out..) Of course it is not lost. :) Example: commit f8c62880ef22b74ea6df47bb349ff0743d2a93f9 Merge: f474c52... 52b8ea9... Author: Junio C Hamano <gitster@xxxxxxxxx> Date: Sun Mar 1 22:20:52 2009 -0800 Merge git://git.kernel.org/pub/scm/gitk/gitk Now do a 'git log f474c52..52b8ea9' and you'll see the merged commits. But you are right about that 'git log -- path' will find the merge commits only (which is right, as the tree objects are not modified when merging, just the resulting tree has the original tree in a subdirectory). If this is a one-time operation then I would just use git filter-branch to move the code to a subdir.
Attachment:
pgpFvKv8j7cvS.pgp
Description: PGP signature