aboutsummaryrefslogtreecommitdiff
path: root/pack-refs.h
diff options
context:
space:
mode:
authorMeet Soni <meetsoni3017@gmail.com>2025-09-19 13:56:43 +0530
committerJunio C Hamano <gitster@pobox.com>2025-09-19 10:02:55 -0700
commit0d4ec339227d04bcba89390bdef22d4dce30d271 (patch)
treee6c3d9c303283cd4cfc6fd3fefe0de1ca42fa279 /pack-refs.h
parent0bef41319c889e6409ea4c1369747a70cbae7c1f (diff)
downloadgit-0d4ec339227d04bcba89390bdef22d4dce30d271.tar.xz
builtin/pack-refs: factor out core logic into a shared library
The implementation of `git pack-refs` is monolithic within `cmd_pack_refs()`, making it impossible to share its logic with other commands. To enable code reuse for the upcoming `git refs optimize` subcommand, refactor the core logic into a shared helper function. Split the original `builtin/pack-refs.c` file into two parts: - A new shared library file, `pack-refs.c`, which contains the core option parsing and packing logic in a new `pack_refs_core()` helper function. - The original `builtin/pack-refs.c`, which is now a thin wrapper responsible only for defining the `git pack-refs` command and calling the shared helper. A new `pack-refs.h` header is also introduced to define the public interface for this shared logic. Mentored-by: Patrick Steinhardt <ps@pks.im> Mentored-by: shejialuo <shejialuo@gmail.com> Signed-off-by: Meet Soni <meetsoni3017@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'pack-refs.h')
-rw-r--r--pack-refs.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/pack-refs.h b/pack-refs.h
new file mode 100644
index 0000000000..5de27e7da8
--- /dev/null
+++ b/pack-refs.h
@@ -0,0 +1,23 @@
+#ifndef PACK_REFS_H
+#define PACK_REFS_H
+
+struct repository;
+
+/*
+ * Shared usage string for options common to git-pack-refs(1)
+ * and git-refs-optimize(1). The command-specific part (e.g., "git refs optimize ")
+ * must be prepended by the caller.
+ */
+#define PACK_REFS_OPTS \
+ "[--all] [--no-prune] [--auto] [--include <pattern>] [--exclude <pattern>]"
+
+/*
+ * The core logic for pack-refs and its clones.
+ */
+int pack_refs_core(int argc,
+ const char **argv,
+ const char *prefix,
+ struct repository *repo,
+ const char * const *usage_opts);
+
+#endif /* PACK_REFS_H */