git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Improving merge messages for 1.7.10 and making "pull" easier

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Feb 25, 2012, 09:27 UTC
Message-ID
<CACBZZX7rejo-fXdLp9SNU=KpVs+1gk=ux=aEqJcN38B+pXi2tQ@mail.gmail.com>
In-Reply-To
<7vy5rsyq9w.fsf@alter.siamese.dyndns.org>
On Fri, Feb 24, 2012 at 20:39, Junio C Hamano <gitster@pobox.com> wrote:
Show 12 quoted lines
> Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:
>
>> Firstly (and as a more general thing) I think we should add a mention
>> of "git merge --abort" to the message, just saving an empty file is
>> not sufficient to fully clear the merge state:
>
> Makes sense, but the new message does not quite parse.
>
>>> "Lines starting with '#' will be ignored, and an empty message followed\n"
>>> "by 'git merge --abort' the merge.\n");
>
> Perhaps s/the merge/aborts &/ or something.
Yeah, it needs better wording.
Show 14 quoted lines
>> Additionally, perhaps it would be a good idea to:
>>
>>  * Detect if the user didn't run this explicitly but implicitly from a
>>    "git pull". We could pass some env var along or another option
>>    (e.g. --internal-from-porcelain=pull) and add this:
>>
>>        You've merged implicitly via a "git pull", if you're just
>>        updating some local work in progress to keep up with upstream
>>        you may want to use "git pull --rebase" instead (or set the
>>        pull.rebase configuration variable) to rebase instead of merge.
>
> Won't this message be given to _all_ users of "git pull", even to the ones
> who already have decided correctly that "pull" is the right thing in their
> situation?  With a new advice.* settings to squelch it, perhaps.
Yeah, I'm not sure it's a good idea to add it given that.
Show 35 quoted lines
>>  * Explicitly check if we're merging an updated upstream into the
>>    work-in-progress topic,...
>
> It might be a worthy goal, but how would we detect it?  A few examples
> that we shouldn't give an unhelpful advice with a false positive are
> merges into:
>
>  - The 'master' branch used by people who use Git as an improved CVS, when
>   they do an equivalent of 'cvs update'.  Merging the updated 'master'
>   from the central repository into their 'master' that contains their
>   work that may or may not be ready to be pushed back is how their
>   project works.  It is a norm for them to make such a merge, even though
>   more experienced people may prefer to see the history of their project
>   kept cleaner by suggesting their project participants to use their own
>   topic branches.
>
>  - Integration branches like my 'next', when it gets a merge from
>   'master'. This is "merging an updated upstream" but is done in order to
>   keep the promise that 'next' would contain everything in 'master'.
>
> And what alternative would we offer?  If we were to suggest "rebase", we
> would also need to consider the topic of the other a-couple-of-days-old
> thread to detect which part of history is no longer subject to rewrite.
>
>> I work with a lot of inexperienced git users and a lot of them are
>> going to be very confused by this change. I still think it's a good
>> change to make, but we could do a lot more to mitigate the inevitable
>> confusion.
>
> What exact change are you talking about with "this change"?  Earlier you
> had a chance to edit the merge log only when it needed your help resolving
> (hence you did a separate "git commit" to record it) but you had to "git
> commit --amend" (or start with "git merge --no-commit") to edit the merge
> log if it did not need any help resolving conflicts, but now you do not
> have to.  Is that the change you have in mind?
Yes, or more explicitly if you do:
  git commit
  <your upstream moves forward>
  git pull

You'll now be presented with an editor asking you to enter a merge message, whereas before it just silently created a merge commit.

> I would like to know how that would lead to an "inevitable confusion".
> Admittedly, the original without any "# Please do X" comment, the user may
> wonder what is being asked of him when he sees the editor for the first
> time, but I thought Thomas's patch took care of that issue.

I mean that people who use this babytalk subset of git and have been doing so for months/years without having editor dialogs pop up every time they pull are going to be confused when that suddenly starts happening.

Show 10 quoted lines
>> One thing that would help these users in particular would be to have
>> some easy to use replacement for their frequent use of "git
>> pull".
>
> After this part, I think you shifted into a different topic.
>
> I have mixed feelings about "rebase your unpublished work and keep it
> always a descendant of the upstream" workflow you seem to be advocating.
> It _might_ deserve a bit more visibility, but I do not think rewording
> this message done during "merge" is the place to do so.
Yeah, agreed.
Show 5 quoted lines
>> They don't often commit their work (because of git inexperience) so
>> rebasing will error out because the tree is unclean.
>
> That is a *good* thing, isn't it?  There lies the perfect opportunity for
> them to train their fingers to commit first and then rebase.

That's true, anyway I'll submit an improved patch for adding --abort to the current message. I think the other suggestions either aren't doable or weren't appropriate.

Previous: Junio C Hamano
Message 3 of 3 in “Improving merge messages for 1.7.10 and making "pull" easier”
  1. Ævar Arnfjörð BjarmasonFeb 24, 2012
  2. Junio C HamanoFeb 24, 2012
  3. Ævar Arnfjörð BjarmasonFeb 25, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.