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

Re: [PATCH v4] Add default merge options for all branches

From
Junio C Hamano <gitster@pobox.com>
Date
May 4, 2011, 21:35 UTC
Message-ID
<7vei4edu8o.fsf@alter.siamese.dyndns.org>
In-Reply-To
<4DC1A1BC.5010601@dailyvoid.com>
Michael Grubb <devel@dailyvoid.com> writes:
> Well, it certainly serves *my* immediate needs and addresses the
> specific use case that I was originally working on.  Though I think that
> what we've come up with would benefit the codebase in general if for no
> other reason than it lays some ground work for future features...

The discussion was fruitful, I think, and it may have laid the groundwork at the _conceptual level_. I however do not think that the approach the patch takes is generic enough, even if we add globbing of the branch name, to build on other things that can come out of the future directions the discussion suggested.

For example, why does "merge.c" hold the parser for "branch.*.*", when there are a lot more configuration variables that apply per branch that are totally unrelated to merge? Don't these branch.*.* variables benefit from having a wildcard support as well? If we wanted to add such support, which configuration parser should be called by many pgorams that deal with branches (e.g. "checkout -b", "branch", "fetch", ...), and where that parser should be defined in? I suspect the answer might be "branch.c", but I do not htink we explored the uses widely enough to make that decision yet.

Even if I limit the discussion to "mergeoptions" [*1*], why can I specify the merge options based on what branch I am currently on, but not based on what branch I am merging to my current branch? When on master branch, should branch.*.mo augument what I have in branch.master.mo, or should it overwrite it? I may want to say "all my merges should use --log" and "when on master I want --no-ff". Should branch.master.mo repeat "--log", or should the values on the two variables automatically combine? If so in what order? Am I allowed to say "Use 5 lines of --log" for generic one, and then "Use 10 more lines of --log than generic" for branch.master.mo, so that later I can easily change my mind and update branch.*.mo to use 10 lines, and I get automatically 20 lines for the master branch? If not why not?

etc.etc.etc....

I am not saying some of these issues are unsolvable, nor we should solve all these problems right now, but I do not think these issues are something you are trying to solve with this patch, nor the approach this patch happens to use was designed with these problems in mind (I certainly didn't, when I made many suggestions I see in this round of your patch) to become a foundation to solve them in the future.

The suggestion by Jonathan does not have such a design issue that requires us to open a huge can of worms right now and potentially result in a solution that is overengineered to address a wrong problem [*2*].

If it solves the original issue without such downsides, that would be more preferrable, I think; no?

[Footnote]

*1* I personally think "branch.<name>.mergeoptions" was a mistake. If it were separate "branch.<name>.merge-ff", "branch.<name>.merge-log", ... it might have been more clear what the combining semantics should be. But that is not going to change, so I'd rather not to extend the support for it, until we come up with something more sensible.

*2* For example, globbing to match the current branch name could become an overengineered solution to a wrong problem, if it turns out that it is not useful to decide things based solely on the current branch name.

Previous: Michael GrubbNext: John Szakmeister
Message 21 of 46 in “Add default merge options for all branches”
  1. Add default merge options for all branchesMichael Grubb, May 2, 2011
  2. Miklos VajnaMay 2, 2011
  3. Junio C HamanoMay 2, 2011
  4. Michael GrubbMay 3, 2011
  5. Add default merge options for all branchesMichael Grubb, May 3, 2011
  6. Jonathan NiederMay 3, 2011
  7. Jonathan NiederMay 3, 2011
  8. Michael GrubbMay 3, 2011
  9. Junio C HamanoMay 3, 2011
  10. Michael GrubbMay 3, 2011
  11. Jonathan NiederMay 3, 2011
  12. Jens LehmannMay 3, 2011
  13. Add default merge options for all branchesMichael Grubb, May 3, 2011
  14. Michael GrubbMay 3, 2011
  15. Jonathan NiederMay 3, 2011
  16. Junio C HamanoMay 3, 2011
  17. Junio C HamanoMay 4, 2011
  18. Michael GrubbMay 4, 2011
  19. Jonathan NiederMay 4, 2011
  20. Michael GrubbMay 4, 2011
  21. Junio C HamanoMay 4, 2011
  22. John SzakmeisterMay 4, 2011
  23. Junio C HamanoMay 3, 2011
  24. Add default merge options for all branchesMichael Grubb, May 3, 2011
  25. Add default merge options for all branchesMichael Grubb, May 4, 2011
  26. Junio C HamanoMay 5, 2011
  27. Junio C HamanoMay 6, 2011
  28. Jonathan NiederMay 6, 2011
  29. 0/2 tests: make verify_merge check that the number of parents is rightJonathan Nieder, May 6, 2011
  30. 1/2 tests: eliminate unnecessary setup test assertionsJonathan Nieder, May 6, 2011
  31. Jeff KingMay 6, 2011
  32. Jeff KingMay 6, 2011
  33. Junio C HamanoMay 6, 2011
  34. Jeff KingMay 6, 2011
  35. Junio C HamanoMay 7, 2011
  36. 0/3 blame --line-porcelainJeff King, May 9, 2011
  37. 1/3 add tests for various blame formatsJeff King, May 9, 2011
  38. 2/3 blame: refactor porcelain outputJeff King, May 9, 2011
  39. Thiago FarinaMay 9, 2011
  40. 3/3 blame: add --line-porcelain output formatJeff King, May 9, 2011
  41. Jonathan NiederMay 6, 2011
  42. 2/2 tests: teach verify_parents to check for extra parentsJonathan Nieder, May 6, 2011
  43. Junio C HamanoMay 6, 2011
  44. Jonathan NiederMay 6, 2011
  45. Jonathan NiederMay 6, 2011
  46. Junio C HamanoMay 6, 2011

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.