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: Fri, 1 May 2009 16:28:11 +0200 [thread overview]
Message-ID: <20090501142811.GI15420@raven.wolf.lan> (raw)
In-Reply-To: <32541b130904301559w329bdd4bo6f2736a505b7235f@mail.gmail.com>
On Thu, Apr 30, 2009 at 06:59:50PM -0400, Avery Pennarun wrote:
> On Thu, Apr 30, 2009 at 6:28 PM, Josef Wolf <jw@raven.inka.de> wrote:
> > # cherry-pick from second-svn to first-svn
> > #
> > git svn checkout first-svn
> > git cherry-pick sha1-from-second-svn # repeat as needed
> > git checkout first-svn/trunk
> > git merge --no-ff first-svn
> > git diff first-svn/trunk first-svn >changes.diff
> > git svn dcommit
> [...]
> > But I am still somewhat confused:
> >
> > git log -1 first-svn/trunk
> >
> > says "Merge branch first-svn into HEAD". But this does not reflect
> > what I've actually done: I've picked _from_ second-svn and committed
> > that _to_ first-svn.
>
> The most recent commit to first-svn/trunk was "git merge --no-ff
> first-svn", which creates the merge commit you're seeing here. (HEAD
> == first-svn/trunk). So this sounds right to me.
>
> "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?
> >> What you probably thought you should do, given that the existing
> >> git-svn documentation says to do it, is more like this:
> >>
> >> # WRONG
> >> git checkout first-svn
> >> git cherry-pick some stuff
> >> git merge [perhaps -s ours] second-svn/trunk
> >> git svn dcommit
> >
> > Almost... In addition, I was trying to "git svn rebase" before the
> > dcommit
>
> 'git svn dcommit' implies 'git svn rebase' first anyway, so it's the same.
>
> > What would happen if somebody else creates a new commit just after I
> > "git svn fetch" but before I dcommit? Guess, svn will not accept this
> > commit, because it is based on an outdated revision. How would I
> > get out from this situation?
>
> AFAIK, it will attempt to do "git svn rebase" first, and if that
> succeeds, it will do the commit.
>
> In such a case, the rebase should be okay, because it's only changing
> commits (in fact, just one commit: the merge commit) that don't exist
> on any other branch. Thus it won't mangle any other merges.
Yeah, that's the simple case. But what if the rebase don't succeed?
> > Ummm, no.. I have _two_ branches:
> >
> > first-svn: contains the cherries that I picked from second-svn. This
> > branch looks the way first-svn/trunk should be
> > second-svn: contains the cherries that I picked from first-svn. This
> > looks the way second-svn/trunk should be
>
> 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.
> > Don't I need to rebase at least one of them if I want to "merge" those
> > two branches into a single one?
>
> I don't think so. If you merge them together, what do you *want* it
> to look like? And what do you want to do with that branch afterwards?
> It's hard for me to guess, but it seems unlikely that rebasing things
> will get you there.
Then I have to keep both local branches. But I still wonder why you
suggested to go with _one_ local branch.
> If what you want is "one central branch that currently looks like
> first-svn/trunk or second-svn/trunk or maybe something else, but we'll
> be merging future changes to first-svn and second-svn into it in the
> future", then you would do:
>
> git checkout -b one-true-branch
> ...make it look however you want...
> # now mark it as up-to-date with svn, but don't change anything
> git merge -s ours first-svn/trunk
> git merge -s ours second-svn/trunk
>
> And then in the future, whenever first-svn/trunk or second-svn/trunk
> change, you would do:
>
> git merge first-svn/trunk
> git merge second-svn/trunk
>
> etc.
I guess that might be interesting for the generic branch, where all the
localizations are replaced by templates.
next prev parent reply other threads:[~2009-05-01 14:31 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 [this message]
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
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=20090501142811.GI15420@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.