From: Ryan Anderson <ryan@michonline.com>
To: Petr Baudis <pasky@suse.cz>
Cc: Mathias Waack <Mathias.Waack@rantzau.de>, git@vger.kernel.org
Subject: Re: Joining Repositories
Date: Wed, 18 Jan 2006 09:09:17 -0500 [thread overview]
Message-ID: <20060118140917.GA15438@mythryan2.michonline.com> (raw)
In-Reply-To: <20060118125158.GN28365@pasky.or.cz>
On Wed, Jan 18, 2006 at 01:51:58PM +0100, Petr Baudis wrote:
> Hello,
>
> Dear diary, on Wed, Jan 18, 2006 at 01:25:59PM CET, I got a letter
> where Mathias Waack <Mathias.Waack@rantzau.de> said that...
> > we're using git with cogito as a frontend. For some reasons I forgot we have
> > some repositories which belong to the same project. To simplify the whole
> > thing I would like to join these repositories. It mainly means to move some
> > directories. So lets say I have:
> >
> > /r1/.git
> > /r2/.git
> >
> > and what I would like to have is
> >
> > /r/.git
> > r1
> > r2
> >
> > Of course the history should remain (otherwise it would be to easy).
> >
> > How should I do this?
>
> The crucial question is what the joined repository's directory
> structure should be. If from r1/a, r2/b you want r/a, r/b then it's
> easy:
>
> cd r1
> cg-branch-add r2 ../r2/.git
> cg-fetch r2
> cg-merge -j r2
>
> But if you want r1/a, r2/b to turn to r/r1/a, r/r2/b, you will have
> to rewrite the history of each (and then do the above). One rough
> and untested sketch...
... Why would that be the optimal method?
Assuming both repositories are clean, no extraneous files, and without
testing, of course:
In r1:
mkdir r1
# move everything into the subdirectory called r1.
git mv $(ls -a | grep -v -e ^.git$ -e ^r1$) r1/
git commit -a "Restructure directory"
In r2:
mkdir r2
# move all files into r2/
git mv $(ls -a | grep -v -e ^.git$ -e ^r2$) r2/
git commit -a "Restructure directory"
git fetch ../r1/
GIT_INDEX_FILE=.git/tmp-index git-read-tree FETCH_HEAD
GIT_INDEX_FILE=.git/tmp-index git-checkout-cache -a -u
git-update-cache --add -- $(GIT_INDEX_FILE=.git/tmp-index git-ls-files)
cp .git/FETCH_HEAD .git/MERGE_HEAD
git commit
No history rewritten, merging with the old repositories should, at least
theoretically, work, etc.
(This is just a restatement of Linus's "Coolest merge ever" / union
merge)
--
Ryan Anderson
sometimes Pug Majere
next prev parent reply other threads:[~2006-01-18 14:09 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-01-18 12:25 Joining Repositories Mathias Waack
2006-01-18 12:51 ` Petr Baudis
2006-01-18 12:58 ` Petr Baudis
2006-01-18 14:01 ` Mathias Waack
2006-01-18 14:14 ` Petr Baudis
2006-01-19 11:36 ` Mathias Waack
2006-01-19 18:24 ` Junio C Hamano
2006-01-18 14:14 ` Andreas Ericsson
2006-01-18 14:09 ` Ryan Anderson [this message]
2006-01-18 14:21 ` Petr Baudis
2006-01-18 14:39 ` Ryan Anderson
2006-01-18 16:23 ` Linus Torvalds
2006-01-18 17:05 ` Petr Baudis
2006-01-18 17:33 ` Junio C Hamano
2006-01-18 18:03 ` Linus Torvalds
2006-01-18 17:30 ` Junio C Hamano
2006-01-18 18:22 ` Linus Torvalds
2006-01-18 19:09 ` Junio C Hamano
2006-01-18 20:09 ` Linus Torvalds
2006-01-18 22:47 ` Linus Torvalds
2006-01-18 23:15 ` Linus Torvalds
2006-01-19 2:12 ` Junio C Hamano
2006-01-19 9:03 ` Petr Baudis
2006-01-18 18:55 ` Ryan Anderson
2006-01-18 16:38 ` H. Peter Anvin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060118140917.GA15438@mythryan2.michonline.com \
--to=ryan@michonline.com \
--cc=Mathias.Waack@rantzau.de \
--cc=git@vger.kernel.org \
--cc=pasky@suse.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).