From: Jens Lehmann <Jens.Lehmann@web.de>
To: David Aguilar <davvid@gmail.com>
Cc: Junio C Hamano <gitster@pobox.com>,
git@vger.kernel.org, Sebastian Schuberth <sschuberth@gmail.com>,
Heiko Voigt <hvoigt@hvoigt.net>
Subject: Re: Re*: mergetool: support --tool-help option like difftool does
Date: Sun, 26 Aug 2012 20:38:22 +0200 [thread overview]
Message-ID: <503A6D1E.5070909@web.de> (raw)
In-Reply-To: <CAJDDKr6zk3ztEXeX8=vn3apZ3k1DxdCAu2ZDyqtNnb=Cb5ZUvQ@mail.gmail.com>
Am 24.08.2012 10:31, schrieb David Aguilar:
> On Thu, Aug 23, 2012 at 10:39 AM, Junio C Hamano <gitster@pobox.com> wrote:
>> David Aguilar <davvid@gmail.com> writes:
>>> Would the ability to resolve the various merge situations using
>>> the command-line be a wanted addition?
>>>
>>> This would let a submodule or deleted/modified encountering
>>> user do something like:
>>>
>>> $ git mergetool --theirs -- submodule
>>>
>>> ...and not have to remember the various git commands that it runs.
>>
>> Does it have to run various git commands? For a normal path, all it
>> needs to do is "git checkout --theirs $path", no?
>>
>> What does it mean to resolve a conflicted merge of a gitlink to take
>> "theirs"? We obviously would want to point the resolved gitlink at
>> the submodule commit their side wants in the resulting index but what,
>> if any, should we do to the submodule itself?
>>
>> Stepping back a bit, if there is no conflict, and as a result of a
>> clean merge (this applies to the case where you check out another
>> branch that has different commit at the submodule path), if gitlink
>> changed to point at a different commit in the submodule, what should
>> happen?
>>
>> If you start from a clean working tree, with your gitlink pointing
>> at the commit that matches HEAD in the submodule, and if the working
>> tree of the submodule does not have any local modification, it may
>> be ideal to check out the new commit in the submodule (are there
>> cases where "git checkout other_branch" in the superproject does not
>> want to touch the submodule working tree?).
>>
>> There are cases where it is not possible; checking out the new
>> commit in the submodule working tree may not succeed due to local
>> modifications. But is that kind of complication limited to the
>> merge resolution case? Isn't it shared with normal "switching
>> branches" case as well?
>>
>> If so, it could be that your "git mergetool --theirs -- submodule"
>> is working around a wrong problem, and the right solution may be to
>> make "git checkout --theirs -- $path" to always do an appropriate
>> thing regardless of what kind of object $path is, no?
>
> True.
I agree.
> Admittedly, I'm not a heavy submodule user myself so I
> tried crafting the directory vs submodule conflict to see
> what the usability is like.
>
> checkout --theirs and --ours could learn a few tricks.
Me thinks that after I successfully taught checkout to properly
recurse into submodule work trees too it should know all those
tricks. In my current version it can handle directory/submodule
conversions in both directions, this should be sufficient to
make "checkout --theirs/--ours" work properly. Note to self: add
tests for that.
> When trying to choose the directory in that situation
> I had to had to "git rm --cached" the submodule path
> so that git would recognize that there was no longer a conflict.
>
> That makes sense to me because I was following along by
> reading the mergetool code, but I don't think most users
> would know to "git rm" a path which they intend to keep.
True. But a submodule recursing checkout would do the right thing
here too.
> Afterwards, the .git file is left behind, which could cause
> problems elsewhere since we really don't want a .git file
> in that situation.
Hmm, either you remove all the files tracked in the submodule
together with the gitfile or you'll possibly have former submodule
files lying around there too. Recursive checkout will do all that
for you.
> I'm not even sure what to do about the
> .gitmodules file either.
Maybe we should issue a warning when the .gitmodules file is not
consistent with the [non]existence of a submodule in the work tree?
> That said, this really isn't an issue, per say.
> I first poked at it because I noticed that mergetool
> still needed stdin for some things.
>
> It's certainly an edge case, and perhaps this just shows
> that mergetool really is the right porcelain for the job
> when a user runs into these types of conflicts
> (the stdin thing really isn't an issue).
It looks to me as if the submodule/directory conflict can be handled
by a recursive checkout without having to add something to mergetool.
next prev parent reply other threads:[~2012-08-26 18:39 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-23 7:10 [PATCH 0/4] Various merge / diff tool related minor clean-ups and improvements Sebastian Schuberth
2012-07-23 7:14 ` [PATCH v2 0/5] " Sebastian Schuberth
2012-07-23 7:17 ` [PATCH v2 1/5] Sort the list of tools that support both merging and diffing alphabetically Sebastian Schuberth
2012-07-23 7:18 ` [PATCH v2 2/5] Use variables for the lists of tools that support merging / diffing Sebastian Schuberth
2012-07-23 16:46 ` Junio C Hamano
2012-07-23 18:30 ` Sebastian Schuberth
2012-07-23 18:32 ` [PATCH 1/4] " Sebastian Schuberth
2012-07-23 18:37 ` [PATCH v2 2/5] " Junio C Hamano
2012-07-23 19:03 ` Sebastian Schuberth
2012-07-23 7:18 ` [PATCH 3/5] Explicitly list all valid diff tools and document --tool-help as an option Sebastian Schuberth
2012-07-23 16:48 ` Junio C Hamano
2012-07-23 17:21 ` mergetool: support --tool-help option like difftool does Junio C Hamano
2012-07-23 18:56 ` Sebastian Schuberth
2012-07-23 18:58 ` [PATCH] " Sebastian Schuberth
2012-07-23 19:52 ` Junio C Hamano
2012-07-23 20:14 ` Sebastian Schuberth
2012-07-23 20:44 ` David Aguilar
2012-07-23 21:16 ` Junio C Hamano
2012-07-23 21:27 ` Sebastian Schuberth
2012-07-23 22:31 ` Junio C Hamano
2012-08-23 5:33 ` Re*: " Junio C Hamano
2012-08-23 7:39 ` David Aguilar
2012-08-23 17:39 ` Junio C Hamano
2012-08-24 8:31 ` David Aguilar
2012-08-26 18:38 ` Jens Lehmann [this message]
2012-07-23 7:19 ` [PATCH v2 4/5] Make sure to use Araxis' "compare" and not e.g. ImageMagick's Sebastian Schuberth
2012-07-23 16:50 ` Junio C Hamano
2012-07-23 19:37 ` [PATCH] " Sebastian Schuberth
2012-07-23 20:47 ` Junio C Hamano
2012-07-23 21:09 ` Sebastian Schuberth
2012-07-23 21:24 ` Junio C Hamano
2012-07-23 21:31 ` Sebastian Schuberth
2012-07-23 21:34 ` David Aguilar
2012-07-23 21:44 ` Sebastian Schuberth
2012-07-23 21:26 ` Andreas Schwab
2012-07-23 22:22 ` Junio C Hamano
2012-07-23 22:39 ` Sebastian Schuberth
2012-07-23 22:41 ` Junio C Hamano
2012-07-23 23:09 ` Sebastian Schuberth
2012-07-23 7:20 ` [PATCH v2 5/5] Add a few more code comments and blank lines in guess_merge_tool Sebastian Schuberth
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=503A6D1E.5070909@web.de \
--to=jens.lehmann@web.de \
--cc=davvid@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=hvoigt@hvoigt.net \
--cc=sschuberth@gmail.com \
/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).