fetch: define shallow boundary with --shallow-exclude
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
269a7a8316
commit
a45a260086
@ -41,6 +41,7 @@ static int max_children = 1;
|
||||
static const char *depth;
|
||||
static const char *deepen_since;
|
||||
static const char *upload_pack;
|
||||
static struct string_list deepen_not = STRING_LIST_INIT_NODUP;
|
||||
static struct strbuf default_rla = STRBUF_INIT;
|
||||
static struct transport *gtransport;
|
||||
static struct transport *gsecondary;
|
||||
@ -118,6 +119,8 @@ static struct option builtin_fetch_options[] = {
|
||||
N_("deepen history of shallow clone")),
|
||||
OPT_STRING(0, "shallow-since", &deepen_since, N_("time"),
|
||||
N_("deepen history of shallow repository based on time")),
|
||||
OPT_STRING_LIST(0, "shallow-exclude", &deepen_not, N_("revision"),
|
||||
N_("deepen history of shallow clone by excluding rev")),
|
||||
{ OPTION_SET_INT, 0, "unshallow", &unshallow, NULL,
|
||||
N_("convert to a complete repository"),
|
||||
PARSE_OPT_NONEG | PARSE_OPT_NOARG, NULL, 1 },
|
||||
@ -875,6 +878,9 @@ static struct transport *prepare_transport(struct remote *remote, int deepen)
|
||||
set_option(transport, TRANS_OPT_DEPTH, depth);
|
||||
if (deepen && deepen_since)
|
||||
set_option(transport, TRANS_OPT_DEEPEN_SINCE, deepen_since);
|
||||
if (deepen && deepen_not.nr)
|
||||
set_option(transport, TRANS_OPT_DEEPEN_NOT,
|
||||
(const char *)&deepen_not);
|
||||
if (update_shallow)
|
||||
set_option(transport, TRANS_OPT_UPDATE_SHALLOW, "yes");
|
||||
return transport;
|
||||
@ -889,9 +895,10 @@ static void backfill_tags(struct transport *transport, struct ref *ref_map)
|
||||
* when remote helper is used (setting it to an empty string
|
||||
* is not unsetting). We could extend the remote helper
|
||||
* protocol for that, but for now, just force a new connection
|
||||
* without deepen-since.
|
||||
* without deepen-since. Similar story for deepen-not.
|
||||
*/
|
||||
cannot_reuse = transport->cannot_reuse || deepen_since;
|
||||
cannot_reuse = transport->cannot_reuse ||
|
||||
deepen_since || deepen_not.nr;
|
||||
if (cannot_reuse) {
|
||||
gsecondary = prepare_transport(transport->remote, 0);
|
||||
transport = gsecondary;
|
||||
@ -1182,7 +1189,7 @@ int cmd_fetch(int argc, const char **argv, const char *prefix)
|
||||
/* no need to be strict, transport_set_option() will validate it again */
|
||||
if (depth && atoi(depth) < 1)
|
||||
die(_("depth %s is not a positive number"), depth);
|
||||
if (depth || deepen_since)
|
||||
if (depth || deepen_since || deepen_not.nr)
|
||||
deepen = 1;
|
||||
|
||||
if (recurse_submodules != RECURSE_SUBMODULES_OFF) {
|
||||
|
Reference in New Issue
Block a user