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

[PATCH v4 01/13] parse-options.h: add new options `--pathspec-from-file`, `--pathspec-file-nul`

From
AGAlexandr Miloslavskiy via GitGitGadget <gitgitgadget@gmail.com>
Date
Dec 3, 2019, 14:02 UTC
Message-ID
<cca5aee39229d0d54d88c7dae18dafa956473559.1575381738.git.gitgitgadget@gmail.com>
In-Reply-To
<pull.445.v4.git.1575381738.gitgitgadget@gmail.com>
From: Alexandr Miloslavskiy <alexandr.miloslavskiy@syntevo.com>

Support for various porcelain commands will arrive via additional patches.

`--pathspec-from-file` solves the problem of commandline length limit
for UIs built on top of git. Plumbing commands are not always a good
fit, for two major reasons:
1) Some UIs show executed commands to user. In this case, porcelain
   commands are expected. One reason for that is letting user learn git
   commands by clicking UI buttons. The other reason is letting user
   study the history of commands in case of any unexpected results. Both
   of these will lose most of their value if UI uses combinations of
   arcane plumbing commands.
2) Some UIs have started and grown with porcelain commands. Replacing
   existing logic with plumbing commands could be cumbersome and prone
   to various new problems.

`--pathspec-from-file` will behave very close to pathspec passed in commandline args, so that switching from one to another is simple.

`--pathspec-from-file` will read either a specified file or `stdin` (when file is exactly "-"). Reading from file is a good way to avoid competing for `stdin`, and also gives some extra flexibility.

`--pathspec-file-nul` switch mirrors `-z` already used in various places. Some porcelain commands, such as `git commit`, already use `-z`, therefore it needed a new unambiguous name.

New options do not have shorthands to avoid shorthand conflicts. It is not expected that they will be typed in console.

Signed-off-by: Alexandr Miloslavskiy <alexandr.miloslavskiy@syntevo.com>
---
 parse-options.h | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/parse-options.h b/parse-options.h
index 38a33a087e..c6cc01e715 100644
--- a/parse-options.h
+++ b/parse-options.h
@@ -330,5 +330,7 @@ int parse_opt_passthru_argv(const struct option *, const char *, int);
 #define OPT_WITH(v, h) _OPT_CONTAINS_OR_WITH("with", v, h, PARSE_OPT_HIDDEN | PARSE_OPT_NONEG)
 #define OPT_WITHOUT(v, h) _OPT_CONTAINS_OR_WITH("without", v, h, PARSE_OPT_HIDDEN | PARSE_OPT_NONEG)
 #define OPT_CLEANUP(v) OPT_STRING(0, "cleanup", v, N_("mode"), N_("how to strip spaces and #comments from message"))
+#define OPT_PATHSPEC_FROM_FILE(v) OPT_FILENAME(0, "pathspec-from-file", v, N_("read pathspec from file"))
+#define OPT_PATHSPEC_FILE_NUL(v)  OPT_BOOL(0, "pathspec-file-nul", v, N_("with --pathspec-from-file, pathspec elements are separated with NUL character"))
 
 #endif
-- 
gitgitgadget
Previous: Alexandr Miloslavskiy via GitGitGadgetNext: Alexandr Miloslavskiy via GitGitGadget
Message 64 of 80 in “Add --pathspec-from-file option for reset, commit”
  1. 0/5 Add --pathspec-from-file option for reset, commitAlexandr Miloslavskiy via GitGitGadget, Nov 4, 2019
  2. 1/5 pathspec: add new function to parse fileAlexandr Miloslavskiy via GitGitGadget, Nov 4, 2019
  3. Phillip WoodNov 5, 2019
  4. Alexandr MiloslavskiyNov 5, 2019
  5. Alexandr MiloslavskiyNov 6, 2019
  6. 3/5 reset: support the --pathspec-from-file optionAlexandr Miloslavskiy via GitGitGadget, Nov 4, 2019
  7. Phillip WoodNov 5, 2019
  8. Phillip WoodNov 5, 2019
  9. Alexandr MiloslavskiyNov 5, 2019
  10. Alexandr MiloslavskiyNov 6, 2019
  11. Phillip WoodNov 5, 2019
  12. Alexandr MiloslavskiyNov 5, 2019
  13. Junio C HamanoNov 6, 2019
  14. Alexandr MiloslavskiyNov 6, 2019
  15. 4/5 doc: commit: unify <pathspec> descriptionAlexandr Miloslavskiy via GitGitGadget, Nov 4, 2019
  16. Junio C HamanoNov 6, 2019
  17. Alexandr MiloslavskiyNov 6, 2019
  18. Junio C HamanoNov 7, 2019
  19. Alexandr MiloslavskiyNov 7, 2019
  20. 5/5 commit: support the --pathspec-from-file optionAlexandr Miloslavskiy via GitGitGadget, Nov 4, 2019
  21. Phillip WoodNov 5, 2019
  22. Alexandr MiloslavskiyNov 5, 2019
  23. Alexandr MiloslavskiyNov 6, 2019
  24. Phillip WoodDec 10, 2019
  25. Alexandr MiloslavskiyDec 11, 2019
  26. Phillip WoodDec 11, 2019
  27. Alexandr MiloslavskiyDec 11, 2019
  28. Junio C HamanoDec 11, 2019
  29. Alexandr MiloslavskiyDec 11, 2019
  30. Alexandr MiloslavskiyDec 12, 2019
  31. Junio C HamanoNov 6, 2019
  32. 2/5 doc: reset: unify <pathspec> descriptionAlexandr Miloslavskiy via GitGitGadget, Nov 4, 2019
  33. Junio C HamanoNov 6, 2019
  34. Alexandr MiloslavskiyNov 6, 2019
  35. Junio C HamanoNov 7, 2019
  36. Alexandr MiloslavskiyNov 7, 2019
  37. Junio C HamanoNov 8, 2019
  38. 0/6 Add --pathspec-from-file option for reset, commitAlexandr Miloslavskiy via GitGitGadget, Nov 6, 2019
  39. 1/6 parse-options.h: add new options `--pathspec-from-file`, `--pathspec-file-nul`Alexandr Miloslavskiy via GitGitGadget, Nov 6, 2019
  40. 2/6 pathspec: add new function to parse fileAlexandr Miloslavskiy via GitGitGadget, Nov 6, 2019
  41. Junio C HamanoNov 19, 2019
  42. Alexandr MiloslavskiyNov 19, 2019
  43. 3/6 doc: reset: unify <pathspec> descriptionAlexandr Miloslavskiy via GitGitGadget, Nov 6, 2019
  44. Junio C HamanoNov 19, 2019
  45. Alexandr MiloslavskiyNov 19, 2019
  46. 6/6 commit: support the --pathspec-from-file optionAlexandr Miloslavskiy via GitGitGadget, Nov 6, 2019
  47. Junio C HamanoNov 19, 2019
  48. Alexandr MiloslavskiyNov 19, 2019
  49. 5/6 doc: commit: unify <pathspec> descriptionAlexandr Miloslavskiy via GitGitGadget, Nov 6, 2019
  50. Junio C HamanoNov 19, 2019
  51. Alexandr MiloslavskiyNov 19, 2019
  52. Alexandr MiloslavskiyNov 19, 2019
  53. 4/6 reset: support the `--pathspec-from-file` optionAlexandr Miloslavskiy via GitGitGadget, Nov 6, 2019
  54. 0/6 Add --pathspec-from-file option for reset, commitAlexandr Miloslavskiy via GitGitGadget, Nov 19, 2019
  55. 3/6 doc: reset: synchronize <pathspec> descriptionAlexandr Miloslavskiy via GitGitGadget, Nov 19, 2019
  56. 2/6 pathspec: add new function to parse fileAlexandr Miloslavskiy via GitGitGadget, Nov 19, 2019
  57. 5/6 doc: commit: synchronize <pathspec> descriptionAlexandr Miloslavskiy via GitGitGadget, Nov 19, 2019
  58. 4/6 reset: support the `--pathspec-from-file` optionAlexandr Miloslavskiy via GitGitGadget, Nov 19, 2019
  59. 1/6 parse-options.h: add new options `--pathspec-from-file`, `--pathspec-file-nul`Alexandr Miloslavskiy via GitGitGadget, Nov 19, 2019
  60. 6/6 commit: support the --pathspec-from-file optionAlexandr Miloslavskiy via GitGitGadget, Nov 19, 2019
  61. Junio C HamanoNov 20, 2019
  62. Alexandr MiloslavskiyNov 20, 2019
  63. 00/13 Add --pathspec-from-file optionAlexandr Miloslavskiy via GitGitGadget, Dec 3, 2019
  64. 01/13 parse-options.h: add new options `--pathspec-from-file`, `--pathspec-file-nul`Alexandr Miloslavskiy via GitGitGadget, Dec 3, 2019
  65. 03/13 doc: reset: synchronize <pathspec> descriptionAlexandr Miloslavskiy via GitGitGadget, Dec 3, 2019
  66. 02/13 pathspec: add new function to parse fileAlexandr Miloslavskiy via GitGitGadget, Dec 3, 2019
  67. 05/13 doc: commit: synchronize <pathspec> descriptionAlexandr Miloslavskiy via GitGitGadget, Dec 3, 2019
  68. 06/13 commit: support the --pathspec-from-file optionAlexandr Miloslavskiy via GitGitGadget, Dec 3, 2019
  69. 10/13 doc: checkout: fix broken text referenceAlexandr Miloslavskiy via GitGitGadget, Dec 3, 2019
  70. 07/13 cmd_add: prepare for next patchAlexandr Miloslavskiy via GitGitGadget, Dec 3, 2019
  71. 09/13 doc: checkout: remove duplicate synopsisAlexandr Miloslavskiy via GitGitGadget, Dec 3, 2019
  72. 04/13 reset: support the `--pathspec-from-file` optionAlexandr Miloslavskiy via GitGitGadget, Dec 3, 2019
  73. 08/13 add: support the --pathspec-from-file optionAlexandr Miloslavskiy via GitGitGadget, Dec 3, 2019
  74. 13/13 checkout, restore: support the --pathspec-from-file optionAlexandr Miloslavskiy via GitGitGadget, Dec 3, 2019
  75. 11/13 doc: checkout: synchronize <pathspec> descriptionAlexandr Miloslavskiy via GitGitGadget, Dec 3, 2019
  76. 12/13 doc: restore: synchronize <pathspec> descriptionAlexandr Miloslavskiy via GitGitGadget, Dec 3, 2019
  77. Junio C HamanoDec 3, 2019
  78. Alexandr MiloslavskiyDec 3, 2019
  79. Junio C HamanoDec 4, 2019
  80. Alexandr MiloslavskiyDec 5, 2019

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.