Merge branch 'ab/fetch-nego'
Update to a few other topics around 'git fetch'. * ab/fetch-nego: fetch doc: cross-link two new negotiation options negotiator: unknown fetch.negotiationAlgorithm should error out
This commit is contained in:
commit
28dbabb5e0
@ -1550,9 +1550,12 @@ fetch.negotiationAlgorithm::
|
|||||||
sent when negotiating the contents of the packfile to be sent by the
|
sent when negotiating the contents of the packfile to be sent by the
|
||||||
server. Set to "skipping" to use an algorithm that skips commits in an
|
server. Set to "skipping" to use an algorithm that skips commits in an
|
||||||
effort to converge faster, but may result in a larger-than-necessary
|
effort to converge faster, but may result in a larger-than-necessary
|
||||||
packfile; any other value instructs Git to use the default algorithm
|
packfile; The default is "default" which instructs Git to use the default algorithm
|
||||||
that never skips commits (unless the server has acknowledged it or one
|
that never skips commits (unless the server has acknowledged it or one
|
||||||
of its descendants).
|
of its descendants).
|
||||||
|
Unknown values will cause 'git fetch' to error out.
|
||||||
|
+
|
||||||
|
See also the `--negotiation-tip` option for linkgit:git-fetch[1].
|
||||||
|
|
||||||
format.attach::
|
format.attach::
|
||||||
Enable multipart/mixed attachments as the default for
|
Enable multipart/mixed attachments as the default for
|
||||||
|
@ -57,6 +57,9 @@ commits reachable from any of the given commits.
|
|||||||
The argument to this option may be a glob on ref names, a ref, or the (possibly
|
The argument to this option may be a glob on ref names, a ref, or the (possibly
|
||||||
abbreviated) SHA-1 of a commit. Specifying a glob is equivalent to specifying
|
abbreviated) SHA-1 of a commit. Specifying a glob is equivalent to specifying
|
||||||
this option multiple times, one for each matching ref name.
|
this option multiple times, one for each matching ref name.
|
||||||
|
+
|
||||||
|
See also the `fetch.negotiationAlgorithm` configuration variable
|
||||||
|
documented in linkgit:git-config[1].
|
||||||
|
|
||||||
ifndef::git-pull[]
|
ifndef::git-pull[]
|
||||||
--dry-run::
|
--dry-run::
|
||||||
|
@ -6,9 +6,15 @@
|
|||||||
void fetch_negotiator_init(struct fetch_negotiator *negotiator,
|
void fetch_negotiator_init(struct fetch_negotiator *negotiator,
|
||||||
const char *algorithm)
|
const char *algorithm)
|
||||||
{
|
{
|
||||||
if (algorithm && !strcmp(algorithm, "skipping")) {
|
if (algorithm) {
|
||||||
skipping_negotiator_init(negotiator);
|
if (!strcmp(algorithm, "skipping")) {
|
||||||
return;
|
skipping_negotiator_init(negotiator);
|
||||||
|
return;
|
||||||
|
} else if (!strcmp(algorithm, "default")) {
|
||||||
|
/* Fall through to default initialization */
|
||||||
|
} else {
|
||||||
|
die("unknown fetch negotiation algorithm '%s'", algorithm);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
default_negotiator_init(negotiator);
|
default_negotiator_init(negotiator);
|
||||||
}
|
}
|
||||||
|
@ -47,6 +47,29 @@ test_expect_success 'commits with no parents are sent regardless of skip distanc
|
|||||||
have_not_sent c6 c4 c3
|
have_not_sent c6 c4 c3
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'unknown fetch.negotiationAlgorithm values error out' '
|
||||||
|
rm -rf server client trace &&
|
||||||
|
git init server &&
|
||||||
|
test_commit -C server to_fetch &&
|
||||||
|
|
||||||
|
git init client &&
|
||||||
|
test_commit -C client on_client &&
|
||||||
|
git -C client checkout on_client &&
|
||||||
|
|
||||||
|
test_config -C client fetch.negotiationAlgorithm invalid &&
|
||||||
|
test_must_fail git -C client fetch "$(pwd)/server" 2>err &&
|
||||||
|
test_i18ngrep "unknown fetch negotiation algorithm" err &&
|
||||||
|
|
||||||
|
# Explicit "default" value
|
||||||
|
test_config -C client fetch.negotiationAlgorithm default &&
|
||||||
|
git -C client -c fetch.negotiationAlgorithm=default fetch "$(pwd)/server" &&
|
||||||
|
|
||||||
|
# Implementation detail: If there is nothing to fetch, we will not error out
|
||||||
|
test_config -C client fetch.negotiationAlgorithm invalid &&
|
||||||
|
git -C client fetch "$(pwd)/server" 2>err &&
|
||||||
|
test_i18ngrep ! "unknown fetch negotiation algorithm" err
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'when two skips collide, favor the larger one' '
|
test_expect_success 'when two skips collide, favor the larger one' '
|
||||||
rm -rf server client trace &&
|
rm -rf server client trace &&
|
||||||
git init server &&
|
git init server &&
|
||||||
|
Loading…
Reference in New Issue
Block a user