]> git.ipfire.org Git - thirdparty/git.git/blobdiff - builtin/show-index.c
Merge branch 'bc/sha-256-part-2'
[thirdparty/git.git] / builtin / show-index.c
index 0826f6a5a2c2207d1a17070f0f246cc999f31104..8106b03a6b3243c4d8c5e86e9b668727598696ed 100644 (file)
@@ -1,9 +1,12 @@
 #include "builtin.h"
 #include "cache.h"
 #include "pack.h"
+#include "parse-options.h"
 
-static const char show_index_usage[] =
-"git show-index";
+static const char *const show_index_usage[] = {
+       "git show-index [--object-format=<hash-algorithm>]",
+       NULL
+};
 
 int cmd_show_index(int argc, const char **argv, const char *prefix)
 {
@@ -11,10 +14,26 @@ int cmd_show_index(int argc, const char **argv, const char *prefix)
        unsigned nr;
        unsigned int version;
        static unsigned int top_index[256];
-       const unsigned hashsz = the_hash_algo->rawsz;
+       unsigned hashsz;
+       const char *hash_name = NULL;
+       int hash_algo;
+       const struct option show_index_options[] = {
+               OPT_STRING(0, "object-format", &hash_name, N_("hash-algorithm"),
+                          N_("specify the hash algorithm to use")),
+               OPT_END()
+       };
+
+       argc = parse_options(argc, argv, prefix, show_index_options, show_index_usage, 0);
+
+       if (hash_name) {
+               hash_algo = hash_algo_by_name(hash_name);
+               if (hash_algo == GIT_HASH_UNKNOWN)
+                       die(_("Unknown hash algorithm"));
+               repo_set_hash_algo(the_repository, hash_algo);
+       }
+
+       hashsz = the_hash_algo->rawsz;
 
-       if (argc != 1)
-               usage(show_index_usage);
        if (fread(top_index, 2 * 4, 1, stdin) != 1)
                die("unable to read header");
        if (top_index[0] == htonl(PACK_IDX_SIGNATURE)) {