From: Junio C Hamano <junkio@cox.net>
To: Eric Wong <normalperson@yhbt.net>
Cc: Joakim Tjernlund <joakim.tjernlund@transmode.se>,
Steven Grimm <koreth@midwinter.com>,
git@vger.kernel.org
Subject: Re: git-svn set-tree bug
Date: Sun, 10 Jun 2007 22:52:38 -0700 [thread overview]
Message-ID: <7vir9vox5l.fsf@assigned-by-dhcp.cox.net> (raw)
In-Reply-To: <20070611042509.GA19866@muzzle> (Eric Wong's message of "Sun, 10 Jun 2007 21:25:09 -0700")
Eric Wong <normalperson@yhbt.net> writes:
> Joakim Tjernlund <joakim.tjernlund@transmode.se> wrote:
>> > -----Original Message-----
>> > From: Steven Grimm [mailto:koreth@midwinter.com]
>> > Sent: den 11 juni 2007 01:37
>> > To: Joakim Tjernlund
>> > Cc: 'Eric Wong'; 'git'
>> > Subject: Re: git-svn set-tree bug
>> >
>> > Joakim Tjernlund wrote:
>> > > Is there a way to tell set-tree to commit the whole "merge" branch
>> > > as one svn commit?
>> > > If I merge the latest kernel into my tree there will
>> > > be a lot of commits that I don't want in svn.
>> > >
>> >
>> > You want a "squash" merge. Something like this:
>> >
>> > git checkout -b tempbranch origin/svn-branch-to-commit-merge-to
>> > git merge --squash branch-with-commits-you-want-to-merge
>> > git commit
>> > git svn dcommit
>> >
>> > The "merge" command will merge in the changes but will not commit
>> > anything; when you do the explicit "commit" command
>> > afterwards, you get
>> > the contents of the merge but from git's point of view it's just a
>> > regular commit so git-svn doesn't get confused.
>> >
>> > After you do git svn dcommit, you may want to edit
>> > .git/info/grafts to
>> > tell git after the fact that this commit was a merge. It won't hurt
>> > git-svn at that point and it will mean you can do another merge later
>> > without git getting confused about what has already been merged.
>> >
>> > Take a look at the script I posted a while back, which does something
>> > similar:
>> >
>> > http://www.spinics.net/lists/git/msg29119.html
>
> I must have missed this message the first time around.
>
>> Hi Steven
>>
>> That looks promising, especially Junos comment about making git-svn
>> able to deal with merges. Eric, do you feel this is doable?
>
> Doable? Yes. However, I think using grafts is quite hackish and
> unreliable[1]. I'd rather just have users using set-tree if
> they want to deal with non-linear history in the first place.
>
> I'd personally avoid any sort of non-linear history when interacting
> with SVN repositories, however.
I've been wondering if you can do a moral equilvalent of the
graft trick but without using graft inside dcommit. Perform a
merge --squash of the other branch (call the tip commit $B),
then dcommit on the git side as usual, and call it commit $C.
Steven's procedure would do a graft trick here, but instead of
doing that, rewrite $C to have the two parents. Using the tree
object of $C, create a new git commit $D that is a merge between
the parent of $C (i.e. $C^) and the squashed branch tip $B.
Replace the tip of the current branch (which is $C) with $D.
Finally, replace the mapping between svn commit and git side
recorded in the revdb (which currently says $C on the git side
corresponds to the HEAD of SVN side) with this new commit $D.
Wouldn't that let the git side know what was merged into the
branch, so that later merges on the git side would go smoothly?
Or am I grossly misunderstanding how dcommit, tracking of svn vs
git commit mappings and the graft trick work?
next prev parent reply other threads:[~2007-06-11 5:52 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-08 17:25 git-svn set-tree bug Joakim Tjernlund
2007-06-10 1:47 ` Eric Wong
2007-06-10 17:21 ` Joakim Tjernlund
2007-06-10 17:27 ` Joakim Tjernlund
2007-06-10 21:33 ` Eric Wong
2007-06-10 23:27 ` Joakim Tjernlund
2007-06-10 23:37 ` Steven Grimm
2007-06-10 23:55 ` Joakim Tjernlund
2007-06-11 4:25 ` Eric Wong
2007-06-11 5:52 ` Junio C Hamano [this message]
2007-06-12 7:20 ` Eric Wong
2007-06-12 7:34 ` Junio C Hamano
2007-06-12 8:39 ` Eric Wong
2007-06-12 9:21 ` Joakim Tjernlund
2007-06-12 12:15 ` Steven Grimm
2007-06-13 9:23 ` [PATCH] git-svn: allow dcommit to retain local merge information Eric Wong
2007-06-13 17:13 ` Joakim Tjernlund
2007-06-13 23:17 ` Joakim Tjernlund
2007-06-20 7:04 ` Eric Wong
2007-06-20 6:56 ` Eric Wong
2007-06-21 16:54 ` Joakim Tjernlund
2007-07-01 13:09 ` Joakim Tjernlund
2007-06-14 6:30 ` Steven Grimm
2007-06-22 11:55 ` Joakim Tjernlund
2007-06-12 8:04 ` git-svn set-tree bug Lars Hjemli
2007-06-11 6:58 ` Steven Grimm
2007-06-11 8:52 ` Joakim Tjernlund
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=7vir9vox5l.fsf@assigned-by-dhcp.cox.net \
--to=junkio@cox.net \
--cc=git@vger.kernel.org \
--cc=joakim.tjernlund@transmode.se \
--cc=koreth@midwinter.com \
--cc=normalperson@yhbt.net \
/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).