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

Re: [PATCH] git send-email: allow any rev-list option as an argument.

From
Pierre Habouzit <madcoder@debian.org>
Date
Nov 3, 2008, 09:15 UTC
Message-ID
<20081103091513.GC13930@artemis.corp>
In-Reply-To
<20081102180220.GA5726@sigio.intra.peff.net>
On Sun, Nov 02, 2008 at 06:02:21PM +0000, Jeff King wrote:
Show 15 quoted lines
> On Sun, Nov 02, 2008 at 10:39:07AM +0100, Pierre Habouzit wrote:
> 
> > Well it still messes the file/reference name conflict with no way to
> > prevent it because of the backward compatibility, and even if unlikely
> > it's still possible.
> 
> Hmm. As Junio mentioned, this is really an easier way of doing:
> 
>   git format-patch -o tmp "$@"
>   $EDITOR tmp/*
>   git send-email tmp
> 
> So I guess a wrapper program would suffice, that just called send-email.
> But of course then you would have to think of a new name, and explain
> the confusion between it and send-email.

Well that defeats the purpose of fixing send-email to me. I really would like to see this fixed properly like it should. I mean it makes sense to me to use _three_ commands where one should be enough. Not to mention that introducing a new command is just completely against the spirit of *simplifying* the current UI ;)

Actually I see a few possibilities.
(1) The first one is to pass a --[no]-format-patch flag to
    git-send-email which says that it should understand arguments as
    format-patch arguments.  You add to that a sendemail.format-patch
    setting that would default to false for backward compatibility sake,
    that would allow the user to force --format-patch as a default.
    This would e.g. cleanly allow:  git send-email --format-patch -3 HEAD.
    I would understand if people dislike the setting: it basically
    modifies the behaviour of a git command a lot, which has been
    frowned upon in the past. Even though I would argue than using
    git-send-email in scripting is quite bad, for something that you can
    probably replace with:
    while read patchname; do mail some@where.org < $patchname; done < git format-patch "$@"
    But if people think it's too dangerous, replacing it with a short
    switch so that it's not too painful to use would fly for me,
    something like -F or whatever.
(2) Another way is to add a --pass-to-format-patch kind of option that
    would take its arguments and pass it to git-format-patch. Like in:
    git send-email --pass-to-format-patch "-3 HEAD". (Of course a short
    switch would help ;p).
(3) Use -- for mandatory separating <format-patch> arguments like this:
	git send-email [send-email options] -- -3 HEAD
    or if you want to send patches that would modify only a given path:
        git send-email [s-e options] -- origin/next.. -- git-gui
    that would run internally:
        git format-patch origin/next.. -- git-gui

I would say that I dislike (2) a LOT because it's a pain to use: needs a lot of quoting, and it gets worse if you want to pass things with spaces in it to format-patch.

(2) has the small drawback of not being 100% backward compatible: with the current use of perl Getoptions, -- is used to stop options processing, and people _may_ have used it to do `git s-e -- --my.patch` and such a use would break. However this is highly unlikely to cause issues in real life I think (unlike the problem of refs against filename clashes).

In (1) people may dislike the idea of a setting, I've not strong feelings about it, I won't mind if it gets rejected, a short switch will do just fine then.

As a summary, I'd say that I like both (1) and (3) because those are handy, short, and either completely or mostly backward compatible. My way would be to go down (1) and add a alias.s-e = !git send-email -F in my .gitconfig.

What do you think ?
-- 
·O·  Pierre Habouzit
··O                                                madcoder@debian.org
OOO                                                http://www.madism.org
Previous: Jeff KingNext: Junio C Hamano
Message 13 of 62 in “git send-email improvements”
  1. Pierre HabouzitOct 31, 2008
  2. 1/3 git send-email: avoid leaking directory file descriptors.Pierre Habouzit, Oct 31, 2008
  3. 2/3 git send-email: interpret unknown files as revision listsPierre Habouzit, Oct 31, 2008
  4. 3/3 git send-email: add --annotate optionPierre Habouzit, Oct 31, 2008
  5. Ian HiltOct 31, 2008
  6. Junio C HamanoNov 2, 2008
  7. Pierre HabouzitNov 2, 2008
  8. Matthieu MoyNov 3, 2008
  9. git send-email: allow any rev-list option as an argument.Pierre Habouzit, Oct 31, 2008
  10. Jeff KingNov 2, 2008
  11. Pierre HabouzitNov 2, 2008
  12. Jeff KingNov 2, 2008
  13. Pierre HabouzitNov 3, 2008
  14. Junio C HamanoNov 4, 2008
  15. Pierre HabouzitNov 4, 2008
  16. Jeff KingNov 2, 2008
  17. Further enhancement proposal for git-send-emailPierre Habouzit, Oct 31, 2008
  18. 1/3 git send-email: make the message file name more specific.Pierre Habouzit, Oct 31, 2008
  19. 2/3 git send-email: do not ask questions when --compose is used.Pierre Habouzit, Oct 31, 2008
  20. 3/3 git send-email: turn --compose on when more than one patch.Pierre Habouzit, Oct 31, 2008
  21. Ian HiltOct 31, 2008
  22. Pierre HabouzitOct 31, 2008
  23. Ian HiltOct 31, 2008
  24. Ian HiltNov 1, 2008
  25. Pierre HabouzitNov 1, 2008
  26. Ian HiltNov 1, 2008
  27. Pierre HabouzitNov 1, 2008
  28. Francis GaliegueNov 1, 2008
  29. Pierre HabouzitNov 1, 2008
  30. Francis GaliegueNov 1, 2008
  31. Ian HiltNov 1, 2008
  32. Junio C HamanoNov 2, 2008
  33. Pierre HabouzitNov 2, 2008
  34. Ian HiltNov 2, 2008
  35. Pierre HabouzitNov 3, 2008
  36. [take 2] git send-email updatesPierre Habouzit, Nov 4, 2008
  37. 1/5 git send-email: make the message file name more specific.Pierre Habouzit, Nov 4, 2008
  38. 2/5 git send-email: interpret unknown files as revision listsPierre Habouzit, Nov 4, 2008
  39. 3/5 git send-email: add --annotate optionPierre Habouzit, Nov 4, 2008
  40. 4/5 git send-email: ask less questions when --compose is used.Pierre Habouzit, Nov 4, 2008
  41. 5/5 git send-email: turn --compose on when more than one patch.Pierre Habouzit, Nov 4, 2008
  42. Junio C HamanoNov 4, 2008
  43. Jeff KingNov 5, 2008
  44. Junio C HamanoNov 5, 2008
  45. Pierre HabouzitNov 5, 2008
  46. Junio C HamanoNov 5, 2008
  47. Junio C HamanoNov 9, 2008
  48. Francis GaliegueNov 4, 2008
  49. Junio C HamanoNov 4, 2008
  50. Junio C HamanoNov 4, 2008
  51. [take 2] git send-email updatesPierre Habouzit, Nov 10, 2008
  52. 1/4 git send-email: make the message file name more specific.Pierre Habouzit, Nov 10, 2008
  53. 2/4 git send-email: interpret unknown files as revision listsPierre Habouzit, Nov 10, 2008
  54. 3/4 git send-email: add --annotate optionPierre Habouzit, Nov 10, 2008
  55. 4/4 git send-email: ask less questions when --compose is used.Pierre Habouzit, Nov 10, 2008
  56. Junio C HamanoNov 12, 2008
  57. Junio C HamanoNov 11, 2008
  58. Pierre HabouzitNov 11, 2008
  59. Junio C HamanoNov 12, 2008
  60. Re* [take 2] git send-email updatesJunio C Hamano, Nov 13, 2008
  61. Pierre HabouzitNov 15, 2008
  62. Pierre HabouzitNov 15, 2008

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.