Re: cc/cherry-pick-ff

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Junio C Hamano wrote:
> Christian Couder <chriscool@xxxxxxxxxxxxx> 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
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]