git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Merge two repos with history included? (was Re: How do I..?)

From
Alexander Gavrilov <angavrilov@gmail.com>
Date
Dec 23, 2008, 07:58 UTC
Message-ID
<200812231058.02141.angavrilov@gmail.com>
In-Reply-To
<20081223004407.GZ21154@genesis.frugalware.org>
On Tuesday 23 December 2008 03:44:07 Miklos Vajna wrote:
Show 22 quoted lines
> On Mon, Dec 22, 2008 at 02:04:06PM -0800, Dylan Martin <dmartin@sccd.ctc.edu> wrote:
> > I checked, and my initial SVN to git conversion does contain history.
> > 
> > I'm trying to add an exising repo as a subdir of my main repo with
> > history included.  Can anyone tell me how to do that?
> 
> I would try the following: Let's say you have super.git and foo.git, and
> you want to merge foo.git to the subdirectory 'foo' of super.git. Then
> you can do in foo.git:
> 
> mkdir foo
> mv * foo
> git add foo
> git commit -a
> 
> Then in super.git:
> 
> git pull path/to/foo.git master
> 
> And then git log --follow should work just fine on any merged files as
> well.
> 
If the conversion is one-shot, you can also try rewriting commits like this:

cd foo.git git filter-branch --commit-filter 'TREE=$1; shift; git commit-tree $(echo -e "040000 tree $TREE\tfoo" | git mktree) "$@"' master

(Maybe there is a simpler way, though)
I used this once to merge together the history of a bunch of interrelated (and now dead) projects.
Alexander
Previous: Miklos Vajna
Message 3 of 3 in “Merge two repos with history included? (was Re: How do I..?)”
  1. Dylan MartinDec 22, 2008
  2. Miklos VajnaDec 23, 2008
  3. Alexander GavrilovDec 23, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.