Thread (8 messages) flat view 8 messages, 2 authors, 2016-06-15

Re: [PATCH v3 3/3] cat-file: add "--literally" option

From: karthik nayak <hidden>
Date: 2016-06-15 23:04:06


On 03/09/2015 04:20 AM, Eric Sunshine wrote:
On Thu, Mar 5, 2015 at 1:19 PM, Karthik Nayak [off-list ref] wrote:
quoted
made changes to "cat-file" to include a "--literally"
Write in imperative mood: "Teach cat-file a --literally option..."
quoted
option which prints the type of the object without any
complaints.
Unfortunately, this explanation is quite lacking. What "complaints"?
What problem is --literally trying to solve? To answer these
questions, you will probably want to say something about the sort of
object which requires --literally, and how cat-file fails or behaves
without it.
quoted
Signed-off-by: Karthik Nayak <redacted>
---
diff --git a/builtin/cat-file.c b/builtin/cat-file.c
index df99df4..60b9ec4 100644
--- a/builtin/cat-file.c
+++ b/builtin/cat-file.c
@@ -323,7 +332,7 @@ static int batch_objects(struct batch_options *opt)
  }

  static const char * const cat_file_usage[] = {
-       N_("git cat-file (-t | -s | -e | -p | <type> | --textconv) <object>"),
+       N_("git cat-file (-t|-s|-e|-p|<type>|--textconv|-t --literally) <object>"),
This might read more naturally as:

     git cat-file (-t [--literally] | -s | -e | -p | <type> |
--textconv) <object>

rather than repeating the -t option.
quoted
         N_("git cat-file (--batch | --batch-check) < <list-of-objects>"),
         NULL
  };
@@ -369,6 +379,8 @@ int cmd_cat_file(int argc, const char **argv, const char *prefix)
                 OPT_SET_INT('p', NULL, &opt, N_("pretty-print object's content"), 'p'),
                 OPT_SET_INT(0, "textconv", &opt,
                             N_("for blob objects, run textconv on object's content"), 'c'),
+               OPT_BOOL( 0, "literally", &literally,
+                         N_("show the type of the given loose object, use for debugging")),
Taking other help strings into account, there is no need for the
long-winded "type of the given loose object" when "loose object's
type" will suffice. More importantly, thought, you should try to say
something about how --literally is actually useful, such as for
"broken" objects or objects not of a known type.
quoted
                 { OPTION_CALLBACK, 0, "batch", &batch, "format",
                         N_("show info and content of objects fed from the standard input"),
                         PARSE_OPT_OPTARG, batch_option_callback },
@@ -380,7 +392,7 @@ int cmd_cat_file(int argc, const char **argv, const char *prefix)

         git_config(git_cat_file_config, NULL);

-       if (argc != 3 && argc != 2)
+       if (argc != 3 && argc != 2 && argc != 4)
Perhaps it's time to rephrase this as "if (argc < 2 || argc > 4)"?
quoted
                 usage_with_options(cat_file_usage, options);

         argc = parse_options(argc, argv, prefix, options, cat_file_usage, 0);
@@ -405,5 +417,10 @@ int cmd_cat_file(int argc, const char **argv, const char *prefix)
         if (batch.enabled)
                 return batch_objects(&batch);

-       return cat_one_file(opt, exp_type, obj_name);
+       if (literally && opt == 't')
+               return cat_one_file(opt, exp_type, obj_name, literally);
+       else if (literally)
+               usage_with_options(cat_file_usage, options);
I realize that existing cases in cat-file are already guilty of this
transgression, but it is quite annoying when a program merely spits
out its usage statement without actually telling you what you did
wrong; and it's often difficult to figure out why it was rejected. It
would be much more helpful in a case like this to state explicitly
that --literally was given without -t. (But perhaps such a
"friendliness" change is fodder for a separate patch.)
quoted
+
+       return cat_one_file(opt, exp_type, obj_name, literally);
  }
--
2.3.1.167.g7f4ba4b.dirty
Thanks for the feedback.
Will fix everything you stated in the next patch.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help