git-revert with conflicts to behave as git-merge with conflicts
[gitweb.git] / builtin-pack-refs.c
index ede47434e3d0b5e5dcb560c1cf30884d43d52434..1087657674840820662cba686f525a69a68e689c 100644 (file)
@@ -2,7 +2,7 @@
 #include "refs.h"
 
 static const char builtin_pack_refs_usage[] =
-"git-pack-refs [--prune]";
+"git-pack-refs [--all] [--prune]";
 
 struct ref_to_prune {
        struct ref_to_prune *next;
@@ -68,6 +68,7 @@ int cmd_pack_refs(int argc, const char **argv, const char *prefix)
 {
        int fd, i;
        struct pack_refs_cb_data cbdata;
+       int (*iterate_ref)(each_ref_fn, void *) = for_each_tag_ref;
 
        memset(&cbdata, 0, sizeof(cbdata));
 
@@ -77,6 +78,10 @@ int cmd_pack_refs(int argc, const char **argv, const char *prefix)
                        cbdata.prune = 1;
                        continue;
                }
+               if (!strcmp(arg, "--all")) {
+                       iterate_ref = for_each_ref;
+                       continue;
+               }
                /* perhaps other parameters later... */
                break;
        }
@@ -88,7 +93,8 @@ int cmd_pack_refs(int argc, const char **argv, const char *prefix)
        if (!cbdata.refs_file)
                die("unable to create ref-pack file structure (%s)",
                    strerror(errno));
-       for_each_ref(handle_one_ref, &cbdata);
+       iterate_ref(handle_one_ref, &cbdata);
+       fflush(cbdata.refs_file);
        fsync(fd);
        fclose(cbdata.refs_file);
        if (commit_lock_file(&packed) < 0)