Merge branch 'nd/shallow-deepen'
The existing "git fetch --depth=<n>" option was hard to use correctly when making the history of an existing shallow clone deeper. A new option, "--deepen=<n>", has been added to make this easier to use. "git clone" also learned "--shallow-since=<date>" and "--shallow-exclude=<tag>" options to make it easier to specify "I am interested only in the recent N months worth of history" and "Give me only the history since that version". * nd/shallow-deepen: (27 commits) fetch, upload-pack: --deepen=N extends shallow boundary by N commits upload-pack: add get_reachable_list() upload-pack: split check_unreachable() in two, prep for get_reachable_list() t5500, t5539: tests for shallow depth excluding a ref clone: define shallow clone boundary with --shallow-exclude fetch: define shallow boundary with --shallow-exclude upload-pack: support define shallow boundary by excluding revisions refs: add expand_ref() t5500, t5539: tests for shallow depth since a specific date clone: define shallow clone boundary based on time with --shallow-since fetch: define shallow boundary with --shallow-since upload-pack: add deepen-since to cut shallow repos based on time shallow.c: implement a generic shallow boundary finder based on rev-list fetch-pack: use a separate flag for fetch in deepening mode fetch-pack.c: mark strings for translating fetch-pack: use a common function for verbose printing fetch-pack: use skip_prefix() instead of starts_with() upload-pack: move rev-list code out of check_non_tip() upload-pack: make check_non_tip() clean things up on error upload-pack: tighten number parsing at "deepen" lines ...
This commit is contained in:
@@ -51,6 +51,7 @@ int cmd_fetch_pack(int argc, const char **argv, const char *prefix)
|
||||
struct child_process *conn;
|
||||
struct fetch_pack_args args;
|
||||
struct sha1_array shallow = SHA1_ARRAY_INIT;
|
||||
struct string_list deepen_not = STRING_LIST_INIT_DUP;
|
||||
|
||||
packet_trace_identity("fetch-pack");
|
||||
|
||||
@@ -60,12 +61,12 @@ int cmd_fetch_pack(int argc, const char **argv, const char *prefix)
|
||||
for (i = 1; i < argc && *argv[i] == '-'; i++) {
|
||||
const char *arg = argv[i];
|
||||
|
||||
if (starts_with(arg, "--upload-pack=")) {
|
||||
args.uploadpack = arg + 14;
|
||||
if (skip_prefix(arg, "--upload-pack=", &arg)) {
|
||||
args.uploadpack = arg;
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--exec=")) {
|
||||
args.uploadpack = arg + 7;
|
||||
if (skip_prefix(arg, "--exec=", &arg)) {
|
||||
args.uploadpack = arg;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp("--quiet", arg) || !strcmp("-q", arg)) {
|
||||
@@ -101,8 +102,20 @@ int cmd_fetch_pack(int argc, const char **argv, const char *prefix)
|
||||
args.verbose = 1;
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--depth=")) {
|
||||
args.depth = strtol(arg + 8, NULL, 0);
|
||||
if (skip_prefix(arg, "--depth=", &arg)) {
|
||||
args.depth = strtol(arg, NULL, 0);
|
||||
continue;
|
||||
}
|
||||
if (skip_prefix(arg, "--shallow-since=", &arg)) {
|
||||
args.deepen_since = xstrdup(arg);
|
||||
continue;
|
||||
}
|
||||
if (skip_prefix(arg, "--shallow-exclude=", &arg)) {
|
||||
string_list_append(&deepen_not, arg);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(arg, "--deepen-relative")) {
|
||||
args.deepen_relative = 1;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp("--no-progress", arg)) {
|
||||
@@ -132,6 +145,8 @@ int cmd_fetch_pack(int argc, const char **argv, const char *prefix)
|
||||
}
|
||||
usage(fetch_pack_usage);
|
||||
}
|
||||
if (deepen_not.nr)
|
||||
args.deepen_not = &deepen_not;
|
||||
|
||||
if (i < argc)
|
||||
dest = argv[i++];
|
||||
|
||||
Reference in New Issue
Block a user