From: Jonathan Nieder <jrnieder@gmail.com>
To: Jay Soffian <jaysoffian@gmail.com>
Cc: git@vger.kernel.org, Christian Couder <chriscool@tuxfamily.org>
Subject: Re: [RFC/PATCH 2/2] Teach commit to handle CHERRY_HEAD automatically
Date: Tue, 15 Feb 2011 17:47:35 -0600 [thread overview]
Message-ID: <20110215234735.GA18151@elie> (raw)
In-Reply-To: <AANLkTinZ0ewJy01rV66xMMCKLon=7qz=hoJ3DbtXmtXL@mail.gmail.com>
Hi,
Thanks for a quick response. Some small clarifications.
Jay Soffian wrote:
> On Tue, Feb 15, 2011 at 6:00 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:
>> - "git commit --amend" to say "I'm done fixing the broken thing".
>>
>> - "git commit --fixup=HEAD/--squash=HEAD" to say "done fixing;
>> let's look at this again later and squash it when I am less
>> confused".
>>
>> Both are mistakes if HEAD is the previous and good commit rather than
>> the broken one. Maybe there is some simple safety that could protect
>> against them?
>
> As you see below, this is already protected against.
The first mistake is protected against[*], the second left alone.
(The second seems mostly harmless; just mentioning it for reference.)
[*] which I think is my favorite part of this patch
>>> --reset-author::
>>> + When used with -C/-c/--amend options, or when committing after a
>>> + a conflicting cherry-pick,
>>
>> or when committing after a conflicted merge, no?
>
> No. The person committing a merge is already the author of the merge,
> why would they use --reset-author?
You're right. I find myself occasionally doing the following
git merge --no-commit $branch
... update version number; walk away for a while ...
git commit; # will this use the old timestamp?
git commit --amend --reset-author
out of a vague fear, but I think I was just confused.
>>> declare that the authorship of the
>>> + resulting commit now belongs of the committer. This also renews
>>> + the author timestamp.
>>
>> How does it interact with --author?
>
> No change from before, --author forces the author of the new commit.
Patch below.
[...]
> /* Let message-specifying options override CHERRY_HEAD */
>
> I'll make this logic clearer though as I need to address Junio's
> earlier message.
Ah, good to hear.
>>> + if (cherry_pick)
>>> + fprintf(fp,
>>> + "#\n"
>>> + "# It looks like you may be committing a cherry-pick.\n"
>>
>> Aside: shouldn't we suggest some porcelain-ish command (git merge
>> --clear? git commit --no-merge?) to remove .git/MERGE_HEAD instead of
>> asking the committer to do it?
>
> We have git merge --reset as an alias for reset --merge. Since reset
> --merge takes care of this case too (I think, I'll check) we can
> suggest that for both.
No, I think "git merge --abort" does too much. If we were ready to
commit, we almost surely have precious staged changes that it would
remove.
The cure to a lingering MERGE_HEAD is still "rm -f .git/MERGE_HEAD",
I fear. "git commit --no-merge" (meaning "ignore MERGE_HEAD") seems
tempting.
>> How can I get out of this state if I really do want to amend?
>
> git reset, same as it ever was?
Not obvious at all. Maybe the manpage to cherry-pick could mention
that CHERRY_HEAD is cleared away by git reset?
>> Hmm, what if I have commits F and F' and after trying to cherry-pick F
>> I decide I want the message from F'?
>
> I don't think I understand. commit -c F', or just commit (w/o options)
> and you get MERGE_MSG generated by cherry-pick.
I meant the following sequence of operations:
# by the way, does this set CHERRY_PICK_HEAD?
git cherry-pick --no-commit F
git commit -C F-prime
But that was a silly example --- -C takes care of authorship on its
own. A better example might be
git cherry-pick --no-commit F
git commit -F the-message
or
git cherry-pick --no-commit F
git commit --amend -C F-prime
> Thanks for the feedback!
Thanks for making it happen. :)
Jonathan
next prev parent reply other threads:[~2011-02-15 23:48 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-15 21:23 [RFC/PATCH 0/2] CHERRY_HEAD Jay Soffian
2011-02-15 21:23 ` [RFC/PATCH 1/2] Introduce CHERRY_HEAD Jay Soffian
2011-02-15 22:13 ` Junio C Hamano
2011-02-15 22:18 ` Jonathan Nieder
2011-02-15 22:59 ` Junio C Hamano
2011-02-15 23:02 ` Bert Wesarg
2011-02-15 23:10 ` Junio C Hamano
2011-02-15 23:42 ` Bert Wesarg
2011-02-15 23:07 ` Jay Soffian
2011-02-15 23:08 ` Jonathan Nieder
2011-02-15 21:23 ` [RFC/PATCH 2/2] Teach commit to handle CHERRY_HEAD automatically Jay Soffian
2011-02-15 22:16 ` Jay Soffian
2011-02-15 22:34 ` Junio C Hamano
2011-02-15 23:00 ` Jonathan Nieder
2011-02-15 23:21 ` Jay Soffian
2011-02-15 23:47 ` Jonathan Nieder [this message]
2011-02-16 0:03 ` Jay Soffian
2011-02-16 0:08 ` Jonathan Nieder
2011-02-16 0:05 ` [PATCH] Documentation: clarify interaction of --reset-author with --author Jonathan Nieder
2011-02-16 1:04 ` Junio C Hamano
2011-02-15 21:51 ` [RFC/PATCH 0/2] CHERRY_HEAD Ævar Arnfjörð Bjarmason
2011-02-15 22:10 ` Junio C Hamano
2011-02-15 22:13 ` Jay Soffian
2011-02-15 22:30 ` Ævar Arnfjörð Bjarmason
2011-02-15 22:11 ` Jay Soffian
2011-02-16 1:48 ` Miles Bader
2011-02-17 14:09 ` Christian Couder
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=20110215234735.GA18151@elie \
--to=jrnieder@gmail.com \
--cc=chriscool@tuxfamily.org \
--cc=git@vger.kernel.org \
--cc=jaysoffian@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 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.