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

Re: [PATCH v2 00/12] add --ff option to cherry-pick

From
Christian Couder <chriscool@tuxfamily.org>
Date
Mar 4, 2010, 06:55 UTC
Message-ID
<201003040755.23485.chriscool@tuxfamily.org>
In-Reply-To
<7vhbowoj8y.fsf@alter.siamese.dyndns.org>
On Thursday 04 March 2010 04:31:25 Junio C Hamano wrote:
Show 15 quoted lines
> Christian Couder <chriscool@tuxfamily.org> writes:
> > I tried to use the checkout_fast_forward() function from builtin/merge.c
> > but unfortunately it doesn't work. It gives an error like that in the
> > tests :
> >
> > error: Your local changes to 'file1' would be overwritten by merge. 
> > Aborting. Please, commit your changes or stash them before you can merge.
> >
> > and I don't really understand why. (Though I didn't spend a lot of time
> > on this.)
> 
> Shouldn't it be something like this?  The patch is still unnecessarily
> large because I wanted to share options between revert and cherry-pick
> while giving --ff only to cherry-pick, but I don't understand why it needs
> a nine patch series worth of code churn.

Please have another look at the patch series and realize that only the first 4 patches are (trivial) refactoring (that you call "code churn"), so I think it's not fair at all to say that it's "a nine patch series worth of code churn".

And it used to be accepted to do some refactoring, and IMHO some reasonable amount of refactoring is good, as long as it is well done of course. So there is no problem if you criticize the amount in term of line of codes or if you criticize the quality of refactoring. But I don't think the patch count is right metric (especially when applied to the whole series).

Show 10 quoted lines
> +static int fast_forward_to(const unsigned char *to, const unsigned char
>  *from) +{
> +	struct ref_lock *ref_lock;
> +
> +	read_cache();
> +	if (checkout_fast_forward(from, to))
> +		exit(1); /* the callee should have complained already */
> +	ref_lock = lock_any_ref_for_update("HEAD", from, 0);
> +	return write_ref_sha1(ref_lock, to, "cherry-pick");
> +}

Ok, so your patch adds new code to do the job, while my refactoring patches only move existing code into new functions. So I think the net result is that your patch in fact increases the complexity of the code base and duplicates existing functionality, while my patches reuse and increase readability of existing code.

Now it's true that your patch adds a very small amount of new code and maybe I am missing many things and your patch is much better for many reasons that I can't see. If that is the case I am sorry to be so stupid.

I also agree that it might not be the right time for refactoring, and that it's more work for reviewers, especially yourself, and you (and other reviewers) probably just need less work and not more, but in the long run I think that reusing existing code is better as that means less maintenance work.

Best regards, Christian.

Previous: Junio C HamanoNext: Junio C Hamano
Message 20 of 24 in “add --ff option to cherry-pick”
  1. 00/12 add --ff option to cherry-pickChristian Couder, Feb 28, 2010
  2. 01/12 revert: libify cherry-pick and revert functionnalityChristian Couder, Feb 28, 2010
  3. 02/12 pick: refactor checking parent in a check_parent functionChristian Couder, Feb 28, 2010
  4. 03/12 pick: make check_parent function externChristian Couder, Feb 28, 2010
  5. 04/12 pick: move calling check_parent() ouside pick_commit()Christian Couder, Feb 28, 2010
  6. 05/12 reset: refactor updating heads into a static functionChristian Couder, Feb 28, 2010
  7. 06/12 reset: refactor reseting in its own functionChristian Couder, Feb 28, 2010
  8. 07/12 reset: make reset function non static and declare it in "reset.h"Christian Couder, Feb 28, 2010
  9. 08/12 revert: add --ff option to allow fast forward when cherry-pickingChristian Couder, Feb 28, 2010
  10. 09/12 cherry-pick: add tests for new --ff optionChristian Couder, Feb 28, 2010
  11. 10/12 Documentation: describe new cherry-pick --ff optionChristian Couder, Feb 28, 2010
  12. 11/12 cherry-pick: add a no-op --no-ff option to future proof scriptsChristian Couder, Feb 28, 2010
  13. 12/12 rebase -i: use new --ff cherry-pick optionChristian Couder, Feb 28, 2010
  14. Junio C HamanoMar 1, 2010
  15. Daniel BarkalowMar 1, 2010
  16. Christian CouderMar 1, 2010
  17. Junio C HamanoMar 1, 2010
  18. Christian CouderMar 4, 2010
  19. Junio C HamanoMar 4, 2010
  20. Christian CouderMar 4, 2010
  21. Junio C HamanoMar 4, 2010
  22. Jonathan NiederMar 21, 2010
  23. Johannes SixtMar 1, 2010
  24. Paolo BonziniMar 1, 2010

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.