From: Jonathan Nieder <jrnieder@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: Christian Couder <chriscool@tuxfamily.org>,
Paolo Bonzini <bonzini@gnu.org>,
Marc Branchaud <marcnarc@xiplink.com>,
git@vger.kernel.org
Subject: Re: cc/cherry-pick-ff
Date: Sat, 20 Mar 2010 17:09:14 -0500 [thread overview]
Message-ID: <20100320220914.GA31098@progeny.tock> (raw)
In-Reply-To: <7v1vffqdm4.fsf@alter.siamese.dyndns.org>
Junio C Hamano wrote:
> Christian Couder <chriscool@tuxfamily.org> writes:
>> ... if we implement "git cherry-pick A..B", and if many people
>> start to use it, then perhaps it will make sense for --ff to become the
>> default.
>
> That doesn't make any sense to me.
>
> Think why you are saying A..B, with an explicit "A".
>
> It is because you know it is different from HEAD; otherwise you would have
> done "git merge B"---slurp all changes between HEAD..B, which would be
> equivalent to "cherry-pick --ff HEAD..B".
In a project that is deeply dedicated to a linear history, the workflow
might be something like this:
contributor:
hack hack hack
git commit
...
git pull --rebase upstream; # Rebase for submission upstream.
git push +HEAD:topic
upstream:
git pull --cherry-pick contributor1 topic
git pull --cherry-pick contributor2 other-topic
...
run tests
git push master
Here, “git pull --cherry-pick remote branch” is shorthand for
“git fetch remote branch && git cherry-pick --ff HEAD..FETCH_HEAD”.
It is not always a fast-forward because contributors’ changes can be
based on an out-of-date upstream version.
This imposes all the conflict resolution trouble on upstream and blames
the result on the contributors, which may be what some people want
(especially if upstream and the contributors are all the same person).
> But running cherry-pick as the top-level operation is a conscious act of
> "I want to replay the change done by that one", and it would be utterly
> confusing if it fast-forwarded by default.
All that said, I still agree with this conclusion. It is only a gut
feeling. I could be convinced in the future, but I do not want to
impose the imagined work of adding --no-ff to scripts until it is clear
it is the right thing to do.
One way to avoid trouble: add a --no-ff option, but make it mean
“negates any previous --ff option on the same command line”. This
way, _if_ we decide to ask in the release notes for 1.8 for people to
add --no-ff to their scripts in preparation for 1.9, then they can do
so without breaking compatibility with git 1.7.1 (and without adding a
version check).
Cheers,
Jonathan
next prev parent reply other threads:[~2010-03-20 22:09 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-17 6:37 What's cooking in git.git (Mar 2010, #04; Tue, 16) Junio C Hamano
2010-03-17 9:52 ` cc/cherry-pick-ff (Re: What's cooking in git.git (Mar 2010, #04; Tue, 16)) Jonathan Nieder
2010-03-17 17:01 ` Junio C Hamano
2010-03-18 0:38 ` Christian Couder
2010-03-18 7:14 ` Paolo Bonzini
2010-03-20 14:20 ` Junio C Hamano
2010-03-20 22:09 ` Jonathan Nieder [this message]
2010-03-22 3:03 ` 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=20100320220914.GA31098@progeny.tock \
--to=jrnieder@gmail.com \
--cc=bonzini@gnu.org \
--cc=chriscool@tuxfamily.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=marcnarc@xiplink.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).