Merge branch 'jk/interpret-branch-name-fix' into maint
[gitweb.git] / builtin / repack.c
index 52846f8d7281cc114a34ac25baef69c25052dbe5..a2b9dba5223bc23304cdd3b955e65d80366f09f6 100644 (file)
@@ -123,16 +123,16 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
        struct string_list rollback = STRING_LIST_INIT_NODUP;
        struct string_list existing_packs = STRING_LIST_INIT_DUP;
        struct strbuf line = STRBUF_INIT;
-       int nr_packs, ext, ret, failed;
+       int ext, ret, failed;
        FILE *out;
 
        /* variables to be filled by option parsing */
        int pack_everything = 0;
        int delete_redundant = 0;
-       char *unpack_unreachable = NULL;
-       int window = 0, window_memory = 0;
-       int depth = 0;
-       int max_pack_size = 0;
+       const char *unpack_unreachable = NULL;
+       const char *window = NULL, *window_memory = NULL;
+       const char *depth = NULL;
+       const char *max_pack_size = NULL;
        int no_reuse_delta = 0, no_reuse_object = 0;
        int no_update_server_info = 0;
        int quiet = 0;
@@ -157,13 +157,13 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
                                N_("pass --local to git-pack-objects")),
                OPT_STRING(0, "unpack-unreachable", &unpack_unreachable, N_("approxidate"),
                                N_("with -A, do not loosen objects older than this")),
-               OPT_INTEGER(0, "window", &window,
+               OPT_STRING(0, "window", &window, N_("n"),
                                N_("size of the window used for delta compression")),
-               OPT_INTEGER(0, "window-memory", &window_memory,
+               OPT_STRING(0, "window-memory", &window_memory, N_("bytes"),
                                N_("same as the above, but limit memory size instead of entries count")),
-               OPT_INTEGER(0, "depth", &depth,
+               OPT_STRING(0, "depth", &depth, N_("n"),
                                N_("limits the maximum delta depth")),
-               OPT_INTEGER(0, "max-pack-size", &max_pack_size,
+               OPT_STRING(0, "max-pack-size", &max_pack_size, N_("bytes"),
                                N_("maximum size of each packfile")),
                OPT_END()
        };
@@ -185,13 +185,13 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
        argv_array_push(&cmd_args, "--all");
        argv_array_push(&cmd_args, "--reflog");
        if (window)
-               argv_array_pushf(&cmd_args, "--window=%u", window);
+               argv_array_pushf(&cmd_args, "--window=%s", window);
        if (window_memory)
-               argv_array_pushf(&cmd_args, "--window-memory=%u", window_memory);
+               argv_array_pushf(&cmd_args, "--window-memory=%s", window_memory);
        if (depth)
-               argv_array_pushf(&cmd_args, "--depth=%u", depth);
+               argv_array_pushf(&cmd_args, "--depth=%s", depth);
        if (max_pack_size)
-               argv_array_pushf(&cmd_args, "--max_pack_size=%u", max_pack_size);
+               argv_array_pushf(&cmd_args, "--max-pack-size=%s", max_pack_size);
        if (no_reuse_delta)
                argv_array_pushf(&cmd_args, "--no-reuse-delta");
        if (no_reuse_object)
@@ -231,23 +231,21 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
 
        ret = start_command(&cmd);
        if (ret)
-               return 1;
+               return ret;
 
-       nr_packs = 0;
        out = xfdopen(cmd.out, "r");
        while (strbuf_getline(&line, out, '\n') != EOF) {
                if (line.len != 40)
                        die("repack: Expecting 40 character sha1 lines only from pack-objects.");
                string_list_append(&names, line.buf);
-               nr_packs++;
        }
        fclose(out);
        ret = finish_command(&cmd);
        if (ret)
-               return 1;
+               return ret;
        argv_array_clear(&cmd_args);
 
-       if (!nr_packs && !quiet)
+       if (!names.nr && !quiet)
                printf("Nothing new to pack.\n");
 
        /*
@@ -327,7 +325,7 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
                                chmod(fname_old, statbuffer.st_mode);
                        }
                        if (rename(fname_old, fname))
-                               exit(errno);
+                               die_errno(_("renaming '%s' failed"), fname_old);
                        free(fname);
                        free(fname_old);
                }
@@ -341,7 +339,8 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
                                        packdir,
                                        item->string,
                                        exts[ext]);
-                       remove_path(fname);
+                       if (remove_path(fname))
+                               warning(_("removing '%s' failed"), fname);
                }
        }