All of lore.kernel.org
 help / color / mirror / Atom feed
From: Josef Wolf <jw@raven.inka.de>
To: Avery Pennarun <apenwarr@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: Trying to sync two svn repositories with git-svn (repost)
Date: Sat, 2 May 2009 23:58:52 +0200	[thread overview]
Message-ID: <20090502215852.GJ15420@raven.wolf.lan> (raw)
In-Reply-To: <32541b130905011217x7f339d41x696fedee7298e3a4@mail.gmail.com>

On Fri, May 01, 2009 at 03:17:14PM -0400, Avery Pennarun wrote:
> On Fri, May 1, 2009 at 10:28 AM, Josef Wolf <jw@raven.inka.de> wrote:
> > On Thu, Apr 30, 2009 at 06:59:50PM -0400, Avery Pennarun wrote:
> >> "git log -1 first-svn" would give you the first cherry-pick.  But
> >> remember, it's a completely different branch.
> >
> > I can see why this happens, but I still find it confusing.  Maybe I
> > should help with the -m option?
> 
> I don't know what -m does.  Maybe try looking at the graph with gitk;
> that might give some clues.

Option -m lets me set the log message explicitly :)

> >> Okay, if you want to end up with two different remote branches, it
> >> makes sense to have two different local branches.
> >
> > Well, I _have_ two different remotes because I have two svn repositories.
> 
> Right.  I was just wondering whether you wanted the two branches'
> contents to be *different* or identical.  I guess different.

They have to stay different, because they are localized.

> > Then I have to keep both local branches.  But I still wonder why you
> > suggested to go with _one_ local branch.
> 
> For my own purposes, I try not to create a 1:1 mapping between local
> branches and remote branches; this just ends up being confusing,
> because I can have commits in my local branch that aren't in the
> remote one, and vice versa.  So it's not very useful to create a local
> branch *just* because I have a corresponding remote branch.
> 
> In your case, you might want to have just a single local branch for
> your "public" stuff.  You would then merge changes from the two svn
> remote branches into your local branch, and you'd also merge from your
> local branch into your remote branches (using a disconnected HEAD and
> svn dcommit).

But I am working not only on the "public" stuff.  Additionally, I am
working on _multiple_ localized stuff.  Thus, I have multiple remote
repositories.

Somehow, I still can't get it work.  This is what I do:

  # create the repos
  #
  git svn init --stdlayout file:///var/tmp/builds/git-sync/svn/svn-1
  git config merge.stat true

  # add configuration for svn-1 repos
  #
  git config svn-remote.svn-1.url      file:///var/tmp/builds/git-sync/svn/svn-1
  git config svn-remote.svn-1.fetch    trunk:refs/remotes/svn-1/trunk
  git config svn-remote.svn-1.branches branches/*:refs/remotes/svn-1/*
  git config svn-remote.svn-1.tags   tags/*:refs/remotes/svn-1/tags/*

  # add configuration for svn-2 repos
  #
  git config svn-remote.svn-2.url      file:///var/tmp/builds/git-sync/svn/svn-2
  git config svn-remote.svn-2.fetch    trunk:refs/remotes/svn-2/trunk
  git config svn-remote.svn-2.branches branches/*:refs/remotes/svn-2/*
  git config svn-remote.svn-2.tags   tags/*:refs/remotes/svn-2/tags/*

  # fetch the commits from svn repositories
  #
  git svn fetch -R svn-1
  git svn fetch -R svn-2

  # create local tracking branches
  #
  git checkout -b svn-1 svn-1/trunk
  git checkout -b svn-2 svn-2/trunk

  # just to see what we've done
  #
  git tag svn-1-orig svn-1
  git tag svn-2-orig svn-2

  # move stuff from svn-2 to svn-1
  #
  git svn fetch svn-2
  git checkout svn-1
  git cherry-pick 05b964
  [  continue cherry-picking ]
  git merge --no-ff -s ours svn-1

  # check what I have done
  #
  git diff svn-1-orig svn-1/trunk # shows what I expect

  # move the result to svn-1
  #
  git checkout svn-1/trunk
  git merge --no-ff svn-1
  git svn dcommit

  # move stuff from svn-1 to svn-2
  #
  git svn fetch svn-1
  git checkout svn-2
  git cherry-pick -n c9dae
  [ continue cherry-picking ]
  git merge --no-ff -s ours svn-2

  # check what I have done
  #
  git diff svn-2-orig svn-2/trunk # shows what I expect

  # move the result to svn-2
  #
  git checkout svn-2/trunk
  git merge --no-ff svn-2
  git svn dcommit

At this point, we should be synchronized.

  git checkout svn-2/trunk
  git svn fetch svn-1
  git merge --no-ff svn-1

BOOM.  Although no new commits were fetched, we get a lot of conflicts
here.  So git is not fully aware about the fact that we are synchronized.

  reply	other threads:[~2009-05-02 22:03 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 [this message]
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
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=20090502215852.GJ15420@raven.wolf.lan \
    --to=jw@raven.inka.de \
    --cc=apenwarr@gmail.com \
    --cc=git@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.