-
Notifications
You must be signed in to change notification settings - Fork 140
git-bundle --quiet support #435
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,6 @@ | ||
#include "builtin.h" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. On the Git mailing list, "Robin H. Johnson" wrote (reply to this):
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. On the Git mailing list, "Robin H. Johnson" wrote (reply to this):
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. On the Git mailing list, Junio C Hamano wrote (reply to this):
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. On the Git mailing list, Jeff King wrote (reply to this):
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. On the Git mailing list, Jeff King wrote (reply to this):
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. On the Git mailing list, Jeff King wrote (reply to this):
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. On the Git mailing list, Jeff King wrote (reply to this):
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. On the Git mailing list, Johannes Schindelin wrote (reply to this):
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. On the Git mailing list, Junio C Hamano wrote (reply to this):
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. On the Git mailing list, Junio C Hamano wrote (reply to this):
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. On the Git mailing list, Johannes Schindelin wrote (reply to this):
|
||
#include "argv-array.h" | ||
#include "parse-options.h" | ||
#include "cache.h" | ||
#include "bundle.h" | ||
|
||
|
@@ -9,59 +11,184 @@ | |
* bundle supporting "fetch", "pull", and "ls-remote". | ||
*/ | ||
|
||
static const char builtin_bundle_usage[] = | ||
"git bundle create <file> <git-rev-list args>\n" | ||
" or: git bundle verify <file>\n" | ||
" or: git bundle list-heads <file> [<refname>...]\n" | ||
" or: git bundle unbundle <file> [<refname>...]"; | ||
static const char * const builtin_bundle_usage[] = { | ||
N_("git bundle create [<options>] <file> <git-rev-list args>"), | ||
N_("git bundle verify [<options>] <file>"), | ||
N_("git bundle list-heads <file> [<refname>...]"), | ||
N_("git bundle unbundle <file> [<refname>...]"), | ||
NULL | ||
}; | ||
|
||
int cmd_bundle(int argc, const char **argv, const char *prefix) | ||
{ | ||
static const char * const builtin_bundle_create_usage[] = { | ||
N_("git bundle create [<options>] <file> <git-rev-list args>"), | ||
NULL | ||
}; | ||
|
||
static const char * const builtin_bundle_verify_usage[] = { | ||
N_("git bundle verify [<options>] <file>"), | ||
NULL | ||
}; | ||
|
||
static const char * const builtin_bundle_list_heads_usage[] = { | ||
N_("git bundle list-heads <file> [<refname>...]"), | ||
NULL | ||
}; | ||
|
||
static const char * const builtin_bundle_unbundle_usage[] = { | ||
N_("git bundle unbundle <file> [<refname>...]"), | ||
NULL | ||
}; | ||
|
||
static int verbose; | ||
|
||
static int parse_options_cmd_bundle(int argc, | ||
const char **argv, | ||
const char* prefix, | ||
const char * const usagestr[], | ||
const struct option options[], | ||
const char **bundle_file) { | ||
int newargc; | ||
newargc = parse_options(argc, argv, NULL, options, usagestr, | ||
PARSE_OPT_STOP_AT_NON_OPTION); | ||
if (argc < 1) | ||
usage_with_options(usagestr, options); | ||
*bundle_file = prefix_filename(prefix, argv[0]); | ||
return newargc; | ||
} | ||
|
||
static int cmd_bundle_create(int argc, const char **argv, const char *prefix) { | ||
int all_progress_implied = 0; | ||
int progress = isatty(STDERR_FILENO); | ||
struct argv_array pack_opts; | ||
|
||
struct option options[] = { | ||
OPT_SET_INT('q', "quiet", &progress, | ||
N_("do not show progress meter"), 0), | ||
OPT_SET_INT(0, "progress", &progress, | ||
N_("show progress meter"), 1), | ||
OPT_SET_INT(0, "all-progress", &progress, | ||
N_("show progress meter during object writing phase"), 2), | ||
OPT_BOOL(0, "all-progress-implied", | ||
&all_progress_implied, | ||
N_("similar to --all-progress when progress meter is shown")), | ||
OPT_END() | ||
}; | ||
const char* bundle_file; | ||
|
||
argc = parse_options_cmd_bundle(argc, argv, prefix, | ||
builtin_bundle_create_usage, options, &bundle_file); | ||
/* bundle internals use argv[1] as further parameters */ | ||
robbat2 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
argv_array_init(&pack_opts); | ||
if (progress == 0) | ||
argv_array_push(&pack_opts, "--quiet"); | ||
else if (progress == 1) | ||
argv_array_push(&pack_opts, "--progress"); | ||
else if (progress == 2) | ||
argv_array_push(&pack_opts, "--all-progress"); | ||
if (progress && all_progress_implied) | ||
argv_array_push(&pack_opts, "--all-progress-implied"); | ||
|
||
if (!startup_info->have_repository) | ||
die(_("Need a repository to create a bundle.")); | ||
return !!create_bundle(the_repository, bundle_file, argc, argv, &pack_opts); | ||
} | ||
|
||
static int cmd_bundle_verify(int argc, const char **argv, const char *prefix) { | ||
struct bundle_header header; | ||
const char *cmd, *bundle_file; | ||
int bundle_fd = -1; | ||
int quiet = 0; | ||
|
||
if (argc < 3) | ||
usage(builtin_bundle_usage); | ||
struct option options[] = { | ||
OPT_BOOL('q', "quiet", &quiet, | ||
N_("do not show bundle details")), | ||
OPT_END() | ||
}; | ||
const char* bundle_file; | ||
|
||
cmd = argv[1]; | ||
bundle_file = prefix_filename(prefix, argv[2]); | ||
argc -= 2; | ||
argv += 2; | ||
argc = parse_options_cmd_bundle(argc, argv, prefix, | ||
builtin_bundle_verify_usage, options, &bundle_file); | ||
/* bundle internals use argv[1] as further parameters */ | ||
|
||
memset(&header, 0, sizeof(header)); | ||
if (strcmp(cmd, "create") && (bundle_fd = | ||
read_bundle_header(bundle_file, &header)) < 0) | ||
if ((bundle_fd = read_bundle_header(bundle_file, &header)) < 0) | ||
return 1; | ||
close(bundle_fd); | ||
if (verify_bundle(the_repository, &header, !quiet)) | ||
return 1; | ||
fprintf(stderr, _("%s is okay\n"), bundle_file); | ||
return 0; | ||
} | ||
|
||
if (!strcmp(cmd, "verify")) { | ||
close(bundle_fd); | ||
if (argc != 1) { | ||
usage(builtin_bundle_usage); | ||
return 1; | ||
} | ||
if (verify_bundle(the_repository, &header, 1)) | ||
return 1; | ||
fprintf(stderr, _("%s is okay\n"), bundle_file); | ||
return 0; | ||
} | ||
if (!strcmp(cmd, "list-heads")) { | ||
close(bundle_fd); | ||
return !!list_bundle_refs(&header, argc, argv); | ||
static int cmd_bundle_list_heads(int argc, const char **argv, const char *prefix) { | ||
struct bundle_header header; | ||
int bundle_fd = -1; | ||
|
||
struct option options[] = { | ||
OPT_END() | ||
}; | ||
const char* bundle_file; | ||
|
||
argc = parse_options_cmd_bundle(argc, argv, prefix, | ||
builtin_bundle_list_heads_usage, options, &bundle_file); | ||
/* bundle internals use argv[1] as further parameters */ | ||
|
||
memset(&header, 0, sizeof(header)); | ||
if ((bundle_fd = read_bundle_header(bundle_file, &header)) < 0) | ||
return 1; | ||
close(bundle_fd); | ||
return !!list_bundle_refs(&header, argc, argv); | ||
} | ||
|
||
static int cmd_bundle_unbundle(int argc, const char **argv, const char *prefix) { | ||
struct bundle_header header; | ||
int bundle_fd = -1; | ||
|
||
struct option options[] = { | ||
OPT_END() | ||
}; | ||
const char* bundle_file; | ||
|
||
argc = parse_options_cmd_bundle(argc, argv, prefix, | ||
builtin_bundle_unbundle_usage, options, &bundle_file); | ||
/* bundle internals use argv[1] as further parameters */ | ||
|
||
memset(&header, 0, sizeof(header)); | ||
if ((bundle_fd = read_bundle_header(bundle_file, &header)) < 0) | ||
return 1; | ||
if (!startup_info->have_repository) | ||
die(_("Need a repository to unbundle.")); | ||
return !!unbundle(the_repository, &header, bundle_fd, 0) || | ||
list_bundle_refs(&header, argc, argv); | ||
} | ||
|
||
int cmd_bundle(int argc, const char **argv, const char *prefix) | ||
{ | ||
struct option options[] = { | ||
OPT__VERBOSE(&verbose, N_("be verbose; must be placed before a subcommand")), | ||
OPT_END() | ||
}; | ||
int result; | ||
|
||
argc = parse_options(argc, argv, prefix, options, builtin_bundle_usage, | ||
PARSE_OPT_STOP_AT_NON_OPTION); | ||
|
||
packet_trace_identity("bundle"); | ||
|
||
if (argc < 2) | ||
usage_with_options(builtin_bundle_usage, options); | ||
|
||
else if (!strcmp(argv[0], "create")) | ||
result = cmd_bundle_create(argc, argv, prefix); | ||
else if (!strcmp(argv[0], "verify")) | ||
result = cmd_bundle_verify(argc, argv, prefix); | ||
else if (!strcmp(argv[0], "list-heads")) | ||
result = cmd_bundle_list_heads(argc, argv, prefix); | ||
else if (!strcmp(argv[0], "unbundle")) | ||
result = cmd_bundle_unbundle(argc, argv, prefix); | ||
else { | ||
error(_("Unknown subcommand: %s"), argv[0]); | ||
usage_with_options(builtin_bundle_usage, options); | ||
} | ||
if (!strcmp(cmd, "create")) { | ||
if (argc < 2) { | ||
usage(builtin_bundle_usage); | ||
return 1; | ||
} | ||
if (!startup_info->have_repository) | ||
die(_("Need a repository to create a bundle.")); | ||
return !!create_bundle(the_repository, bundle_file, argc, argv); | ||
} else if (!strcmp(cmd, "unbundle")) { | ||
if (!startup_info->have_repository) | ||
die(_("Need a repository to unbundle.")); | ||
return !!unbundle(the_repository, &header, bundle_fd, 0) || | ||
list_bundle_refs(&header, argc, argv); | ||
} else | ||
usage(builtin_bundle_usage); | ||
return result ? 1 : 0; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
On the Git mailing list, "Robin H. Johnson" wrote (reply to this):