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

[PATCH 1/4] write-tree: migrate to parse-options

From
Stephen Boyd <bebarino@gmail.com>
Date
Jul 8, 2009, 05:15 UTC
Message-ID
<1247030141-11695-2-git-send-email-bebarino@gmail.com>
In-Reply-To
<1247030141-11695-1-git-send-email-bebarino@gmail.com>

A check for extra options has been dropped, it could never be triggered in the original code as the usage message would be printed instead.

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
---

For historical purposes (and those interested), the die() became dead code in commit 6bd2035 (write-tree: --prefix=<path> 2006-04-26) when the line if (argc == 2) was changed to a while loop.

 builtin-write-tree.c |   40 +++++++++++++++++++---------------------
 1 files changed, 19 insertions(+), 21 deletions(-)
diff --git a/builtin-write-tree.c b/builtin-write-tree.c
index 3a24ce8..b223af4 100644
--- a/builtin-write-tree.c
+++ b/builtin-write-tree.c
@@ -7,9 +7,12 @@
 #include "cache.h"
 #include "tree.h"
 #include "cache-tree.h"
+#include "parse-options.h"
 
-static const char write_tree_usage[] =
-"git write-tree [--missing-ok] [--prefix=<prefix>/]";
+static const char * const write_tree_usage[] = {
+	"git write-tree [--missing-ok] [--prefix=<prefix>/]",
+	NULL
+};
 
 int cmd_write_tree(int argc, const char **argv, const char *unused_prefix)
 {
@@ -17,27 +20,22 @@ int cmd_write_tree(int argc, const char **argv, const char *unused_prefix)
 	const char *prefix = NULL;
 	unsigned char sha1[20];
 	const char *me = "git-write-tree";
+	struct option write_tree_options[] = {
+		OPT_BIT(0, "missing-ok", &flags, "allow missing objects",
+			WRITE_TREE_MISSING_OK),
+		{ OPTION_STRING, 0, "prefix", &prefix, "<prefix>/",
+		  "write tree object for a subdirectory <prefix>" ,
+		  PARSE_OPT_LITERAL_ARGHELP },
+		{ OPTION_BIT, 0, "ignore-cache-tree", &flags, NULL,
+		  "only useful for debugging",
+		  PARSE_OPT_HIDDEN | PARSE_OPT_NOARG, NULL,
+		  WRITE_TREE_IGNORE_CACHE_TREE },
+		OPT_END()
+	};
 
 	git_config(git_default_config, NULL);
-	while (1 < argc) {
-		const char *arg = argv[1];
-		if (!strcmp(arg, "--missing-ok"))
-			flags |= WRITE_TREE_MISSING_OK;
-		else if (!prefixcmp(arg, "--prefix="))
-			prefix = arg + 9;
-		else if (!prefixcmp(arg, "--ignore-cache-tree"))
-			/*
-			 * This is only useful for debugging, so I
-			 * do not bother documenting it.
-			 */
-			flags |= WRITE_TREE_IGNORE_CACHE_TREE;
-		else
-			usage(write_tree_usage);
-		argc--; argv++;
-	}
-
-	if (argc > 2)
-		die("too many options");
+	argc = parse_options(argc, argv, unused_prefix, write_tree_options,
+			     write_tree_usage, 0);
 
 	ret = write_cache_as_tree(sha1, flags, prefix);
 	switch (ret) {
-- 
1.6.3.3.385.g60647
Previous: Stephen BoydNext: Stephen Boyd
Message 2 of 9 in “Migrate simple builtins to parse-options”
  1. 0/4 Migrate simple builtins to parse-optionsStephen Boyd, Jul 8, 2009
  2. 1/4 write-tree: migrate to parse-optionsStephen Boyd, Jul 8, 2009
  3. 2/4 tag-verify: migrate to parse-optionsStephen Boyd, Jul 8, 2009
  4. 3/4 verify-pack: migrate to parse-optionsStephen Boyd, Jul 8, 2009
  5. 4/4 prune-packed: migrate to parse-optionsStephen Boyd, Jul 8, 2009
  6. Johannes SchindelinJul 9, 2009
  7. Stephen BoydJul 9, 2009
  8. Stephen BoydJul 9, 2009
  9. Stephen BoydJul 9, 2009

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.