mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
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>
This commit is contained in:
committed by
Junio C Hamano
parent
0bef41319c
commit
0d4ec33922
23
pack-refs.h
Normal file
23
pack-refs.h
Normal file
@@ -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 */
|
||||
Reference in New Issue
Block a user