mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
repack: extract write_pack_opts_is_local()
Similar to the previous commit, the functions `write_cruft_pack()` and
`write_filtered_pack()` both compute a "local" variable via the exact
same mechanism:
const char *scratch;
int local = skip_prefix(opts->destination, opts->packdir, &scratch);
Not only does this cause us to repeat the same pair of lines, it also
introduces an unnecessary "scratch" variable that is common between both
functions.
Instead of repeating ourselves, let's extract that functionality into a
new function in the repack.h API called "write_pack_opts_is_local()".
That function takes a pointer to a "struct write_pack_opts" (which has
as fields both "destination" and "packdir"), and can encapsulate the
dangling "scratch" field.
Extract that function and make it visible within the repack.h API, and
use it within both `write_cruft_pack()` and `write_filtered_pack()`.
While we're at it, match our modern conventions by returning a "bool"
instead of "int", and use `starts_with()` instead of `skip_prefix()` to
avoid storing the dummy "scratch" variable.
The remaining duplication (that is, that both `write_cruft_pack()` and
`write_filtered_pack()` still both call `write_pack_opts_is_local()`)
will be addressed in the following commit.
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
98fa0d50a7
commit
2f79c79bba
@@ -147,8 +147,7 @@ static int write_filtered_pack(const struct write_pack_opts *opts,
|
||||
FILE *in;
|
||||
int ret;
|
||||
const char *caret;
|
||||
const char *scratch;
|
||||
int local = skip_prefix(opts->destination, opts->packdir, &scratch);
|
||||
bool local = write_pack_opts_is_local(opts);
|
||||
const char *pack_prefix = write_pack_opts_pack_prefix(opts);
|
||||
|
||||
prepare_pack_objects(&cmd, opts->po_args, opts->destination);
|
||||
@@ -232,8 +231,7 @@ static int write_cruft_pack(const struct write_pack_opts *opts,
|
||||
struct string_list_item *item;
|
||||
FILE *in;
|
||||
int ret;
|
||||
const char *scratch;
|
||||
int local = skip_prefix(opts->destination, opts->packdir, &scratch);
|
||||
bool local = write_pack_opts_is_local(opts);
|
||||
const char *pack_prefix = write_pack_opts_pack_prefix(opts);
|
||||
|
||||
prepare_pack_objects(&cmd, opts->po_args, opts->destination);
|
||||
|
||||
Reference in New Issue
Block a user