mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
repack: move finish_pack_objects_cmd() out of the builtin
In a similar spirit as the previous commit(s), now that the function `finish_pack_objects_cmd()` has no explicit dependencies within the repack builtin, let's extract it. This prepares us to extract the remaining two functions within the repack builtin that explicitly write packfiles, which are `write_cruft_pack()` and `write_filtered_pack()`, which will be done in the future commits. 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
80db3cd189
commit
fa0787a6cc
@@ -107,39 +107,6 @@ static int repack_config(const char *var, const char *value,
|
||||
return git_default_config(var, value, ctx, cb);
|
||||
}
|
||||
|
||||
static int finish_pack_objects_cmd(const struct git_hash_algo *algop,
|
||||
const struct write_pack_opts *opts,
|
||||
struct child_process *cmd,
|
||||
struct string_list *names)
|
||||
{
|
||||
FILE *out;
|
||||
bool local = write_pack_opts_is_local(opts);
|
||||
struct strbuf line = STRBUF_INIT;
|
||||
|
||||
out = xfdopen(cmd->out, "r");
|
||||
while (strbuf_getline_lf(&line, out) != EOF) {
|
||||
struct string_list_item *item;
|
||||
|
||||
if (line.len != algop->hexsz)
|
||||
die(_("repack: Expecting full hex object ID lines only "
|
||||
"from pack-objects."));
|
||||
/*
|
||||
* Avoid putting packs written outside of the repository in the
|
||||
* list of names.
|
||||
*/
|
||||
if (local) {
|
||||
item = string_list_append(names, line.buf);
|
||||
item->util = generated_pack_populate(line.buf,
|
||||
opts->packtmp);
|
||||
}
|
||||
}
|
||||
fclose(out);
|
||||
|
||||
strbuf_release(&line);
|
||||
|
||||
return finish_command(cmd);
|
||||
}
|
||||
|
||||
static int write_filtered_pack(const struct write_pack_opts *opts,
|
||||
struct existing_packs *existing,
|
||||
struct string_list *names)
|
||||
|
||||
33
repack.c
33
repack.c
@@ -82,6 +82,39 @@ bool write_pack_opts_is_local(const struct write_pack_opts *opts)
|
||||
return starts_with(opts->destination, opts->packdir);
|
||||
}
|
||||
|
||||
int finish_pack_objects_cmd(const struct git_hash_algo *algop,
|
||||
const struct write_pack_opts *opts,
|
||||
struct child_process *cmd,
|
||||
struct string_list *names)
|
||||
{
|
||||
FILE *out;
|
||||
bool local = write_pack_opts_is_local(opts);
|
||||
struct strbuf line = STRBUF_INIT;
|
||||
|
||||
out = xfdopen(cmd->out, "r");
|
||||
while (strbuf_getline_lf(&line, out) != EOF) {
|
||||
struct string_list_item *item;
|
||||
|
||||
if (line.len != algop->hexsz)
|
||||
die(_("repack: Expecting full hex object ID lines only "
|
||||
"from pack-objects."));
|
||||
/*
|
||||
* Avoid putting packs written outside of the repository in the
|
||||
* list of names.
|
||||
*/
|
||||
if (local) {
|
||||
item = string_list_append(names, line.buf);
|
||||
item->util = generated_pack_populate(line.buf,
|
||||
opts->packtmp);
|
||||
}
|
||||
}
|
||||
fclose(out);
|
||||
|
||||
strbuf_release(&line);
|
||||
|
||||
return finish_command(cmd);
|
||||
}
|
||||
|
||||
#define DELETE_PACK 1
|
||||
#define RETAIN_PACK 2
|
||||
|
||||
|
||||
5
repack.h
5
repack.h
@@ -42,6 +42,11 @@ struct write_pack_opts {
|
||||
const char *write_pack_opts_pack_prefix(const struct write_pack_opts *opts);
|
||||
bool write_pack_opts_is_local(const struct write_pack_opts *opts);
|
||||
|
||||
int finish_pack_objects_cmd(const struct git_hash_algo *algop,
|
||||
const struct write_pack_opts *opts,
|
||||
struct child_process *cmd,
|
||||
struct string_list *names);
|
||||
|
||||
struct repository;
|
||||
struct packed_git;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user