From: "Elijah Newren via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: "Derrick Stolee" <dstolee@microsoft.com>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
"Elijah Newren" <newren@gmail.com>,
"Jonathan Tan" <jonathantanmy@google.com>,
"Elijah Newren" <newren@gmail.com>
Subject: [PATCH v4 0/3] repo-settings: fix checking for fetch.negotiationAlgorithm=default
Date: Wed, 02 Feb 2022 03:42:37 +0000 [thread overview]
Message-ID: <pull.1131.v4.git.1643773361.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.1131.v3.git.1643734828.gitgitgadget@gmail.com>
This regression is not new in v2.35; it first appeared in v2.34. So, not
urgent.
Changes since v3:
* 'consecutive' is used as the traditional default. 'default' means either
'consecutive' or 'skipping' depending on feature.experimental.
Changes since v2:
* Also fix the fact that fetch.negotationAlgorithm=$BOGUS_VALUE no longer
errors out (yet another regression, this one dating back to v2.24.0), and
add a test to make sure we don't regress it again.
* Add 'consecutive' as a synonym for 'default', and remove 'default' from
the documentation to guide people towards using 'consecutive' when they
want the classic behavior.
Changes since v1:
* Put the common code in two testcases into a function, and then just
invoked it from each
Elijah Newren (3):
repo-settings: fix checking for fetch.negotiationAlgorithm=default
repo-settings: fix error handling for unknown values
repo-settings: rename the traditional default
fetch.negotiationAlgorithm
Documentation/config/fetch.txt | 25 +++++++++++++------------
fetch-negotiator.c | 2 +-
repo-settings.c | 9 ++++++++-
repository.h | 2 +-
t/t5500-fetch-pack.sh | 24 +++++++++++++++++++++---
5 files changed, 44 insertions(+), 18 deletions(-)
base-commit: 89bece5c8c96f0b962cfc89e63f82d603fd60bed
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1131%2Fnewren%2Ffix-fetch-negotiation-algorithm-equals-default-v4
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1131/newren/fix-fetch-negotiation-algorithm-equals-default-v4
Pull-Request: https://github.com/gitgitgadget/git/pull/1131
Range-diff vs v3:
1: df0ec5ffe98 = 1: df0ec5ffe98 repo-settings: fix checking for fetch.negotiationAlgorithm=default
2: 23f692b81be = 2: 23f692b81be repo-settings: fix error handling for unknown values
3: 7b28c527a90 ! 3: 7500a4d2e44 repo-settings: name the default fetch.negotiationAlgorithm 'consecutive'
@@ Metadata
Author: Elijah Newren <newren@gmail.com>
## Commit message ##
- repo-settings: name the default fetch.negotiationAlgorithm 'consecutive'
+ repo-settings: rename the traditional default fetch.negotiationAlgorithm
- Give the default fetch.negotiationAlgorithm the name 'consecutive' and
- update the documentation accordingly. Since there may be some users
- using the name 'default' for this behavior, retain that name for now.
- We do not want to use that name indefinitely, though, because if
- 'skipping' becomes the default, then the "default" behavior will not be
- the default behavior, which would be confusing.
+ Give the traditional default fetch.negotiationAlgorithm the name
+ 'consecutive'. Also allow a choice of 'default' to have Git decide
+ between the choices (currently, picking 'skipping' if
+ feature.experimental is true and 'consecutive' otherwise). Update the
+ documentation accordingly.
Signed-off-by: Elijah Newren <newren@gmail.com>
@@ Documentation/config/fetch.txt: fetch.output::
- that never skips commits (unless the server has acknowledged it or one
- of its descendants). If `feature.experimental` is enabled, then this
- setting defaults to "skipping".
+- Unknown values will cause 'git fetch' to error out.
+ Control how information about the commits in the local repository
+ is sent when negotiating the contents of the packfile to be sent by
+ the server. Set to "consecutive" to use an algorithm that walks
@@ Documentation/config/fetch.txt: fetch.output::
+ faster, but may result in a larger-than-necessary packfile; or set
+ to "noop" to not send any information at all, which will almost
+ certainly result in a larger-than-necessary packfile, but will skip
-+ the negotiation step. The default is normally "consecutive", but
-+ if `feature.experimental` is true, then the default is "skipping".
- Unknown values will cause 'git fetch' to error out.
++ the negotiation step. Set to "default" to override settings made
++ previously and use the default behaviour. The default is normally
++ "consecutive", but if `feature.experimental` is true, then the
++ default is "skipping". Unknown values will cause 'git fetch' to
++ error out.
+
See also the `--negotiate-only` and `--negotiation-tip` options to
+ linkgit:git-fetch[1].
## fetch-negotiator.c ##
@@ fetch-negotiator.c: void fetch_negotiator_init(struct repository *r,
@@ repo-settings.c: void prepare_repo_settings(struct repository *r)
/* Booleans config or default, cascades to other settings */
repo_cfg_bool(r, "feature.manyfiles", &manyfiles, 0);
@@ repo-settings.c: void prepare_repo_settings(struct repository *r)
+ }
+
+ if (!repo_config_get_string(r, "fetch.negotiationalgorithm", &strval)) {
++ int fetch_default = r->settings.fetch_negotiation_algorithm;
+ if (!strcasecmp(strval, "skipping"))
r->settings.fetch_negotiation_algorithm = FETCH_NEGOTIATION_SKIPPING;
else if (!strcasecmp(strval, "noop"))
r->settings.fetch_negotiation_algorithm = FETCH_NEGOTIATION_NOOP;
-- else if (!strcasecmp(strval, "default"))
-- r->settings.fetch_negotiation_algorithm = FETCH_NEGOTIATION_DEFAULT;
-+ else if (!strcasecmp(strval, "consecutive") ||
-+ !strcasecmp(strval, "default"))
++ else if (!strcasecmp(strval, "consecutive"))
+ r->settings.fetch_negotiation_algorithm = FETCH_NEGOTIATION_CONSECUTIVE;
+ else if (!strcasecmp(strval, "default"))
+- r->settings.fetch_negotiation_algorithm = FETCH_NEGOTIATION_DEFAULT;
++ r->settings.fetch_negotiation_algorithm = fetch_default;
else
die("unknown fetch negotiation algorithm '%s'", strval);
}
--
gitgitgadget
next prev parent reply other threads:[~2022-02-02 3:42 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-28 1:56 [PATCH] repo-settings: fix checking for fetch.negotiationAlgorithm=default Elijah Newren via GitGitGadget
2022-01-28 7:25 ` Ævar Arnfjörð Bjarmason
2022-01-29 1:40 ` Elijah Newren
2022-01-29 6:08 ` Ævar Arnfjörð Bjarmason
2022-01-31 16:57 ` Junio C Hamano
2022-01-31 17:33 ` Elijah Newren
2022-01-31 21:03 ` Ævar Arnfjörð Bjarmason
2022-01-31 21:47 ` Elijah Newren
2022-02-01 17:37 ` Jonathan Tan
2022-01-31 22:06 ` Junio C Hamano
2022-01-29 17:51 ` [PATCH v2] " Elijah Newren via GitGitGadget
2022-02-01 17:00 ` [PATCH v3 0/3] " Elijah Newren via GitGitGadget
2022-02-01 17:00 ` [PATCH v3 1/3] " Elijah Newren via GitGitGadget
2022-02-01 18:21 ` Junio C Hamano
2022-02-01 17:00 ` [PATCH v3 2/3] repo-settings: fix error handling for unknown values Elijah Newren via GitGitGadget
2022-02-01 18:21 ` Junio C Hamano
2022-02-01 17:00 ` [PATCH v3 3/3] repo-settings: name the default fetch.negotiationAlgorithm 'consecutive' Elijah Newren via GitGitGadget
2022-02-01 18:35 ` Junio C Hamano
2022-02-02 3:42 ` Elijah Newren via GitGitGadget [this message]
2022-02-02 3:42 ` [PATCH v4 1/3] repo-settings: fix checking for fetch.negotiationAlgorithm=default Elijah Newren via GitGitGadget
2022-02-02 3:42 ` [PATCH v4 2/3] repo-settings: fix error handling for unknown values Elijah Newren via GitGitGadget
2022-02-02 3:42 ` [PATCH v4 3/3] repo-settings: rename the traditional default fetch.negotiationAlgorithm Elijah Newren via GitGitGadget
2022-02-02 17:50 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=pull.1131.v4.git.1643773361.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=avarab@gmail.com \
--cc=dstolee@microsoft.com \
--cc=git@vger.kernel.org \
--cc=jonathantanmy@google.com \
--cc=newren@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.