Avoid fetching every branch of a new remote in a shallow repo.
Changes in v5:
* Renumber test file from t5585 to t5586.
Changes in v4:
* Removed the automatic default-branch fetch. A fresh remote fetches
nothing until you track a branch explicitly.
* Fixed fetch report showing "new ref HEAD" instead of "new branch "
* Reworded remote..refmap docs and commit message.
Changes in v3:
* Replace the special ":"/"+:" fetch refspec with remote.<name>.refmap,
reusing git's existing --refmap mechanism instead of inventing new
refspec syntax.
* Split the change into 4 commits.
Changes in v2:
* Replaced the opt-in fetch.shallow config entirely with a new special
fetch refspec (+:) that git remote add now defaults new remotes to in a
shallow repository. The new refspec fetches whichever branches any local
branch tracks at that remote, plus the remote's default branch.
Harald Nordgren (4):
fetch: add remote.<name>.refmap
fetch: infer branches to fetch from a refmap-only remote
remote: add "git remote add --limited-fetch"
remote: default to --limited-fetch in a shallow repository
Documentation/config/remote.adoc | 8 +++
Documentation/fetch-options.adoc | 5 ++
Documentation/git-remote.adoc | 14 +++-
builtin/fetch.c | 60 +++++++++++++---
builtin/remote.c | 31 ++++++--
remote.c | 41 ++++++++++-
remote.h | 9 +++
t/meson.build | 1 +
t/t5505-remote.sh | 76 ++++++++++++++++++++
t/t5510-fetch.sh | 17 +++++
t/t5586-fetch-refmap.sh | 119 +++++++++++++++++++++++++++++++
11 files changed, 363 insertions(+), 18 deletions(-)
create mode 100755 t/t5586-fetch-refmap.sh
base-commit: a018953688f1b10bddf91bff8747068f5f4746a4
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-2412%2FHaraldNordgren%2Ffetch-shallow-narrow-refspec-v5
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-2412/HaraldNordgren/fetch-shallow-narrow-refspec-v5
Pull-Request: https://github.com/git/git/pull/2412
Range-diff vs v4:
1: d48a7004e4 = 1: d48a7004e4 fetch: add remote.<name>.refmap
2: 45b26e2bb2 ! 2: fecdbc43b8 fetch: infer branches to fetch from a refmap-only remote
@@ t/meson.build: integration_tests = [
't5582-fetch-negative-refspec.sh',
't5583-push-branches.sh',
't5584-http-429-retry.sh',
-+ 't5585-fetch-refmap.sh',
++ 't5586-fetch-refmap.sh',
't5600-clone-fail-cleanup.sh',
't5601-clone.sh',
't5602-clone-remote-exec.sh',
- ## t/t5585-fetch-refmap.sh (new) ##
+ ## t/t5586-fetch-refmap.sh (new) ##
@@
+#!/bin/sh
+
3: e2f072c254 = 3: b45f3cf0ab remote: add "git remote add --limited-fetch"
4: 43b9711a2c = 4: 8c2a144eb7 remote: default to --limited-fetch in a shallow repository