git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Avery Pennarun <apenwarr@gmail.com>
To: Josef Wolf <jw@raven.inka.de>, git@vger.kernel.org
Subject: Re: Trying to sync two svn repositories with git-svn (repost)
Date: Fri, 15 May 2009 15:05:14 -0400	[thread overview]
Message-ID: <32541b130905151205h6ca89d85q97e72ce23bf233ee@mail.gmail.com> (raw)
In-Reply-To: <20090515175203.GS15420@raven.wolf.lan>

On Fri, May 15, 2009 at 1:52 PM, Josef Wolf <jw@raven.inka.de> wrote:
> On Thu, May 14, 2009 at 05:57:00PM -0400, Avery Pennarun wrote:
>> On Thu, May 14, 2009 at 5:41 PM, Josef Wolf <jw@raven.inka.de> wrote:
>> > So here's my second plan:
>> > 1. instead of doing the cherry-picking in a single repository, it might
>> >   be helpful to do it in separate repositories: one repository for each
>> >   direction.  While there are still two remote svn repositories in each
>> >   svn repository, there is no need for criss-cross anymore.  The flow
>> >   of the data is in one direction and it seems (at least at first glance)
>> >   I can use git-svn-rebase to get a linear history.
>>
>> it's still criss-crossing, it's just less obvious that way.  One
>> repository is exactly the same as two repositories in git; all that
>> matters is the branch histories.
>
> Yeah, I see...  But this step is here _only_ to get the existing svn
> repositories in sync again.  After cherry-picking and dcommitting, those
> cherry-pick repositories would be wiped.  They have no real history.  The
> steps I outlined in my previous mail wouldn't even create any files in
> the .git/refs subdirectory.

Hmm, getting them in sync the first time seems to be "easy"
(relatively), in that you've already done it, right?  So it's a
one-time thing, doesn't need automation, and you already figured that
part out.  So it seems like a non-issue one way or the other.

> Once that is done, I can declare one of the existing repositories as
> public and pull it via git-svn into a freshly created repos.  The other
> repos can then be recreated by cloning and applying patches.  No svn
> involved anymore here.

Yes, that works fine.  Nothing stopping you from declaring one or the
other svn repos to be identical to "public."

>> I'd say that basically none of your problems have anything to do with
>> svn's lack of merge support, and everything to do with the fact that
>> you aren't doing all your changes first on a 'public' branch and then
>> merging from there into the private branches.  (That's really not so
>> hard to do in svn either, and would save a ton of confusion.)
>
> The problem here is that it does not match the work flow.  IMHO, my work
> flow is very similar to the work flow of the kernel, so I fail to see why
> it can not work.  See the analogies:
>
> kernel: Submodule maintainers are committing into private repositories
> me:     People are committing into private repositories
>
> kernel: Those commits are forwarded to Linus's repository
> me:     Those commits are forwarded to the public repository
>
> kernel: Maintainers receive commits for other submodules from linus
> me:     Commits are distributed from public to private repositories

There is one critical difference here: if someone merges from Linus
and then Linus merges back from them, then the two resulting
repositories will be *identical* (at least, the trees will be; if the
second merge uses --no-ff, the histories will be very slightly
different, but not importantly so).

If someone has patches that they don't want to send back to Linus, and
those patches are intermixed with ones they *do* want to send back,
then they either have to cherry pick them over to a separate branch
(which Linus can then pull), or equivalently they email individual
patches to Linus, or they need to rebase a lot, or they need to just
put their "finished" patches onto a separate branch and keep the
unfinished ones somewhere else that Linus won't pull.

Rebasing is (I think) actually the most common solution to this
problem, but it doesn't help if you're using svn.  svn has no concept
of rebasing.  (git svn rebase uses git rebase, but it's not really for
the same purpose.)

> The only differences I can see are:
> - size of the project (obviously)
> - convert from multiple svn repos instead of bitkeeper
> - private repostories have to keep local patches (but I guess maintainers
>  do that also)

That last one is the source of all your problems.  That said, the
script I provided *does* let you do this, if you're brave.

Have fun,

Avery

  reply	other threads:[~2009-05-15 19:06 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-04-27 20:12 Trying to sync two svn repositories with git-svn (repost) Josef Wolf
2009-04-28 20:30 ` Josef Wolf
2009-04-28 20:53 ` Avery Pennarun
2009-04-28 22:37   ` Josef Wolf
2009-04-29  3:19     ` Avery Pennarun
2009-04-29 16:01       ` Josef Wolf
2009-04-29 18:13         ` Avery Pennarun
2009-04-29 22:37           ` Josef Wolf
2009-04-30  2:07             ` Avery Pennarun
2009-04-30 22:28               ` Josef Wolf
2009-04-30 22:59                 ` Avery Pennarun
2009-05-01 14:28                   ` Josef Wolf
2009-05-01 19:17                     ` Avery Pennarun
2009-05-02 21:58                       ` Josef Wolf
2009-05-04 15:58                         ` Avery Pennarun
2009-05-04 21:14                           ` Josef Wolf
2009-05-06 18:52                             ` Josef Wolf
2009-05-06 19:23                               ` Avery Pennarun
2009-05-06 22:50                                 ` Josef Wolf
2009-05-08 20:44                                   ` Avery Pennarun
2009-05-08 23:58                                     ` Josef Wolf
2009-05-13 12:09                                       ` Josef Wolf
2009-05-13 17:28                                         ` Avery Pennarun
2009-05-13 22:22                                           ` Josef Wolf
2009-05-14  6:35                                             ` Avery Pennarun
2009-05-14 21:41                                               ` Josef Wolf
2009-05-14 21:57                                                 ` Avery Pennarun
2009-05-15 17:52                                                   ` Josef Wolf
2009-05-15 19:05                                                     ` Avery Pennarun [this message]
2009-05-17 11:24                                                       ` Josef Wolf
2009-05-20 16:40                                                       ` Josef Wolf

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=32541b130905151205h6ca89d85q97e72ce23bf233ee@mail.gmail.com \
    --to=apenwarr@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=jw@raven.inka.de \
    /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).