threads / discuss / 31401

Grafting Alternate History

Subject: Grafting Alternate History

## tl;dr

3 messages between Aug 31, 2012 and Sep 4, 2012.

replies: 2people: 2as markdown or json

dag@cray.com· Aug 31, 2012, 23:39 UTC · lore

I have an unfortunate situation where I have two subversion repositories for the same project, one a public version and one a private version. Because they are mirrors of svn repositories, they have very different histories as far as git is concerned. This is not all that uncommon but of course I would like to manage things in git.

git-svn is great for interacting with one svn repository. The public svn repository has a fully-supported git mirror. The private repository also has a fully-supported git mirror. But I need to check in changes to the private repository via git-svn. I eventually need to check in changes to the public repository as well but that is orders of magnitude less frequent. A manual diff+patch+git-svn is acceptable for now.

I am wondering if it's possible to graft the history of one of the git mirrors onto an empty branch of the other and share changes between them. I need to take updates from the public repository and apply them to the private repository. This is a frequent operation. I have been essentially using manual diff+patch but that is highly error-prone and annoying.

For example, let's say we take a local copy of the private repository. I would like to somehow create an empty branch in that local copy and then populate it with the history of the public repository. I would like to be able to specify a git diff-like command on the public graft branch to get some changes over a range of commits and apply those changes to one of the private branches (say master). If I could use a git-merge-like or git-rebase-like command, so much the better. I would like to do the same in reverse but as I said that is a much less common operation.

Has anyone done anything like this before? Is it even theoretically possible to manage disjoint histories like this?

Thanks for your help!
                            -Dave
Andreas Schwab· Sep 1, 2012, 06:48 UTC · re: dag@cray.com · lore

Re: Grafting Alternate History

<dag@cray.com> writes:
Show 6 quoted lines
> For example, let's say we take a local copy of the private repository.
> I would like to somehow create an empty branch in that local copy and
> then populate it with the history of the public repository.  I would
> like to be able to specify a git diff-like command on the public graft
> branch to get some changes over a range of commits and apply those
> changes to one of the private branches (say master).

You can set up (the git mirror of) the public repository as a remote in the private repository and git cherry-pick the commits you want to copy over.

Andreas.
-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."
dag@cray.com· Sep 4, 2012, 22:56 UTC · re: Andreas Schwab · lore

Re: Grafting Alternate History

Andreas Schwab <schwab@linux-m68k.org> writes:
> You can set up (the git mirror of) the public repository as a remote in
> the private repository and git cherry-pick the commits you want to copy
> over.
Now why didn't I think of that!?  :)
Thanks for helping an old bumbler along.  :)
                         -Dave

← back to recent threads