:-)  That's alright.  I finally got things working myself.  Step one
(assuming an existing repository cloned from buildr/buildr):

$ git remote add apache git://git.apache.org/buildr.git
$ git fetch apache
$ git branch trunk apache/trunk

Step two:

$ cd .git
$ wget http://git.apache.org/authors.txt
$ cd ..
$ git config svn.authorsfile .git/authors.txt

Step three:

$ git checkout trunk
$ git svn init --prefix=apache/ --username=djspiewak -s
https://svn.apache.org/repos/asf/buildr
$ git svn rebase

At this point, you should have a fully-updated trunk/ branch in sync with
the SVN repository.  Now, the annoying part...  For each local branch, we
have to identify the exact branch-point; where that branch diverged from the
SVN trunk/.  Now, find the corresponding commit in the `trunk` branch and
tag it as `branch-point`.  Perform the following:

$ git checkout *branch*
$ git rebase branch-point
# resolve any conflicts using mergetool

If you do this for all your branches, you should get a working tree based on
the new git clone.  You can git svn dcommit from trunk/ and the results will
be pushed into the SVN as expected.  Running a git svn rebase in trunk/ will
bring it up to date with any new changes.

The main disadvantage to this rebasing is that you will lose any merge
history between your local branches.  All of the commit data should still be
there, but rebase will linearize it for each branch you rebase.  In other
words, if you started with four local branches with various cross-merging,
you will end up with four local branches without any connectivity
whatsoever.  I think it's a small price to pay though for actually getting
this working.

Are we planning to re-sync the "townhall" based on the official Apache
clone?  I would vote "no" on this one, instead pointing Git-hungry people to
the official source.  Our personal clones can (and I believe, should) remain
on GitHub, since it makes for a very nice way to collaborate.  We should
however try to get everything rebased against the same commit tree.  :-)
Also, for the sake of GitHub's pretty graphs, we should also build our
repositories by using the "Fork" mechanism.  My repository on GitHub is
currently in sync with the above (except that `trunk` is a local branch and
`master` contains some other stuff).  If we decide on a central "fork
point", I will recreate the GitHub repo based on that fork and then fold in
my changes *again*.

Daniel

On Wed, May 20, 2009 at 7:24 PM, Assaf Arkin <ar...@intalio.com> wrote:

> On Fri, May 15, 2009 at 4:20 PM, Daniel Spiewak <djspie...@gmail.com>
> wrote:
>
> > My committer creds finally came through!  :-)  Anyway, I would like to
> get
> > setup so I can commit to the SVN and push to the Git townhall, but this
> > seems to be a somewhat non-trivial process.  Critically, I want to be
> able
> > to preserve all of the branches (both local and remote) and
> customizations
> > that I've built up as part of my GitHub fork.  Any suggestions on the
> best
> > way to do this?  Actually, this should probably be on a wiki page
> > somewhere,
> > but until then...
>
>
> my git-svn is still broken, though I did progress into a different error
> (and infinite loop on svn fetch) since upgrading to 1.6.3.1, so right now
> I'm not the best person to ask :-)
>
>
> >
> >
> > Daniel
> >
>

Reply via email to