зеркало из https://github.com/microsoft/git.git
Teach progress eye-candy to fetch_refs_from_bundle()
With the usual "git" transport, a large-ish transfer with "git fetch" and "git pull" give progress eye-candy to avoid boring users. However, not when they are reading from a bundle. I.e. $ git pull ../git-bundle.bndl master This teaches bundle.c:unbundle() to give "-v" option to index-pack and tell it to give progress bar when transport decides it is necessary. The operation in the other direction, "git bundle create", could also learn to honor --quiet but that is a separate issue. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
ec014eac0e
Коммит
be042aff24
|
@ -58,7 +58,7 @@ int cmd_bundle(int argc, const char **argv, const char *prefix)
|
||||||
} else if (!strcmp(cmd, "unbundle")) {
|
} else if (!strcmp(cmd, "unbundle")) {
|
||||||
if (!startup_info->have_repository)
|
if (!startup_info->have_repository)
|
||||||
die(_("Need a repository to unbundle."));
|
die(_("Need a repository to unbundle."));
|
||||||
return !!unbundle(&header, bundle_fd) ||
|
return !!unbundle(&header, bundle_fd, 0) ||
|
||||||
list_bundle_refs(&header, argc, argv);
|
list_bundle_refs(&header, argc, argv);
|
||||||
} else
|
} else
|
||||||
usage(builtin_bundle_usage);
|
usage(builtin_bundle_usage);
|
||||||
|
|
7
bundle.c
7
bundle.c
|
@ -380,12 +380,15 @@ int create_bundle(struct bundle_header *header, const char *path,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int unbundle(struct bundle_header *header, int bundle_fd)
|
int unbundle(struct bundle_header *header, int bundle_fd, int flags)
|
||||||
{
|
{
|
||||||
const char *argv_index_pack[] = {"index-pack",
|
const char *argv_index_pack[] = {"index-pack",
|
||||||
"--fix-thin", "--stdin", NULL};
|
"--fix-thin", "--stdin", NULL, NULL};
|
||||||
struct child_process ip;
|
struct child_process ip;
|
||||||
|
|
||||||
|
if (flags & BUNDLE_VERBOSE)
|
||||||
|
argv_index_pack[3] = "-v";
|
||||||
|
|
||||||
if (verify_bundle(header, 0))
|
if (verify_bundle(header, 0))
|
||||||
return -1;
|
return -1;
|
||||||
memset(&ip, 0, sizeof(ip));
|
memset(&ip, 0, sizeof(ip));
|
||||||
|
|
3
bundle.h
3
bundle.h
|
@ -18,7 +18,8 @@ int read_bundle_header(const char *path, struct bundle_header *header);
|
||||||
int create_bundle(struct bundle_header *header, const char *path,
|
int create_bundle(struct bundle_header *header, const char *path,
|
||||||
int argc, const char **argv);
|
int argc, const char **argv);
|
||||||
int verify_bundle(struct bundle_header *header, int verbose);
|
int verify_bundle(struct bundle_header *header, int verbose);
|
||||||
int unbundle(struct bundle_header *header, int bundle_fd);
|
#define BUNDLE_VERBOSE 1
|
||||||
|
int unbundle(struct bundle_header *header, int bundle_fd, int flags);
|
||||||
int list_bundle_refs(struct bundle_header *header,
|
int list_bundle_refs(struct bundle_header *header,
|
||||||
int argc, const char **argv);
|
int argc, const char **argv);
|
||||||
|
|
||||||
|
|
|
@ -431,7 +431,8 @@ static int fetch_refs_from_bundle(struct transport *transport,
|
||||||
int nr_heads, struct ref **to_fetch)
|
int nr_heads, struct ref **to_fetch)
|
||||||
{
|
{
|
||||||
struct bundle_transport_data *data = transport->data;
|
struct bundle_transport_data *data = transport->data;
|
||||||
return unbundle(&data->header, data->fd);
|
return unbundle(&data->header, data->fd,
|
||||||
|
transport->progress ? BUNDLE_VERBOSE : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int close_bundle(struct transport *transport)
|
static int close_bundle(struct transport *transport)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче