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

[PATCH v2 03/41] parse-options: let OPT__FORCE take optional flags argument

From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Date
Jan 31, 2018, 11:05 UTC
Message-ID
<20180131110547.20577-4-pclouds@gmail.com>
In-Reply-To
<20180131110547.20577-1-pclouds@gmail.com>

--force option is most likely hidden from command line completion for safety reasons. This is done by adding an extra flag PARSE_OPT_NOCOMPLETE. Update OPT__FORCE() to accept additional flags. Actual flag change comes later depending on individual commands.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 builtin/add.c                | 2 +-
 builtin/branch.c             | 2 +-
 builtin/checkout-index.c     | 2 +-
 builtin/checkout.c           | 2 +-
 builtin/clean.c              | 2 +-
 builtin/fetch.c              | 2 +-
 builtin/mv.c                 | 2 +-
 builtin/notes.c              | 4 ++--
 builtin/pull.c               | 2 +-
 builtin/rm.c                 | 2 +-
 builtin/tag.c                | 2 +-
 builtin/update-server-info.c | 2 +-
 builtin/worktree.c           | 4 +++-
 parse-options.h              | 2 +-
 14 files changed, 17 insertions(+), 15 deletions(-)
diff --git a/builtin/add.c b/builtin/add.c
index bf01d89e28..ac7c1c3277 100644
--- a/builtin/add.c
+++ b/builtin/add.c
@@ -294,7 +294,7 @@ static struct option builtin_add_options[] = {
 	OPT_BOOL('i', "interactive", &add_interactive, N_("interactive picking")),
 	OPT_BOOL('p', "patch", &patch_interactive, N_("select hunks interactively")),
 	OPT_BOOL('e', "edit", &edit_interactive, N_("edit current diff and apply")),
-	OPT__FORCE(&ignored_too, N_("allow adding otherwise ignored files")),
+	OPT__FORCE(&ignored_too, N_("allow adding otherwise ignored files"), 0),
 	OPT_BOOL('u', "update", &take_worktree_changes, N_("update tracked files")),
 	OPT_BOOL(0, "renormalize", &add_renormalize, N_("renormalize EOL of tracked files (implies -u)")),
 	OPT_BOOL('N', "intent-to-add", &intent_to_add, N_("record only the fact that the path will be added later")),
diff --git a/builtin/branch.c b/builtin/branch.c
index 8dcc2ed058..b5b62c08ba 100644
--- a/builtin/branch.c
+++ b/builtin/branch.c
@@ -615,7 +615,7 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
 		OPT_BOOL('l', "create-reflog", &reflog, N_("create the branch's reflog")),
 		OPT_BOOL(0, "edit-description", &edit_description,
 			 N_("edit the description for the branch")),
-		OPT__FORCE(&force, N_("force creation, move/rename, deletion")),
+		OPT__FORCE(&force, N_("force creation, move/rename, deletion"), 0),
 		OPT_MERGED(&filter, N_("print only branches that are merged")),
 		OPT_NO_MERGED(&filter, N_("print only branches that are not merged")),
 		OPT_COLUMN(0, "column", &colopts, N_("list branches in columns")),
diff --git a/builtin/checkout-index.c b/builtin/checkout-index.c
index b0e78b819d..a730f6a1aa 100644
--- a/builtin/checkout-index.c
+++ b/builtin/checkout-index.c
@@ -157,7 +157,7 @@ int cmd_checkout_index(int argc, const char **argv, const char *prefix)
 	struct option builtin_checkout_index_options[] = {
 		OPT_BOOL('a', "all", &all,
 			N_("check out all files in the index")),
-		OPT__FORCE(&force, N_("force overwrite of existing files")),
+		OPT__FORCE(&force, N_("force overwrite of existing files"), 0),
 		OPT__QUIET(&quiet,
 			N_("no warning for existing files and files not in index")),
 		OPT_BOOL('n', "no-create", &not_new,
diff --git a/builtin/checkout.c b/builtin/checkout.c
index c54c78df54..2a96358eb7 100644
--- a/builtin/checkout.c
+++ b/builtin/checkout.c
@@ -1118,7 +1118,7 @@ int cmd_checkout(int argc, const char **argv, const char *prefix)
 			    2),
 		OPT_SET_INT('3', "theirs", &opts.writeout_stage, N_("checkout their version for unmerged files"),
 			    3),
-		OPT__FORCE(&opts.force, N_("force checkout (throw away local modifications)")),
+		OPT__FORCE(&opts.force, N_("force checkout (throw away local modifications)"), 0),
 		OPT_BOOL('m', "merge", &opts.merge, N_("perform a 3-way merge with the new branch")),
 		OPT_BOOL(0, "overwrite-ignore", &opts.overwrite_ignore, N_("update ignored files (default)")),
 		OPT_STRING(0, "conflict", &conflict_style, N_("style"),
diff --git a/builtin/clean.c b/builtin/clean.c
index 189e20628c..3c4ca9a2ff 100644
--- a/builtin/clean.c
+++ b/builtin/clean.c
@@ -909,7 +909,7 @@ int cmd_clean(int argc, const char **argv, const char *prefix)
 	struct option options[] = {
 		OPT__QUIET(&quiet, N_("do not print names of files removed")),
 		OPT__DRY_RUN(&dry_run, N_("dry run")),
-		OPT__FORCE(&force, N_("force")),
+		OPT__FORCE(&force, N_("force"), 0),
 		OPT_BOOL('i', "interactive", &interactive, N_("interactive cleaning")),
 		OPT_BOOL('d', NULL, &remove_directories,
 				N_("remove whole directories")),
diff --git a/builtin/fetch.c b/builtin/fetch.c
index 7bbcd26faf..6a603174fb 100644
--- a/builtin/fetch.c
+++ b/builtin/fetch.c
@@ -115,7 +115,7 @@ static struct option builtin_fetch_options[] = {
 		 N_("append to .git/FETCH_HEAD instead of overwriting")),
 	OPT_STRING(0, "upload-pack", &upload_pack, N_("path"),
 		   N_("path to upload pack on remote end")),
-	OPT__FORCE(&force, N_("force overwrite of local branch")),
+	OPT__FORCE(&force, N_("force overwrite of local branch"), 0),
 	OPT_BOOL('m', "multiple", &multiple,
 		 N_("fetch from multiple remotes")),
 	OPT_SET_INT('t', "tags", &tags,
diff --git a/builtin/mv.c b/builtin/mv.c
index cf3684d907..b88023a733 100644
--- a/builtin/mv.c
+++ b/builtin/mv.c
@@ -122,7 +122,7 @@ int cmd_mv(int argc, const char **argv, const char *prefix)
 	struct option builtin_mv_options[] = {
 		OPT__VERBOSE(&verbose, N_("be verbose")),
 		OPT__DRY_RUN(&show_only, N_("dry run")),
-		OPT__FORCE(&force, N_("force move/rename even if target exists")),
+		OPT__FORCE(&force, N_("force move/rename even if target exists"), 0),
 		OPT_BOOL('k', NULL, &ignore_errors, N_("skip move/rename errors")),
 		OPT_END(),
 	};
diff --git a/builtin/notes.c b/builtin/notes.c
index 7c81761645..b52e71c73e 100644
--- a/builtin/notes.c
+++ b/builtin/notes.c
@@ -413,7 +413,7 @@ static int add(int argc, const char **argv, const char *prefix)
 			parse_reuse_arg},
 		OPT_BOOL(0, "allow-empty", &allow_empty,
 			N_("allow storing empty note")),
-		OPT__FORCE(&force, N_("replace existing notes")),
+		OPT__FORCE(&force, N_("replace existing notes"), 0),
 		OPT_END()
 	};
 
@@ -484,7 +484,7 @@ static int copy(int argc, const char **argv, const char *prefix)
 	struct notes_tree *t;
 	const char *rewrite_cmd = NULL;
 	struct option options[] = {
-		OPT__FORCE(&force, N_("replace existing notes")),
+		OPT__FORCE(&force, N_("replace existing notes"), 0),
 		OPT_BOOL(0, "stdin", &from_stdin, N_("read objects from stdin")),
 		OPT_STRING(0, "for-rewrite", &rewrite_cmd, N_("command"),
 			   N_("load rewriting config for <command> (implies "
diff --git a/builtin/pull.c b/builtin/pull.c
index 511dbbe0f6..652239aae9 100644
--- a/builtin/pull.c
+++ b/builtin/pull.c
@@ -193,7 +193,7 @@ static struct option pull_options[] = {
 	OPT_PASSTHRU(0, "upload-pack", &opt_upload_pack, N_("path"),
 		N_("path to upload pack on remote end"),
 		0),
-	OPT__FORCE(&opt_force, N_("force overwrite of local branch")),
+	OPT__FORCE(&opt_force, N_("force overwrite of local branch"), 0),
 	OPT_PASSTHRU('t', "tags", &opt_tags, NULL,
 		N_("fetch all tags and associated objects"),
 		PARSE_OPT_NOARG),
diff --git a/builtin/rm.c b/builtin/rm.c
index 4a2fcca27b..6e0c7f5ac6 100644
--- a/builtin/rm.c
+++ b/builtin/rm.c
@@ -242,7 +242,7 @@ static struct option builtin_rm_options[] = {
 	OPT__DRY_RUN(&show_only, N_("dry run")),
 	OPT__QUIET(&quiet, N_("do not list removed files")),
 	OPT_BOOL( 0 , "cached",         &index_only, N_("only remove from the index")),
-	OPT__FORCE(&force, N_("override the up-to-date check")),
+	OPT__FORCE(&force, N_("override the up-to-date check"), 0),
 	OPT_BOOL('r', NULL,             &recursive,  N_("allow recursive removal")),
 	OPT_BOOL( 0 , "ignore-unmatch", &ignore_unmatch,
 				N_("exit with a zero status even if nothing matched")),
diff --git a/builtin/tag.c b/builtin/tag.c
index a7e6a5b0f2..98d3956bbe 100644
--- a/builtin/tag.c
+++ b/builtin/tag.c
@@ -391,7 +391,7 @@ int cmd_tag(int argc, const char **argv, const char *prefix)
 			N_("how to strip spaces and #comments from message")),
 		OPT_STRING('u', "local-user", &keyid, N_("key-id"),
 					N_("use another key to sign the tag")),
-		OPT__FORCE(&force, N_("replace the tag if exists")),
+		OPT__FORCE(&force, N_("replace the tag if exists"), 0),
 		OPT_BOOL(0, "create-reflog", &create_reflog, N_("create a reflog")),
 
 		OPT_GROUP(N_("Tag listing options")),
diff --git a/builtin/update-server-info.c b/builtin/update-server-info.c
index 873070e517..4321a34456 100644
--- a/builtin/update-server-info.c
+++ b/builtin/update-server-info.c
@@ -12,7 +12,7 @@ int cmd_update_server_info(int argc, const char **argv, const char *prefix)
 {
 	int force = 0;
 	struct option options[] = {
-		OPT__FORCE(&force, N_("update the info files from scratch")),
+		OPT__FORCE(&force, N_("update the info files from scratch"), 0),
 		OPT_END()
 	};
 
diff --git a/builtin/worktree.c b/builtin/worktree.c
index 7cef5b120b..4d3422f62e 100644
--- a/builtin/worktree.c
+++ b/builtin/worktree.c
@@ -365,7 +365,9 @@ static int add(int ac, const char **av, const char *prefix)
 	const char *branch;
 	const char *opt_track = NULL;
 	struct option options[] = {
-		OPT__FORCE(&opts.force, N_("checkout <branch> even if already checked out in other worktree")),
+		OPT__FORCE(&opts.force,
+			   N_("checkout <branch> even if already checked out in other worktree"),
+			   0),
 		OPT_STRING('b', NULL, &opts.new_branch, N_("branch"),
 			   N_("create a new branch")),
 		OPT_STRING('B', NULL, &new_branch_force, N_("branch"),
diff --git a/parse-options.h b/parse-options.h
index bc41b99d3b..23c912b842 100644
--- a/parse-options.h
+++ b/parse-options.h
@@ -250,7 +250,7 @@ extern int parse_opt_passthru_argv(const struct option *, const char *, int);
 	{ OPTION_CALLBACK, 'q', "quiet", (var), NULL, N_("be more quiet"), \
 	  PARSE_OPT_NOARG, &parse_opt_verbosity_cb, 0 }
 #define OPT__DRY_RUN(var, h)  OPT_BOOL('n', "dry-run", (var), (h))
-#define OPT__FORCE(var, h)    OPT_COUNTUP('f', "force",   (var), (h))
+#define OPT__FORCE(var, h, f) OPT_COUNTUP_F('f', "force",   (var), (h), (f))
 #define OPT__ABBREV(var)  \
 	{ OPTION_CALLBACK, 0, "abbrev", (var), N_("n"),	\
 	  N_("use <n> digits to display SHA-1s"),	\
-- 
2.16.1.205.g271f633410
Previous: Nguyễn Thái Ngọc DuyNext: Nguyễn Thái Ngọc Duy
Message 15 of 127 in “Automate updating git-completion.bash a bit”
  1. 00/41 Automate updating git-completion.bash a bitNguyễn Thái Ngọc Duy, Jan 31, 2018
  2. 01/41 parse-options: support --git-completion-helperNguyễn Thái Ngọc Duy, Jan 31, 2018
  3. Eric SunshineJan 31, 2018
  4. Eric SunshineJan 31, 2018
  5. Duy NguyenFeb 1, 2018
  6. Eric SunshineFeb 1, 2018
  7. Duy NguyenFeb 1, 2018
  8. Eric SunshineFeb 1, 2018
  9. Duy NguyenFeb 5, 2018
  10. Eric SunshineFeb 6, 2018
  11. SZEDER GáborFeb 7, 2018
  12. Ævar Arnfjörð BjarmasonFeb 5, 2018
  13. Duy NguyenFeb 5, 2018
  14. 02/41 parse-options: add OPT_xxx_F() variantsNguyễn Thái Ngọc Duy, Jan 31, 2018
  15. 03/41 parse-options: let OPT__FORCE take optional flags argumentNguyễn Thái Ngọc Duy, Jan 31, 2018
  16. 04/41 git-completion.bash: introduce __gitcomp_builtinNguyễn Thái Ngọc Duy, Jan 31, 2018
  17. 05/41 completion: use __gitcomp_builtin in _git_addNguyễn Thái Ngọc Duy, Jan 31, 2018
  18. 06/41 completion: use __gitcomp_builtin in _git_amNguyễn Thái Ngọc Duy, Jan 31, 2018
  19. 07/41 completion: use __gitcomp_builtin in _git_applyNguyễn Thái Ngọc Duy, Jan 31, 2018
  20. 08/41 completion: use __gitcomp_builtin in _git_branchNguyễn Thái Ngọc Duy, Jan 31, 2018
  21. 09/41 completion: use __gitcomp_builtin in _git_checkoutNguyễn Thái Ngọc Duy, Jan 31, 2018
  22. 10/41 completion: use __gitcomp_builtin in _git_cherry_pickNguyễn Thái Ngọc Duy, Jan 31, 2018
  23. 11/41 completion: use __gitcomp_builtin in _git_cleanNguyễn Thái Ngọc Duy, Jan 31, 2018
  24. 12/41 completion: use __gitcomp_builtin in _git_cloneNguyễn Thái Ngọc Duy, Jan 31, 2018
  25. 13/41 completion: use __gitcomp_builtin in _git_commitNguyễn Thái Ngọc Duy, Jan 31, 2018
  26. Eric SunshineJan 31, 2018
  27. 14/41 completion: use __gitcomp_builtin in _git_configNguyễn Thái Ngọc Duy, Jan 31, 2018
  28. 15/41 completion: use __gitcomp_builtin in _git_describeNguyễn Thái Ngọc Duy, Jan 31, 2018
  29. 16/41 completion: use __gitcomp_builtin in _git_difftoolNguyễn Thái Ngọc Duy, Jan 31, 2018
  30. 17/41 completion: use __gitcomp_builtin in _git_fetchNguyễn Thái Ngọc Duy, Jan 31, 2018
  31. 18/41 completion: use __gitcomp_builtin in _git_fsckNguyễn Thái Ngọc Duy, Jan 31, 2018
  32. 19/41 completion: use __gitcomp_builtin in _git_gcNguyễn Thái Ngọc Duy, Jan 31, 2018
  33. 21/41 completion: use __gitcomp_builtin in _git_helpNguyễn Thái Ngọc Duy, Jan 31, 2018
  34. 24/41 completion: use __gitcomp_builtin in _git_ls_remoteNguyễn Thái Ngọc Duy, Jan 31, 2018
  35. 25/41 completion: use __gitcomp_builtin in _git_mergeNguyễn Thái Ngọc Duy, Jan 31, 2018
  36. 26/41 completion: use __gitcomp_builtin in _git_merge_baseNguyễn Thái Ngọc Duy, Jan 31, 2018
  37. 23/41 completion: use __gitcomp_builtin in _git_ls_filesNguyễn Thái Ngọc Duy, Jan 31, 2018
  38. 27/41 completion: use __gitcomp_builtin in _git_mvNguyễn Thái Ngọc Duy, Jan 31, 2018
  39. 28/41 completion: use __gitcomp_builtin in _git_name_revNguyễn Thái Ngọc Duy, Jan 31, 2018
  40. 29/41 completion: use __gitcomp_builtin in _git_notesNguyễn Thái Ngọc Duy, Jan 31, 2018
  41. 30/41 completion: use __gitcomp_builtin in _git_pullNguyễn Thái Ngọc Duy, Jan 31, 2018
  42. 31/41 completion: use __gitcomp_builtin in _git_pushNguyễn Thái Ngọc Duy, Jan 31, 2018
  43. 32/41 completion: use __gitcomp_builtin in _git_remoteNguyễn Thái Ngọc Duy, Jan 31, 2018
  44. 22/41 completion: use __gitcomp_builtin in _git_initNguyễn Thái Ngọc Duy, Jan 31, 2018
  45. 33/41 remote: force completing --mirror= instead of --mirrorNguyễn Thái Ngọc Duy, Jan 31, 2018
  46. 34/41 completion: use __gitcomp_builtin in _git_replaceNguyễn Thái Ngọc Duy, Jan 31, 2018
  47. 35/41 completion: use __gitcomp_builtin in _git_resetNguyễn Thái Ngọc Duy, Jan 31, 2018
  48. 36/41 completion: use __gitcomp_builtin in _git_revertNguyễn Thái Ngọc Duy, Jan 31, 2018
  49. 37/41 completion: use __gitcomp_builtin in _git_rmNguyễn Thái Ngọc Duy, Jan 31, 2018
  50. 38/41 completion: use __gitcomp_builtin in _git_show_branchNguyễn Thái Ngọc Duy, Jan 31, 2018
  51. 39/41 completion: use __gitcomp_builtin in _git_statusNguyễn Thái Ngọc Duy, Jan 31, 2018
  52. 40/41 completion: use __gitcomp_builtin in _git_tagNguyễn Thái Ngọc Duy, Jan 31, 2018
  53. 41/41 completion: use __gitcomp_builtin in _git_worktreeNguyễn Thái Ngọc Duy, Jan 31, 2018
  54. 20/41 completion: use __gitcomp_builtin in _git_grepNguyễn Thái Ngọc Duy, Jan 31, 2018
  55. Ævar Arnfjörð BjarmasonJan 31, 2018
  56. Junio C HamanoFeb 7, 2018
  57. Duy NguyenFeb 8, 2018
  58. 00/42 Automate updating git-completion.bash a bitNguyễn Thái Ngọc Duy, Feb 9, 2018
  59. 01/42 parse-options: support --git-completion-helperNguyễn Thái Ngọc Duy, Feb 9, 2018
  60. Ævar Arnfjörð BjarmasonDec 2, 2018
  61. parse-options: fix SunCC compiler warningNguyễn Thái Ngọc Duy, Dec 9, 2018
  62. Junio C HamanoDec 10, 2018
  63. Duy NguyenDec 10, 2018
  64. Junio C HamanoDec 11, 2018
  65. Duy NguyenDec 11, 2018
  66. Junio C HamanoDec 12, 2018
  67. parse-options: fix SunCC compiler warningNguyễn Thái Ngọc Duy, Dec 11, 2018
  68. 02/42 parse-options: add OPT_xxx_F() variantsNguyễn Thái Ngọc Duy, Feb 9, 2018
  69. 03/42 parse-options: let OPT__FORCE take optional flags argumentNguyễn Thái Ngọc Duy, Feb 9, 2018
  70. 04/42 git-completion.bash: introduce __gitcomp_builtinNguyễn Thái Ngọc Duy, Feb 9, 2018
  71. Junio C HamanoFeb 9, 2018
  72. SZEDER GáborFeb 14, 2018
  73. Duy NguyenFeb 23, 2018
  74. 05/42 completion: use __gitcomp_builtin in _git_addNguyễn Thái Ngọc Duy, Feb 9, 2018
  75. 06/42 completion: use __gitcomp_builtin in _git_amNguyễn Thái Ngọc Duy, Feb 9, 2018
  76. SZEDER GáborFeb 14, 2018
  77. Duy NguyenFeb 22, 2018
  78. Junio C HamanoFeb 22, 2018
  79. Duy NguyenFeb 23, 2018
  80. Junio C HamanoFeb 23, 2018
  81. Duy NguyenFeb 24, 2018
  82. 07/42 completion: use __gitcomp_builtin in _git_applyNguyễn Thái Ngọc Duy, Feb 9, 2018
  83. 08/42 completion: use __gitcomp_builtin in _git_branchNguyễn Thái Ngọc Duy, Feb 9, 2018
  84. 09/42 completion: use __gitcomp_builtin in _git_checkoutNguyễn Thái Ngọc Duy, Feb 9, 2018
  85. 10/42 completion: use __gitcomp_builtin in _git_cherry_pickNguyễn Thái Ngọc Duy, Feb 9, 2018
  86. 11/42 completion: use __gitcomp_builtin in _git_cleanNguyễn Thái Ngọc Duy, Feb 9, 2018
  87. 12/42 completion: use __gitcomp_builtin in _git_cloneNguyễn Thái Ngọc Duy, Feb 9, 2018
  88. 13/42 completion: use __gitcomp_builtin in _git_commitNguyễn Thái Ngọc Duy, Feb 9, 2018
  89. 14/42 completion: use __gitcomp_builtin in _git_configNguyễn Thái Ngọc Duy, Feb 9, 2018
  90. 15/42 completion: use __gitcomp_builtin in _git_describeNguyễn Thái Ngọc Duy, Feb 9, 2018
  91. 16/42 completion: use __gitcomp_builtin in _git_difftoolNguyễn Thái Ngọc Duy, Feb 9, 2018
  92. 17/42 completion: use __gitcomp_builtin in _git_fetchNguyễn Thái Ngọc Duy, Feb 9, 2018
  93. 18/42 completion: use __gitcomp_builtin in _git_fsckNguyễn Thái Ngọc Duy, Feb 9, 2018
  94. 19/42 completion: use __gitcomp_builtin in _git_gcNguyễn Thái Ngọc Duy, Feb 9, 2018
  95. 20/42 completion: use __gitcomp_builtin in _git_grepNguyễn Thái Ngọc Duy, Feb 9, 2018
  96. 21/42 completion: use __gitcomp_builtin in _git_helpNguyễn Thái Ngọc Duy, Feb 9, 2018
  97. 22/42 completion: use __gitcomp_builtin in _git_initNguyễn Thái Ngọc Duy, Feb 9, 2018
  98. 23/42 completion: use __gitcomp_builtin in _git_ls_filesNguyễn Thái Ngọc Duy, Feb 9, 2018
  99. 25/42 completion: use __gitcomp_builtin in _git_mergeNguyễn Thái Ngọc Duy, Feb 9, 2018
  100. 26/42 completion: use __gitcomp_builtin in _git_merge_baseNguyễn Thái Ngọc Duy, Feb 9, 2018
  101. 27/42 completion: use __gitcomp_builtin in _git_mvNguyễn Thái Ngọc Duy, Feb 9, 2018
  102. 28/42 completion: use __gitcomp_builtin in _git_name_revNguyễn Thái Ngọc Duy, Feb 9, 2018
  103. 24/42 completion: use __gitcomp_builtin in _git_ls_remoteNguyễn Thái Ngọc Duy, Feb 9, 2018
  104. 29/42 completion: use __gitcomp_builtin in _git_notesNguyễn Thái Ngọc Duy, Feb 9, 2018
  105. SZEDER GáborFeb 14, 2018
  106. Duy NguyenFeb 23, 2018
  107. Duy NguyenFeb 23, 2018
  108. SZEDER GáborFeb 14, 2018
  109. Duy NguyenFeb 23, 2018
  110. 30/42 completion: use __gitcomp_builtin in _git_pullNguyễn Thái Ngọc Duy, Feb 9, 2018
  111. 31/42 completion: use __gitcomp_builtin in _git_pushNguyễn Thái Ngọc Duy, Feb 9, 2018
  112. 32/42 completion: use __gitcomp_builtin in _git_remoteNguyễn Thái Ngọc Duy, Feb 9, 2018
  113. 33/42 remote: force completing --mirror= instead of --mirrorNguyễn Thái Ngọc Duy, Feb 9, 2018
  114. 34/42 completion: use __gitcomp_builtin in _git_replaceNguyễn Thái Ngọc Duy, Feb 9, 2018
  115. 35/42 completion: use __gitcomp_builtin in _git_resetNguyễn Thái Ngọc Duy, Feb 9, 2018
  116. 36/42 completion: use __gitcomp_builtin in _git_revertNguyễn Thái Ngọc Duy, Feb 9, 2018
  117. 37/42 completion: use __gitcomp_builtin in _git_rmNguyễn Thái Ngọc Duy, Feb 9, 2018
  118. 38/42 completion: use __gitcomp_builtin in _git_show_branchNguyễn Thái Ngọc Duy, Feb 9, 2018
  119. 39/42 completion: use __gitcomp_builtin in _git_statusNguyễn Thái Ngọc Duy, Feb 9, 2018
  120. 40/42 completion: use __gitcomp_builtin in _git_tagNguyễn Thái Ngọc Duy, Feb 9, 2018
  121. 41/42 completion: use __gitcomp_builtin in _git_worktreeNguyễn Thái Ngọc Duy, Feb 9, 2018
  122. 42/42 git-completion.bash: add GIT_COMPLETION_OPTIONS=all configNguyễn Thái Ngọc Duy, Feb 9, 2018
  123. Ævar Arnfjörð BjarmasonFeb 9, 2018
  124. Duy NguyenFeb 10, 2018
  125. Ævar Arnfjörð BjarmasonFeb 11, 2018
  126. Eric SunshineFeb 11, 2018
  127. Duy NguyenFeb 12, 2018

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.