]> git.ipfire.org Git - thirdparty/git.git/commitdiff
Lib-ify prune-packed
authorDenton Liu <liu.denton@gmail.com>
Tue, 24 Mar 2020 01:07:52 +0000 (21:07 -0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 24 Mar 2020 22:04:44 +0000 (15:04 -0700)
In builtin.h, there exists the distinctly lib-ish function
prune_packed_objects(). This function can currently only be called by
built-in commands but, unlike all of the other functions in the header,
it does not make sense to impose this restriction as the functionality
can be logically reused in libgit.

Extract this function into prune-packed.c so that related definitions
can exist clearly in their own header file.

While we're at it, clean up #includes that are unused.

This patch is best viewed with --color-moved.

Signed-off-by: Denton Liu <liu.denton@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Makefile
builtin.h
builtin/prune-packed.c
builtin/prune.c
builtin/repack.c
prune-packed.c [new file with mode: 0644]
prune-packed.h [new file with mode: 0644]

index 04e3cc179eb2d4fcc292f7d75717ea882eee05b1..608afd58b183518b8ff3c931b27158584027bf40 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -952,6 +952,7 @@ LIB_OBJS += progress.o
 LIB_OBJS += promisor-remote.o
 LIB_OBJS += prompt.o
 LIB_OBJS += protocol.o
+LIB_OBJS += prune-packed.o
 LIB_OBJS += quote.o
 LIB_OBJS += range-diff.o
 LIB_OBJS += reachable.o
index 6101d98661b8e84b612979a2417400aa7dbafe75..a5ae15bfe54b652465b0164872923c8386d03ae9 100644 (file)
--- a/builtin.h
+++ b/builtin.h
 extern const char git_usage_string[];
 extern const char git_more_info_string[];
 
-#define PRUNE_PACKED_DRY_RUN 01
-#define PRUNE_PACKED_VERBOSE 02
-
-void prune_packed_objects(int);
-
 /**
  * If a built-in has DELAY_PAGER_CONFIG set, the built-in should call this early
  * when it wishes to respect the `pager.foo`-config. The `cmd` is the name of
index 48c5e78e339dbd32db255382f729ca2e65b514c5..b7b9281a8cea2c009ef9a4487094613f032f6aba 100644 (file)
@@ -1,54 +1,12 @@
 #include "builtin.h"
-#include "cache.h"
-#include "progress.h"
 #include "parse-options.h"
-#include "packfile.h"
-#include "object-store.h"
+#include "prune-packed.h"
 
 static const char * const prune_packed_usage[] = {
        N_("git prune-packed [-n | --dry-run] [-q | --quiet]"),
        NULL
 };
 
-static struct progress *progress;
-
-static int prune_subdir(unsigned int nr, const char *path, void *data)
-{
-       int *opts = data;
-       display_progress(progress, nr + 1);
-       if (!(*opts & PRUNE_PACKED_DRY_RUN))
-               rmdir(path);
-       return 0;
-}
-
-static int prune_object(const struct object_id *oid, const char *path,
-                        void *data)
-{
-       int *opts = data;
-
-       if (!has_object_pack(oid))
-               return 0;
-
-       if (*opts & PRUNE_PACKED_DRY_RUN)
-               printf("rm -f %s\n", path);
-       else
-               unlink_or_warn(path);
-       return 0;
-}
-
-void prune_packed_objects(int opts)
-{
-       if (opts & PRUNE_PACKED_VERBOSE)
-               progress = start_delayed_progress(_("Removing duplicate objects"), 256);
-
-       for_each_loose_file_in_objdir(get_object_directory(),
-                                     prune_object, NULL, prune_subdir, &opts);
-
-       /* Ensure we show 100% before finishing progress */
-       display_progress(progress, 256);
-       stop_progress(&progress);
-}
-
 int cmd_prune_packed(int argc, const char **argv, const char *prefix)
 {
        int opts = isatty(2) ? PRUNE_PACKED_VERBOSE : 0;
index 2b76872ad2207857077f4ecf285780e94388d00d..fd9acc722247ece74483f6a2a7674a4c5f712570 100644 (file)
@@ -6,6 +6,7 @@
 #include "reachable.h"
 #include "parse-options.h"
 #include "progress.h"
+#include "prune-packed.h"
 #include "object-store.h"
 
 static const char * const prune_usage[] = {
index 0781763b06e80d0188acfe3c902061729b762809..1b686ee9cee7c13f7c0052f397e1006d079667a0 100644 (file)
@@ -10,6 +10,7 @@
 #include "argv-array.h"
 #include "midx.h"
 #include "packfile.h"
+#include "prune-packed.h"
 #include "object-store.h"
 #include "promisor-remote.h"
 
diff --git a/prune-packed.c b/prune-packed.c
new file mode 100644 (file)
index 0000000..261520b
--- /dev/null
@@ -0,0 +1,43 @@
+#include "object-store.h"
+#include "packfile.h"
+#include "progress.h"
+#include "prune-packed.h"
+
+static struct progress *progress;
+
+static int prune_subdir(unsigned int nr, const char *path, void *data)
+{
+       int *opts = data;
+       display_progress(progress, nr + 1);
+       if (!(*opts & PRUNE_PACKED_DRY_RUN))
+               rmdir(path);
+       return 0;
+}
+
+static int prune_object(const struct object_id *oid, const char *path,
+                        void *data)
+{
+       int *opts = data;
+
+       if (!has_object_pack(oid))
+               return 0;
+
+       if (*opts & PRUNE_PACKED_DRY_RUN)
+               printf("rm -f %s\n", path);
+       else
+               unlink_or_warn(path);
+       return 0;
+}
+
+void prune_packed_objects(int opts)
+{
+       if (opts & PRUNE_PACKED_VERBOSE)
+               progress = start_delayed_progress(_("Removing duplicate objects"), 256);
+
+       for_each_loose_file_in_objdir(get_object_directory(),
+                                     prune_object, NULL, prune_subdir, &opts);
+
+       /* Ensure we show 100% before finishing progress */
+       display_progress(progress, 256);
+       stop_progress(&progress);
+}
diff --git a/prune-packed.h b/prune-packed.h
new file mode 100644 (file)
index 0000000..936fa9d
--- /dev/null
@@ -0,0 +1,9 @@
+#ifndef PRUNE_PACKED_H
+#define PRUNE_PACKED_H
+
+#define PRUNE_PACKED_DRY_RUN 01
+#define PRUNE_PACKED_VERBOSE 02
+
+void prune_packed_objects(int);
+
+#endif