[PATCH 00/11] Start retiring .git/remotes/ and .git/branches/ for good

STALE2165d

33 messages, 5 authors, 2020-11-14 · open the first message on its own page

[PATCH 00/11] Start retiring .git/remotes/ and .git/branches/ for good

From: Johannes Schindelin <hidden>
Date: 2017-05-11 13:48:26

Git uses the config for remote/upstream information in favor of the
previously-used .git/remotes/ and .git/branches/ for a decade now.

Nothing in Git writes to these files any longer, and the most prominent
user of .git/branches/ (Cogito) is long abandoned.

It is time to start not only deprecating this feature, but *really*
deprecating it. Like, really, *really*. For reals.

Half of this patch series does that.

The second half is a preview of the patches to finally rip out the code
that implements .git/remotes/ & .git/branches/ support. We we will want
to apply them to a future major version of Git, after *really*
deprecating .git/remotes/ & .git/branches/ support for at least one
major version (I would be more comfortable with three major versions,
actually).

Note: even after these patches, there is still a file mentioning
.git/remote/ (sic!) and .git/branches/:
Documentation/git-show-branch.txt. The reference is not, however,
describing Git's internals, but merely uses existing commit history
(from the olden days) in an example.

There is also a reference in contrib/examples/git-fetch.sh, but that
should remain there, for historians' purposes.

Oh, and the reason that I split out the changes to t5505, t5510, t5515 &
t5516 in the PREVIEW part is that those changes are unfortunately not
quite as trivial as I hoped, and require a bit of a rationale for the
way they were performed in the commit message. Read: I wanted to make
this patch series easier to review. And as I already split out all the
t/ patches, it felt silly to *not* split out the t0060 patch.


Johannes Schindelin (11):
  git-parse-remote: fix highly misleading man page
  Documentation: really deprecate .git/remotes/ and .git/branches/
  remote: warn loud and clear when .git/branches/ is *still* used
  remote: warn loud and clear when .git/remotes/ is *still* used
  Revert "Revert "Don't create the $GIT_DIR/branches directory on init""
  PREVIEW: t5510: convert .git/remotes/ test to use a regular remote
  PREVIEW: t5516: stop testing .git/branches/ functionality
  PREVIEW: remote: remove support for migrating ancient remotes
  PREVIEW: t5515: remove .git/remotes/ and .git/branches/ tests
  PREVIEW: t0060: stop testing support for .git/remotes/ and
    .git/branches/
  PREVIEW: remove support for .git/remotes/ and .git/branches/

 Documentation/git-parse-remote.txt                 |  7 +-
 Documentation/git-remote.txt                       |  4 -
 Documentation/gitrepository-layout.txt             | 19 +++--
 Documentation/urls-remotes.txt                     | 65 +---------------
 builtin/remote.c                                   | 27 -------
 path.c                                             |  2 -
 remote.c                                           | 89 ----------------------
 remote.h                                           |  4 +-
 t/t0060-path-utils.sh                              |  2 -
 t/t5505-remote.sh                                  | 55 -------------
 t/t5510-fetch.sh                                   | 10 +--
 t/t5515-fetch-merge-logic.sh                       | 23 ------
 t/t5515/fetch.br-branches-default                  |  8 --
 t/t5515/fetch.br-branches-default-merge            |  9 ---
 ...etch.br-branches-default-merge_branches-default |  9 ---
 t/t5515/fetch.br-branches-default-octopus          | 10 ---
 ...ch.br-branches-default-octopus_branches-default | 10 ---
 t/t5515/fetch.br-branches-default_branches-default |  8 --
 t/t5515/fetch.br-branches-one                      |  8 --
 t/t5515/fetch.br-branches-one-merge                |  9 ---
 t/t5515/fetch.br-branches-one-merge_branches-one   |  9 ---
 t/t5515/fetch.br-branches-one-octopus              |  9 ---
 t/t5515/fetch.br-branches-one-octopus_branches-one |  9 ---
 t/t5515/fetch.br-branches-one_branches-one         |  8 --
 t/t5515/fetch.br-remote-explicit                   | 11 ---
 t/t5515/fetch.br-remote-explicit-merge             | 11 ---
 .../fetch.br-remote-explicit-merge_remote-explicit | 11 ---
 t/t5515/fetch.br-remote-explicit-octopus           | 11 ---
 ...etch.br-remote-explicit-octopus_remote-explicit | 11 ---
 t/t5515/fetch.br-remote-explicit_remote-explicit   | 11 ---
 t/t5515/fetch.br-remote-glob                       | 11 ---
 t/t5515/fetch.br-remote-glob-merge                 | 11 ---
 t/t5515/fetch.br-remote-glob-merge_remote-glob     | 11 ---
 t/t5515/fetch.br-remote-glob-octopus               | 11 ---
 t/t5515/fetch.br-remote-glob-octopus_remote-glob   | 11 ---
 t/t5515/fetch.br-remote-glob_remote-glob           | 11 ---
 t/t5515/fetch.br-unconfig_branches-default         |  8 --
 t/t5515/fetch.br-unconfig_branches-one             |  8 --
 t/t5515/fetch.br-unconfig_remote-explicit          | 11 ---
 t/t5515/fetch.br-unconfig_remote-glob              | 11 ---
 t/t5515/fetch.master_branches-default              |  8 --
 t/t5515/fetch.master_branches-one                  |  8 --
 t/t5515/fetch.master_remote-explicit               | 11 ---
 t/t5515/fetch.master_remote-glob                   | 11 ---
 t/t5515/refs.br-branches-default                   | 12 ---
 t/t5515/refs.br-branches-default-merge             | 12 ---
 ...refs.br-branches-default-merge_branches-default | 12 ---
 t/t5515/refs.br-branches-default-octopus           | 12 ---
 ...fs.br-branches-default-octopus_branches-default | 12 ---
 t/t5515/refs.br-branches-default_branches-default  | 12 ---
 t/t5515/refs.br-branches-one                       | 12 ---
 t/t5515/refs.br-branches-one-merge                 | 12 ---
 t/t5515/refs.br-branches-one-merge_branches-one    | 12 ---
 t/t5515/refs.br-branches-one-octopus               | 12 ---
 t/t5515/refs.br-branches-one-octopus_branches-one  | 12 ---
 t/t5515/refs.br-branches-one_branches-one          | 12 ---
 t/t5515/refs.br-remote-explicit                    | 15 ----
 t/t5515/refs.br-remote-explicit-merge              | 15 ----
 .../refs.br-remote-explicit-merge_remote-explicit  | 15 ----
 t/t5515/refs.br-remote-explicit-octopus            | 15 ----
 ...refs.br-remote-explicit-octopus_remote-explicit | 15 ----
 t/t5515/refs.br-remote-explicit_remote-explicit    | 15 ----
 t/t5515/refs.br-remote-glob                        | 15 ----
 t/t5515/refs.br-remote-glob-merge                  | 15 ----
 t/t5515/refs.br-remote-glob-merge_remote-glob      | 15 ----
 t/t5515/refs.br-remote-glob-octopus                | 15 ----
 t/t5515/refs.br-remote-glob-octopus_remote-glob    | 15 ----
 t/t5515/refs.br-remote-glob_remote-glob            | 15 ----
 t/t5515/refs.br-unconfig_branches-default          | 12 ---
 t/t5515/refs.br-unconfig_branches-one              | 12 ---
 t/t5515/refs.br-unconfig_remote-explicit           | 15 ----
 t/t5515/refs.br-unconfig_remote-glob               | 15 ----
 t/t5515/refs.master_branches-default               | 12 ---
 t/t5515/refs.master_branches-one                   | 12 ---
 t/t5515/refs.master_remote-explicit                | 15 ----
 t/t5515/refs.master_remote-glob                    | 15 ----
 t/t5516-fetch-push.sh                              | 55 +------------
 templates/branches--                               |  1 -
 78 files changed, 20 insertions(+), 1089 deletions(-)
 delete mode 100644 t/t5515/fetch.br-branches-default
 delete mode 100644 t/t5515/fetch.br-branches-default-merge
 delete mode 100644 t/t5515/fetch.br-branches-default-merge_branches-default
 delete mode 100644 t/t5515/fetch.br-branches-default-octopus
 delete mode 100644 t/t5515/fetch.br-branches-default-octopus_branches-default
 delete mode 100644 t/t5515/fetch.br-branches-default_branches-default
 delete mode 100644 t/t5515/fetch.br-branches-one
 delete mode 100644 t/t5515/fetch.br-branches-one-merge
 delete mode 100644 t/t5515/fetch.br-branches-one-merge_branches-one
 delete mode 100644 t/t5515/fetch.br-branches-one-octopus
 delete mode 100644 t/t5515/fetch.br-branches-one-octopus_branches-one
 delete mode 100644 t/t5515/fetch.br-branches-one_branches-one
 delete mode 100644 t/t5515/fetch.br-remote-explicit
 delete mode 100644 t/t5515/fetch.br-remote-explicit-merge
 delete mode 100644 t/t5515/fetch.br-remote-explicit-merge_remote-explicit
 delete mode 100644 t/t5515/fetch.br-remote-explicit-octopus
 delete mode 100644 t/t5515/fetch.br-remote-explicit-octopus_remote-explicit
 delete mode 100644 t/t5515/fetch.br-remote-explicit_remote-explicit
 delete mode 100644 t/t5515/fetch.br-remote-glob
 delete mode 100644 t/t5515/fetch.br-remote-glob-merge
 delete mode 100644 t/t5515/fetch.br-remote-glob-merge_remote-glob
 delete mode 100644 t/t5515/fetch.br-remote-glob-octopus
 delete mode 100644 t/t5515/fetch.br-remote-glob-octopus_remote-glob
 delete mode 100644 t/t5515/fetch.br-remote-glob_remote-glob
 delete mode 100644 t/t5515/fetch.br-unconfig_branches-default
 delete mode 100644 t/t5515/fetch.br-unconfig_branches-one
 delete mode 100644 t/t5515/fetch.br-unconfig_remote-explicit
 delete mode 100644 t/t5515/fetch.br-unconfig_remote-glob
 delete mode 100644 t/t5515/fetch.master_branches-default
 delete mode 100644 t/t5515/fetch.master_branches-one
 delete mode 100644 t/t5515/fetch.master_remote-explicit
 delete mode 100644 t/t5515/fetch.master_remote-glob
 delete mode 100644 t/t5515/refs.br-branches-default
 delete mode 100644 t/t5515/refs.br-branches-default-merge
 delete mode 100644 t/t5515/refs.br-branches-default-merge_branches-default
 delete mode 100644 t/t5515/refs.br-branches-default-octopus
 delete mode 100644 t/t5515/refs.br-branches-default-octopus_branches-default
 delete mode 100644 t/t5515/refs.br-branches-default_branches-default
 delete mode 100644 t/t5515/refs.br-branches-one
 delete mode 100644 t/t5515/refs.br-branches-one-merge
 delete mode 100644 t/t5515/refs.br-branches-one-merge_branches-one
 delete mode 100644 t/t5515/refs.br-branches-one-octopus
 delete mode 100644 t/t5515/refs.br-branches-one-octopus_branches-one
 delete mode 100644 t/t5515/refs.br-branches-one_branches-one
 delete mode 100644 t/t5515/refs.br-remote-explicit
 delete mode 100644 t/t5515/refs.br-remote-explicit-merge
 delete mode 100644 t/t5515/refs.br-remote-explicit-merge_remote-explicit
 delete mode 100644 t/t5515/refs.br-remote-explicit-octopus
 delete mode 100644 t/t5515/refs.br-remote-explicit-octopus_remote-explicit
 delete mode 100644 t/t5515/refs.br-remote-explicit_remote-explicit
 delete mode 100644 t/t5515/refs.br-remote-glob
 delete mode 100644 t/t5515/refs.br-remote-glob-merge
 delete mode 100644 t/t5515/refs.br-remote-glob-merge_remote-glob
 delete mode 100644 t/t5515/refs.br-remote-glob-octopus
 delete mode 100644 t/t5515/refs.br-remote-glob-octopus_remote-glob
 delete mode 100644 t/t5515/refs.br-remote-glob_remote-glob
 delete mode 100644 t/t5515/refs.br-unconfig_branches-default
 delete mode 100644 t/t5515/refs.br-unconfig_branches-one
 delete mode 100644 t/t5515/refs.br-unconfig_remote-explicit
 delete mode 100644 t/t5515/refs.br-unconfig_remote-glob
 delete mode 100644 t/t5515/refs.master_branches-default
 delete mode 100644 t/t5515/refs.master_branches-one
 delete mode 100644 t/t5515/refs.master_remote-explicit
 delete mode 100644 t/t5515/refs.master_remote-glob
 delete mode 100644 templates/branches--


base-commit: b06d3643105c8758ed019125a4399cb7efdcce2c
Published-As: https://github.com/dscho/git/releases/tag/retire-cogito-branches-v1
Fetch-It-Via: git fetch https://github.com/dscho/git retire-cogito-branches-v1

-- 
2.12.2.windows.2.800.gede8f145e06

[PATCH 05/11] Revert "Revert "Don't create the $GIT_DIR/branches directory on init""

From: Johannes Schindelin <hidden>
Date: 2017-05-11 13:48:22

A long, long, long time ago, we stored the "upstream" information of
branches in files inside the .git/branches/ directory. We don't do this
anymore, though. Since 5751f49010e (Move remote parsing into a library
file out of builtin-push., 2007-05-12), to be precise.

This is sort of a sibling to 75c384efb52 (Do not create $GIT_DIR/remotes/
directory anymore., 2006-12-19).

The tests t5505-remote and t5516-fetch-push need to be adjusted now, as
they expect to find a .git/branches/ directory.

This reverts c8a58ac5a52 (Revert "Don't create the $GIT_DIR/branches
directory on init", 2009-10-31).

Signed-off-by: Johannes Schindelin <redacted>
---
 t/t5505-remote.sh     | 2 ++
 t/t5516-fetch-push.sh | 4 ++++
 templates/branches--  | 1 -
 3 files changed, 6 insertions(+), 1 deletion(-)
 delete mode 100644 templates/branches--
diff --git a/t/t5505-remote.sh b/t/t5505-remote.sh
index a6c0178f3af..4fd66760c75 100755
--- a/t/t5505-remote.sh
+++ b/t/t5505-remote.sh
@@ -830,6 +830,7 @@ test_expect_success 'migrate a remote from named file in $GIT_DIR/branches' '
 	(
 		cd six &&
 		git remote rm origin &&
+		mkdir -p .git/branches &&
 		echo "$origin_url" >.git/branches/origin &&
 		git remote rename origin origin &&
 		test_path_is_missing .git/branches/origin &&
@@ -844,6 +845,7 @@ test_expect_success 'migrate a remote from named file in $GIT_DIR/branches (2)'
 	(
 		cd seven &&
 		git remote rm origin &&
+		mkdir .git/branches &&
 		echo "quux#foom" > .git/branches/origin &&
 		git remote rename origin origin &&
 		test_path_is_missing .git/branches/origin &&
diff --git a/t/t5516-fetch-push.sh b/t/t5516-fetch-push.sh
index 177897ea0b1..457f648ad91 100755
--- a/t/t5516-fetch-push.sh
+++ b/t/t5516-fetch-push.sh
@@ -866,6 +866,7 @@ test_expect_success 'fetch with branches' '
 	mk_empty testrepo &&
 	git branch second $the_first_commit &&
 	git checkout second &&
+	mkdir -p testrepo/.git/branches &&
 	echo ".." > testrepo/.git/branches/branch1 &&
 	(
 		cd testrepo &&
@@ -879,6 +880,7 @@ test_expect_success 'fetch with branches' '
 
 test_expect_success 'fetch with branches containing #' '
 	mk_empty testrepo &&
+	mkdir -p testrepo/.git/branches &&
 	echo "..#second" > testrepo/.git/branches/branch2 &&
 	(
 		cd testrepo &&
@@ -893,6 +895,7 @@ test_expect_success 'fetch with branches containing #' '
 test_expect_success 'push with branches' '
 	mk_empty testrepo &&
 	git checkout second &&
+	mkdir -p .git/branches &&
 	echo "testrepo" > .git/branches/branch1 &&
 	git push branch1 &&
 	(
@@ -905,6 +908,7 @@ test_expect_success 'push with branches' '
 
 test_expect_success 'push with branches containing #' '
 	mk_empty testrepo &&
+	mkdir -p .git/branches &&
 	echo "testrepo#branch3" > .git/branches/branch2 &&
 	git push branch2 &&
 	(
diff --git a/templates/branches-- b/templates/branches--
deleted file mode 100644
index fae88709a63..00000000000
--- a/templates/branches--
+++ /dev/null
@@ -1 +0,0 @@
-: this is just to ensure the directory exists.
-- 
2.12.2.windows.2.800.gede8f145e06

[PATCH 04/11] remote: warn loud and clear when .git/remotes/ is *still* used

From: Johannes Schindelin <hidden>
Date: 2017-05-11 13:48:24

Since at least 75c384efb52 (Do not create $GIT_DIR/remotes/ directory
anymore., 2006-12-19), we strongly prefer remotes and upstream branches
to be specified in the config rather than .git/remotes/ and
.git/branches/.

For some time, we still retained backwards-compatibility. At some stage,
it becomes pointless, though, as it just adds maintenance burden for no
good reason: no repositories created within the past decade have
populated these directories, and pre-existing repositories were most
likely migrated by now.

In preparation for removing support for this ancient compatibility that
should no longer be necessary, let's warn everybody who is still using
that feature (if there is anybody left, that is).

Signed-off-by: Johannes Schindelin <redacted>
---
 remote.c | 4 ++++
 1 file changed, 4 insertions(+)
diff --git a/remote.c b/remote.c
index 04ab2230337..b2ae168035e 100644
--- a/remote.c
+++ b/remote.c
@@ -255,6 +255,10 @@ static void read_remotes_file(struct remote *remote)
 
 	if (!f)
 		return;
+
+	warning(_("the remote '%s' uses the long-deprecated '%s' file"),
+		remote->name, git_path("branches/%s", remote->name));
+
 	remote->configured_in_repo = 1;
 	remote->origin = REMOTE_REMOTES;
 	while (strbuf_getline(&buf, f) != EOF) {
-- 
2.12.2.windows.2.800.gede8f145e06

[PATCH 01/11] git-parse-remote: fix highly misleading man page

From: Johannes Schindelin <hidden>
Date: 2017-05-11 13:48:28

The man page still talked about the .git/remotes/ directory (which is no
longer in use, as of 75c384efb52 (Do not create $GIT_DIR/remotes/
directory anymore., 2006-12-19)).

Let's just revamp it almost completely to reflect the *purpose* of that
scriptlet, as opposed to its implementation details.

Signed-off-by: Johannes Schindelin <redacted>
---
 Documentation/git-parse-remote.txt | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/Documentation/git-parse-remote.txt b/Documentation/git-parse-remote.txt
index a45ea1ece81..7f865f33898 100644
--- a/Documentation/git-parse-remote.txt
+++ b/Documentation/git-parse-remote.txt
@@ -3,7 +3,7 @@ git-parse-remote(1)
 
 NAME
 ----
-git-parse-remote - Routines to help parsing remote repository access parameters
+git-parse-remote - Routines to help parsing remote repository information
 
 
 SYNOPSIS
@@ -14,9 +14,8 @@ SYNOPSIS
 DESCRIPTION
 -----------
 This script is included in various scripts to supply
-routines to parse files under $GIT_DIR/remotes/ and
-$GIT_DIR/branches/ and configuration variables that are related
-to fetching, pulling and pushing.
+routines to query the remote repository and its branch
+associated with the current branch.
 
 GIT
 ---
-- 
2.12.2.windows.2.800.gede8f145e06

[PATCH 03/11] remote: warn loud and clear when .git/branches/ is *still* used

From: Johannes Schindelin <hidden>
Date: 2017-05-11 13:48:30

Since at least 5751f49010e (Move remote parsing into a library file out
of builtin-push., 2007-05-12), we strongly prefer remotes and upstream
branches to be specified in the config rather than .git/remotes/ and
.git/branches/.

For some time, we still retained compatibility with Cogito (which was an
excellent project demonstrating many useful features that eventually
were integrated into Git proper) by creating the branches/ subdirectory
upon git-init.

In preparation for removing support for this ancient compatibility that
should no longer be necessary, let's warn everybody who is still using
that feature (if there is anybody left, that is).

Signed-off-by: Johannes Schindelin <redacted>
---
 remote.c | 3 +++
 1 file changed, 3 insertions(+)
diff --git a/remote.c b/remote.c
index 801137c72eb..04ab2230337 100644
--- a/remote.c
+++ b/remote.c
@@ -290,6 +290,9 @@ static void read_branches_file(struct remote *remote)
 		return;
 	}
 
+	warning(_("the branch '%s' uses the long-deprecated '%s' file"),
+		remote->name, git_path("branches/%s", remote->name));
+
 	remote->configured_in_repo = 1;
 	remote->origin = REMOTE_BRANCHES;
 
-- 
2.12.2.windows.2.800.gede8f145e06

[PATCH 09/11] PREVIEW: t5515: remove .git/remotes/ and .git/branches/ tests

From: Johannes Schindelin <hidden>
Date: 2017-05-11 13:48:33

We are about to remove support for the long-obsolete .git/remotes/ and
.git/branches/ directories. Let's stop testing them, in preparation for
that move.

The bulk of this patch simply removes support files that are no longer
needed.

Signed-off-by: Johannes Schindelin <redacted>
---
 t/t5515-fetch-merge-logic.sh                       | 23 ----------------------
 t/t5515/fetch.br-branches-default                  |  8 --------
 t/t5515/fetch.br-branches-default-merge            |  9 ---------
 ...etch.br-branches-default-merge_branches-default |  9 ---------
 t/t5515/fetch.br-branches-default-octopus          | 10 ----------
 ...ch.br-branches-default-octopus_branches-default | 10 ----------
 t/t5515/fetch.br-branches-default_branches-default |  8 --------
 t/t5515/fetch.br-branches-one                      |  8 --------
 t/t5515/fetch.br-branches-one-merge                |  9 ---------
 t/t5515/fetch.br-branches-one-merge_branches-one   |  9 ---------
 t/t5515/fetch.br-branches-one-octopus              |  9 ---------
 t/t5515/fetch.br-branches-one-octopus_branches-one |  9 ---------
 t/t5515/fetch.br-branches-one_branches-one         |  8 --------
 t/t5515/fetch.br-remote-explicit                   | 11 -----------
 t/t5515/fetch.br-remote-explicit-merge             | 11 -----------
 .../fetch.br-remote-explicit-merge_remote-explicit | 11 -----------
 t/t5515/fetch.br-remote-explicit-octopus           | 11 -----------
 ...etch.br-remote-explicit-octopus_remote-explicit | 11 -----------
 t/t5515/fetch.br-remote-explicit_remote-explicit   | 11 -----------
 t/t5515/fetch.br-remote-glob                       | 11 -----------
 t/t5515/fetch.br-remote-glob-merge                 | 11 -----------
 t/t5515/fetch.br-remote-glob-merge_remote-glob     | 11 -----------
 t/t5515/fetch.br-remote-glob-octopus               | 11 -----------
 t/t5515/fetch.br-remote-glob-octopus_remote-glob   | 11 -----------
 t/t5515/fetch.br-remote-glob_remote-glob           | 11 -----------
 t/t5515/fetch.br-unconfig_branches-default         |  8 --------
 t/t5515/fetch.br-unconfig_branches-one             |  8 --------
 t/t5515/fetch.br-unconfig_remote-explicit          | 11 -----------
 t/t5515/fetch.br-unconfig_remote-glob              | 11 -----------
 t/t5515/fetch.master_branches-default              |  8 --------
 t/t5515/fetch.master_branches-one                  |  8 --------
 t/t5515/fetch.master_remote-explicit               | 11 -----------
 t/t5515/fetch.master_remote-glob                   | 11 -----------
 t/t5515/refs.br-branches-default                   | 12 -----------
 t/t5515/refs.br-branches-default-merge             | 12 -----------
 ...refs.br-branches-default-merge_branches-default | 12 -----------
 t/t5515/refs.br-branches-default-octopus           | 12 -----------
 ...fs.br-branches-default-octopus_branches-default | 12 -----------
 t/t5515/refs.br-branches-default_branches-default  | 12 -----------
 t/t5515/refs.br-branches-one                       | 12 -----------
 t/t5515/refs.br-branches-one-merge                 | 12 -----------
 t/t5515/refs.br-branches-one-merge_branches-one    | 12 -----------
 t/t5515/refs.br-branches-one-octopus               | 12 -----------
 t/t5515/refs.br-branches-one-octopus_branches-one  | 12 -----------
 t/t5515/refs.br-branches-one_branches-one          | 12 -----------
 t/t5515/refs.br-remote-explicit                    | 15 --------------
 t/t5515/refs.br-remote-explicit-merge              | 15 --------------
 .../refs.br-remote-explicit-merge_remote-explicit  | 15 --------------
 t/t5515/refs.br-remote-explicit-octopus            | 15 --------------
 ...refs.br-remote-explicit-octopus_remote-explicit | 15 --------------
 t/t5515/refs.br-remote-explicit_remote-explicit    | 15 --------------
 t/t5515/refs.br-remote-glob                        | 15 --------------
 t/t5515/refs.br-remote-glob-merge                  | 15 --------------
 t/t5515/refs.br-remote-glob-merge_remote-glob      | 15 --------------
 t/t5515/refs.br-remote-glob-octopus                | 15 --------------
 t/t5515/refs.br-remote-glob-octopus_remote-glob    | 15 --------------
 t/t5515/refs.br-remote-glob_remote-glob            | 15 --------------
 t/t5515/refs.br-unconfig_branches-default          | 12 -----------
 t/t5515/refs.br-unconfig_branches-one              | 12 -----------
 t/t5515/refs.br-unconfig_remote-explicit           | 15 --------------
 t/t5515/refs.br-unconfig_remote-glob               | 15 --------------
 t/t5515/refs.master_branches-default               | 12 -----------
 t/t5515/refs.master_branches-one                   | 12 -----------
 t/t5515/refs.master_remote-explicit                | 15 --------------
 t/t5515/refs.master_remote-glob                    | 15 --------------
 65 files changed, 769 deletions(-)
 delete mode 100644 t/t5515/fetch.br-branches-default
 delete mode 100644 t/t5515/fetch.br-branches-default-merge
 delete mode 100644 t/t5515/fetch.br-branches-default-merge_branches-default
 delete mode 100644 t/t5515/fetch.br-branches-default-octopus
 delete mode 100644 t/t5515/fetch.br-branches-default-octopus_branches-default
 delete mode 100644 t/t5515/fetch.br-branches-default_branches-default
 delete mode 100644 t/t5515/fetch.br-branches-one
 delete mode 100644 t/t5515/fetch.br-branches-one-merge
 delete mode 100644 t/t5515/fetch.br-branches-one-merge_branches-one
 delete mode 100644 t/t5515/fetch.br-branches-one-octopus
 delete mode 100644 t/t5515/fetch.br-branches-one-octopus_branches-one
 delete mode 100644 t/t5515/fetch.br-branches-one_branches-one
 delete mode 100644 t/t5515/fetch.br-remote-explicit
 delete mode 100644 t/t5515/fetch.br-remote-explicit-merge
 delete mode 100644 t/t5515/fetch.br-remote-explicit-merge_remote-explicit
 delete mode 100644 t/t5515/fetch.br-remote-explicit-octopus
 delete mode 100644 t/t5515/fetch.br-remote-explicit-octopus_remote-explicit
 delete mode 100644 t/t5515/fetch.br-remote-explicit_remote-explicit
 delete mode 100644 t/t5515/fetch.br-remote-glob
 delete mode 100644 t/t5515/fetch.br-remote-glob-merge
 delete mode 100644 t/t5515/fetch.br-remote-glob-merge_remote-glob
 delete mode 100644 t/t5515/fetch.br-remote-glob-octopus
 delete mode 100644 t/t5515/fetch.br-remote-glob-octopus_remote-glob
 delete mode 100644 t/t5515/fetch.br-remote-glob_remote-glob
 delete mode 100644 t/t5515/fetch.br-unconfig_branches-default
 delete mode 100644 t/t5515/fetch.br-unconfig_branches-one
 delete mode 100644 t/t5515/fetch.br-unconfig_remote-explicit
 delete mode 100644 t/t5515/fetch.br-unconfig_remote-glob
 delete mode 100644 t/t5515/fetch.master_branches-default
 delete mode 100644 t/t5515/fetch.master_branches-one
 delete mode 100644 t/t5515/fetch.master_remote-explicit
 delete mode 100644 t/t5515/fetch.master_remote-glob
 delete mode 100644 t/t5515/refs.br-branches-default
 delete mode 100644 t/t5515/refs.br-branches-default-merge
 delete mode 100644 t/t5515/refs.br-branches-default-merge_branches-default
 delete mode 100644 t/t5515/refs.br-branches-default-octopus
 delete mode 100644 t/t5515/refs.br-branches-default-octopus_branches-default
 delete mode 100644 t/t5515/refs.br-branches-default_branches-default
 delete mode 100644 t/t5515/refs.br-branches-one
 delete mode 100644 t/t5515/refs.br-branches-one-merge
 delete mode 100644 t/t5515/refs.br-branches-one-merge_branches-one
 delete mode 100644 t/t5515/refs.br-branches-one-octopus
 delete mode 100644 t/t5515/refs.br-branches-one-octopus_branches-one
 delete mode 100644 t/t5515/refs.br-branches-one_branches-one
 delete mode 100644 t/t5515/refs.br-remote-explicit
 delete mode 100644 t/t5515/refs.br-remote-explicit-merge
 delete mode 100644 t/t5515/refs.br-remote-explicit-merge_remote-explicit
 delete mode 100644 t/t5515/refs.br-remote-explicit-octopus
 delete mode 100644 t/t5515/refs.br-remote-explicit-octopus_remote-explicit
 delete mode 100644 t/t5515/refs.br-remote-explicit_remote-explicit
 delete mode 100644 t/t5515/refs.br-remote-glob
 delete mode 100644 t/t5515/refs.br-remote-glob-merge
 delete mode 100644 t/t5515/refs.br-remote-glob-merge_remote-glob
 delete mode 100644 t/t5515/refs.br-remote-glob-octopus
 delete mode 100644 t/t5515/refs.br-remote-glob-octopus_remote-glob
 delete mode 100644 t/t5515/refs.br-remote-glob_remote-glob
 delete mode 100644 t/t5515/refs.br-unconfig_branches-default
 delete mode 100644 t/t5515/refs.br-unconfig_branches-one
 delete mode 100644 t/t5515/refs.br-unconfig_remote-explicit
 delete mode 100644 t/t5515/refs.br-unconfig_remote-glob
 delete mode 100644 t/t5515/refs.master_branches-default
 delete mode 100644 t/t5515/refs.master_branches-one
 delete mode 100644 t/t5515/refs.master_remote-explicit
 delete mode 100644 t/t5515/refs.master_remote-glob
diff --git a/t/t5515-fetch-merge-logic.sh b/t/t5515-fetch-merge-logic.sh
index 36b0dbc01cf..19639ffe598 100755
--- a/t/t5515-fetch-merge-logic.sh
+++ b/t/t5515-fetch-merge-logic.sh
@@ -55,29 +55,6 @@ test_expect_success setup '
 	git config remote.config-glob.fetch refs/heads/*:refs/remotes/rem/* &&
 	remotes="$remotes config-glob" &&
 
-	mkdir -p .git/remotes &&
-	{
-		echo "URL: ../.git/"
-		echo "Pull: refs/heads/master:remotes/rem/master"
-		echo "Pull: refs/heads/one:remotes/rem/one"
-		echo "Pull: two:remotes/rem/two"
-		echo "Pull: refs/heads/three:remotes/rem/three"
-	} >.git/remotes/remote-explicit &&
-	remotes="$remotes remote-explicit" &&
-
-	{
-		echo "URL: ../.git/"
-		echo "Pull: refs/heads/*:refs/remotes/rem/*"
-	} >.git/remotes/remote-glob &&
-	remotes="$remotes remote-glob" &&
-
-	mkdir -p .git/branches &&
-	echo "../.git" > .git/branches/branches-default &&
-	remotes="$remotes branches-default" &&
-
-	echo "../.git#one" > .git/branches/branches-one &&
-	remotes="$remotes branches-one" &&
-
 	for remote in $remotes ; do
 		git config branch.br-$remote.remote $remote &&
 		git config branch.br-$remote-merge.remote $remote &&
diff --git a/t/t5515/fetch.br-branches-default b/t/t5515/fetch.br-branches-default
deleted file mode 100644
index a1bc3d53a60..00000000000
--- a/t/t5515/fetch.br-branches-default
+++ /dev/null
@@ -1,8 +0,0 @@
-# br-branches-default
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f		branch 'master' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-branches-default-merge b/t/t5515/fetch.br-branches-default-merge
deleted file mode 100644
index 12ab08e8acb..00000000000
--- a/t/t5515/fetch.br-branches-default-merge
+++ /dev/null
@@ -1,9 +0,0 @@
-# br-branches-default-merge
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b		branch 'three' of ../
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f	not-for-merge	branch 'master' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-branches-default-merge_branches-default b/t/t5515/fetch.br-branches-default-merge_branches-default
deleted file mode 100644
index 54427522dd5..00000000000
--- a/t/t5515/fetch.br-branches-default-merge_branches-default
+++ /dev/null
@@ -1,9 +0,0 @@
-# br-branches-default-merge branches-default
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b		branch 'three' of ../
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f	not-for-merge	branch 'master' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-branches-default-octopus b/t/t5515/fetch.br-branches-default-octopus
deleted file mode 100644
index 498a761aae8..00000000000
--- a/t/t5515/fetch.br-branches-default-octopus
+++ /dev/null
@@ -1,10 +0,0 @@
-# br-branches-default-octopus
-8e32a6d901327a23ef831511badce7bf3bf46689		branch 'one' of ../
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8		branch 'two' of ../
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f	not-for-merge	branch 'master' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-branches-default-octopus_branches-default b/t/t5515/fetch.br-branches-default-octopus_branches-default
deleted file mode 100644
index 0857f134e10..00000000000
--- a/t/t5515/fetch.br-branches-default-octopus_branches-default
+++ /dev/null
@@ -1,10 +0,0 @@
-# br-branches-default-octopus branches-default
-8e32a6d901327a23ef831511badce7bf3bf46689		branch 'one' of ../
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8		branch 'two' of ../
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f	not-for-merge	branch 'master' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-branches-default_branches-default b/t/t5515/fetch.br-branches-default_branches-default
deleted file mode 100644
index 8cbd7189362..00000000000
--- a/t/t5515/fetch.br-branches-default_branches-default
+++ /dev/null
@@ -1,8 +0,0 @@
-# br-branches-default branches-default
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f		branch 'master' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-branches-one b/t/t5515/fetch.br-branches-one
deleted file mode 100644
index c98f6705263..00000000000
--- a/t/t5515/fetch.br-branches-one
+++ /dev/null
@@ -1,8 +0,0 @@
-# br-branches-one
-8e32a6d901327a23ef831511badce7bf3bf46689		branch 'one' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-branches-one-merge b/t/t5515/fetch.br-branches-one-merge
deleted file mode 100644
index 54a77420d5d..00000000000
--- a/t/t5515/fetch.br-branches-one-merge
+++ /dev/null
@@ -1,9 +0,0 @@
-# br-branches-one-merge
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b		branch 'three' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	branch 'one' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-branches-one-merge_branches-one b/t/t5515/fetch.br-branches-one-merge_branches-one
deleted file mode 100644
index b4d1bb0b0ba..00000000000
--- a/t/t5515/fetch.br-branches-one-merge_branches-one
+++ /dev/null
@@ -1,9 +0,0 @@
-# br-branches-one-merge branches-one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b		branch 'three' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	branch 'one' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-branches-one-octopus b/t/t5515/fetch.br-branches-one-octopus
deleted file mode 100644
index 97c4b544b8c..00000000000
--- a/t/t5515/fetch.br-branches-one-octopus
+++ /dev/null
@@ -1,9 +0,0 @@
-# br-branches-one-octopus
-8e32a6d901327a23ef831511badce7bf3bf46689		branch 'one' of ../
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8		branch 'two' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-branches-one-octopus_branches-one b/t/t5515/fetch.br-branches-one-octopus_branches-one
deleted file mode 100644
index df705f74c7d..00000000000
--- a/t/t5515/fetch.br-branches-one-octopus_branches-one
+++ /dev/null
@@ -1,9 +0,0 @@
-# br-branches-one-octopus branches-one
-8e32a6d901327a23ef831511badce7bf3bf46689		branch 'one' of ../
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8		branch 'two' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-branches-one_branches-one b/t/t5515/fetch.br-branches-one_branches-one
deleted file mode 100644
index 96890e5bd99..00000000000
--- a/t/t5515/fetch.br-branches-one_branches-one
+++ /dev/null
@@ -1,8 +0,0 @@
-# br-branches-one branches-one
-8e32a6d901327a23ef831511badce7bf3bf46689		branch 'one' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-remote-explicit b/t/t5515/fetch.br-remote-explicit
deleted file mode 100644
index ab44bc55196..00000000000
--- a/t/t5515/fetch.br-remote-explicit
+++ /dev/null
@@ -1,11 +0,0 @@
-# br-remote-explicit
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f		branch 'master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	branch 'one' of ../
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8	not-for-merge	branch 'two' of ../
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b	not-for-merge	branch 'three' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-remote-explicit-merge b/t/t5515/fetch.br-remote-explicit-merge
deleted file mode 100644
index d018b3515f7..00000000000
--- a/t/t5515/fetch.br-remote-explicit-merge
+++ /dev/null
@@ -1,11 +0,0 @@
-# br-remote-explicit-merge
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b		branch 'three' of ../
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f	not-for-merge	branch 'master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	branch 'one' of ../
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8	not-for-merge	branch 'two' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-remote-explicit-merge_remote-explicit b/t/t5515/fetch.br-remote-explicit-merge_remote-explicit
deleted file mode 100644
index 0d3d780dd0c..00000000000
--- a/t/t5515/fetch.br-remote-explicit-merge_remote-explicit
+++ /dev/null
@@ -1,11 +0,0 @@
-# br-remote-explicit-merge remote-explicit
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b		branch 'three' of ../
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f	not-for-merge	branch 'master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	branch 'one' of ../
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8	not-for-merge	branch 'two' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-remote-explicit-octopus b/t/t5515/fetch.br-remote-explicit-octopus
deleted file mode 100644
index 6f843044ede..00000000000
--- a/t/t5515/fetch.br-remote-explicit-octopus
+++ /dev/null
@@ -1,11 +0,0 @@
-# br-remote-explicit-octopus
-8e32a6d901327a23ef831511badce7bf3bf46689		branch 'one' of ../
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8		branch 'two' of ../
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f	not-for-merge	branch 'master' of ../
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b	not-for-merge	branch 'three' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-remote-explicit-octopus_remote-explicit b/t/t5515/fetch.br-remote-explicit-octopus_remote-explicit
deleted file mode 100644
index 3546a837136..00000000000
--- a/t/t5515/fetch.br-remote-explicit-octopus_remote-explicit
+++ /dev/null
@@ -1,11 +0,0 @@
-# br-remote-explicit-octopus remote-explicit
-8e32a6d901327a23ef831511badce7bf3bf46689		branch 'one' of ../
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8		branch 'two' of ../
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f	not-for-merge	branch 'master' of ../
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b	not-for-merge	branch 'three' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-remote-explicit_remote-explicit b/t/t5515/fetch.br-remote-explicit_remote-explicit
deleted file mode 100644
index 01e014e6a02..00000000000
--- a/t/t5515/fetch.br-remote-explicit_remote-explicit
+++ /dev/null
@@ -1,11 +0,0 @@
-# br-remote-explicit remote-explicit
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f		branch 'master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	branch 'one' of ../
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8	not-for-merge	branch 'two' of ../
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b	not-for-merge	branch 'three' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-remote-glob b/t/t5515/fetch.br-remote-glob
deleted file mode 100644
index 09bfcee00f9..00000000000
--- a/t/t5515/fetch.br-remote-glob
+++ /dev/null
@@ -1,11 +0,0 @@
-# br-remote-glob
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f	not-for-merge	branch 'master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	branch 'one' of ../
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b	not-for-merge	branch 'three' of ../
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8	not-for-merge	branch 'two' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-remote-glob-merge b/t/t5515/fetch.br-remote-glob-merge
deleted file mode 100644
index 7e1a433a64f..00000000000
--- a/t/t5515/fetch.br-remote-glob-merge
+++ /dev/null
@@ -1,11 +0,0 @@
-# br-remote-glob-merge
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b		branch 'three' of ../
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f	not-for-merge	branch 'master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	branch 'one' of ../
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8	not-for-merge	branch 'two' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-remote-glob-merge_remote-glob b/t/t5515/fetch.br-remote-glob-merge_remote-glob
deleted file mode 100644
index 53571bb4ec6..00000000000
--- a/t/t5515/fetch.br-remote-glob-merge_remote-glob
+++ /dev/null
@@ -1,11 +0,0 @@
-# br-remote-glob-merge remote-glob
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b		branch 'three' of ../
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f	not-for-merge	branch 'master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	branch 'one' of ../
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8	not-for-merge	branch 'two' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-remote-glob-octopus b/t/t5515/fetch.br-remote-glob-octopus
deleted file mode 100644
index c7c8b6d7f47..00000000000
--- a/t/t5515/fetch.br-remote-glob-octopus
+++ /dev/null
@@ -1,11 +0,0 @@
-# br-remote-glob-octopus
-8e32a6d901327a23ef831511badce7bf3bf46689		branch 'one' of ../
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8		branch 'two' of ../
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f	not-for-merge	branch 'master' of ../
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b	not-for-merge	branch 'three' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-remote-glob-octopus_remote-glob b/t/t5515/fetch.br-remote-glob-octopus_remote-glob
deleted file mode 100644
index 36076fba0cc..00000000000
--- a/t/t5515/fetch.br-remote-glob-octopus_remote-glob
+++ /dev/null
@@ -1,11 +0,0 @@
-# br-remote-glob-octopus remote-glob
-8e32a6d901327a23ef831511badce7bf3bf46689		branch 'one' of ../
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8		branch 'two' of ../
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f	not-for-merge	branch 'master' of ../
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b	not-for-merge	branch 'three' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-remote-glob_remote-glob b/t/t5515/fetch.br-remote-glob_remote-glob
deleted file mode 100644
index 20ba5cb1725..00000000000
--- a/t/t5515/fetch.br-remote-glob_remote-glob
+++ /dev/null
@@ -1,11 +0,0 @@
-# br-remote-glob remote-glob
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f	not-for-merge	branch 'master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	branch 'one' of ../
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b	not-for-merge	branch 'three' of ../
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8	not-for-merge	branch 'two' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-unconfig_branches-default b/t/t5515/fetch.br-unconfig_branches-default
deleted file mode 100644
index da30e3c62c2..00000000000
--- a/t/t5515/fetch.br-unconfig_branches-default
+++ /dev/null
@@ -1,8 +0,0 @@
-# br-unconfig branches-default
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f		branch 'master' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-unconfig_branches-one b/t/t5515/fetch.br-unconfig_branches-one
deleted file mode 100644
index e4614314c54..00000000000
--- a/t/t5515/fetch.br-unconfig_branches-one
+++ /dev/null
@@ -1,8 +0,0 @@
-# br-unconfig branches-one
-8e32a6d901327a23ef831511badce7bf3bf46689		branch 'one' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-unconfig_remote-explicit b/t/t5515/fetch.br-unconfig_remote-explicit
deleted file mode 100644
index 6318dd11b4c..00000000000
--- a/t/t5515/fetch.br-unconfig_remote-explicit
+++ /dev/null
@@ -1,11 +0,0 @@
-# br-unconfig remote-explicit
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f		branch 'master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	branch 'one' of ../
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8	not-for-merge	branch 'two' of ../
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b	not-for-merge	branch 'three' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.br-unconfig_remote-glob b/t/t5515/fetch.br-unconfig_remote-glob
deleted file mode 100644
index 1d9afad7d84..00000000000
--- a/t/t5515/fetch.br-unconfig_remote-glob
+++ /dev/null
@@ -1,11 +0,0 @@
-# br-unconfig remote-glob
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f	not-for-merge	branch 'master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	branch 'one' of ../
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b	not-for-merge	branch 'three' of ../
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8	not-for-merge	branch 'two' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.master_branches-default b/t/t5515/fetch.master_branches-default
deleted file mode 100644
index 2eedd3bfa4a..00000000000
--- a/t/t5515/fetch.master_branches-default
+++ /dev/null
@@ -1,8 +0,0 @@
-# master branches-default
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f		branch 'master' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.master_branches-one b/t/t5515/fetch.master_branches-one
deleted file mode 100644
index 901ce21d333..00000000000
--- a/t/t5515/fetch.master_branches-one
+++ /dev/null
@@ -1,8 +0,0 @@
-# master branches-one
-8e32a6d901327a23ef831511badce7bf3bf46689		branch 'one' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.master_remote-explicit b/t/t5515/fetch.master_remote-explicit
deleted file mode 100644
index b3cfe6b98b2..00000000000
--- a/t/t5515/fetch.master_remote-explicit
+++ /dev/null
@@ -1,11 +0,0 @@
-# master remote-explicit
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f		branch 'master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	branch 'one' of ../
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8	not-for-merge	branch 'two' of ../
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b	not-for-merge	branch 'three' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/fetch.master_remote-glob b/t/t5515/fetch.master_remote-glob
deleted file mode 100644
index 118befd1e48..00000000000
--- a/t/t5515/fetch.master_remote-glob
+++ /dev/null
@@ -1,11 +0,0 @@
-# master remote-glob
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f	not-for-merge	branch 'master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	branch 'one' of ../
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b	not-for-merge	branch 'three' of ../
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8	not-for-merge	branch 'two' of ../
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5	not-for-merge	tag 'tag-master' of ../
-8e32a6d901327a23ef831511badce7bf3bf46689	not-for-merge	tag 'tag-one' of ../
-22feea448b023a2d864ef94b013735af34d238ba	not-for-merge	tag 'tag-one-tree' of ../
-c61a82b60967180544e3c19f819ddbd0c9f89899	not-for-merge	tag 'tag-three' of ../
-0e3b14047d3ee365f4f2a1b673db059c3972589c	not-for-merge	tag 'tag-three-file' of ../
-525b7fb068d59950d185a8779dc957c77eed73ba	not-for-merge	tag 'tag-two' of ../
diff --git a/t/t5515/refs.br-branches-default b/t/t5515/refs.br-branches-default
deleted file mode 100644
index 21917c1e5db..00000000000
--- a/t/t5515/refs.br-branches-default
+++ /dev/null
@@ -1,12 +0,0 @@
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/heads/branches-default
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-branches-default-merge b/t/t5515/refs.br-branches-default-merge
deleted file mode 100644
index 21917c1e5db..00000000000
--- a/t/t5515/refs.br-branches-default-merge
+++ /dev/null
@@ -1,12 +0,0 @@
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/heads/branches-default
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-branches-default-merge_branches-default b/t/t5515/refs.br-branches-default-merge_branches-default
deleted file mode 100644
index 21917c1e5db..00000000000
--- a/t/t5515/refs.br-branches-default-merge_branches-default
+++ /dev/null
@@ -1,12 +0,0 @@
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/heads/branches-default
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-branches-default-octopus b/t/t5515/refs.br-branches-default-octopus
deleted file mode 100644
index 21917c1e5db..00000000000
--- a/t/t5515/refs.br-branches-default-octopus
+++ /dev/null
@@ -1,12 +0,0 @@
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/heads/branches-default
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-branches-default-octopus_branches-default b/t/t5515/refs.br-branches-default-octopus_branches-default
deleted file mode 100644
index 21917c1e5db..00000000000
--- a/t/t5515/refs.br-branches-default-octopus_branches-default
+++ /dev/null
@@ -1,12 +0,0 @@
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/heads/branches-default
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-branches-default_branches-default b/t/t5515/refs.br-branches-default_branches-default
deleted file mode 100644
index 21917c1e5db..00000000000
--- a/t/t5515/refs.br-branches-default_branches-default
+++ /dev/null
@@ -1,12 +0,0 @@
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/heads/branches-default
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-branches-one b/t/t5515/refs.br-branches-one
deleted file mode 100644
index 8a705a5df25..00000000000
--- a/t/t5515/refs.br-branches-one
+++ /dev/null
@@ -1,12 +0,0 @@
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/heads/branches-one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-branches-one-merge b/t/t5515/refs.br-branches-one-merge
deleted file mode 100644
index 8a705a5df25..00000000000
--- a/t/t5515/refs.br-branches-one-merge
+++ /dev/null
@@ -1,12 +0,0 @@
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/heads/branches-one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-branches-one-merge_branches-one b/t/t5515/refs.br-branches-one-merge_branches-one
deleted file mode 100644
index 8a705a5df25..00000000000
--- a/t/t5515/refs.br-branches-one-merge_branches-one
+++ /dev/null
@@ -1,12 +0,0 @@
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/heads/branches-one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-branches-one-octopus b/t/t5515/refs.br-branches-one-octopus
deleted file mode 100644
index 8a705a5df25..00000000000
--- a/t/t5515/refs.br-branches-one-octopus
+++ /dev/null
@@ -1,12 +0,0 @@
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/heads/branches-one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-branches-one-octopus_branches-one b/t/t5515/refs.br-branches-one-octopus_branches-one
deleted file mode 100644
index 8a705a5df25..00000000000
--- a/t/t5515/refs.br-branches-one-octopus_branches-one
+++ /dev/null
@@ -1,12 +0,0 @@
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/heads/branches-one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-branches-one_branches-one b/t/t5515/refs.br-branches-one_branches-one
deleted file mode 100644
index 8a705a5df25..00000000000
--- a/t/t5515/refs.br-branches-one_branches-one
+++ /dev/null
@@ -1,12 +0,0 @@
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/heads/branches-one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-remote-explicit b/t/t5515/refs.br-remote-explicit
deleted file mode 100644
index 9bbbfd9fc53..00000000000
--- a/t/t5515/refs.br-remote-explicit
+++ /dev/null
@@ -1,15 +0,0 @@
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-remote-explicit-merge b/t/t5515/refs.br-remote-explicit-merge
deleted file mode 100644
index 9bbbfd9fc53..00000000000
--- a/t/t5515/refs.br-remote-explicit-merge
+++ /dev/null
@@ -1,15 +0,0 @@
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-remote-explicit-merge_remote-explicit b/t/t5515/refs.br-remote-explicit-merge_remote-explicit
deleted file mode 100644
index 9bbbfd9fc53..00000000000
--- a/t/t5515/refs.br-remote-explicit-merge_remote-explicit
+++ /dev/null
@@ -1,15 +0,0 @@
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-remote-explicit-octopus b/t/t5515/refs.br-remote-explicit-octopus
deleted file mode 100644
index 9bbbfd9fc53..00000000000
--- a/t/t5515/refs.br-remote-explicit-octopus
+++ /dev/null
@@ -1,15 +0,0 @@
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-remote-explicit-octopus_remote-explicit b/t/t5515/refs.br-remote-explicit-octopus_remote-explicit
deleted file mode 100644
index 9bbbfd9fc53..00000000000
--- a/t/t5515/refs.br-remote-explicit-octopus_remote-explicit
+++ /dev/null
@@ -1,15 +0,0 @@
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-remote-explicit_remote-explicit b/t/t5515/refs.br-remote-explicit_remote-explicit
deleted file mode 100644
index 9bbbfd9fc53..00000000000
--- a/t/t5515/refs.br-remote-explicit_remote-explicit
+++ /dev/null
@@ -1,15 +0,0 @@
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-remote-glob b/t/t5515/refs.br-remote-glob
deleted file mode 100644
index 9bbbfd9fc53..00000000000
--- a/t/t5515/refs.br-remote-glob
+++ /dev/null
@@ -1,15 +0,0 @@
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-remote-glob-merge b/t/t5515/refs.br-remote-glob-merge
deleted file mode 100644
index 9bbbfd9fc53..00000000000
--- a/t/t5515/refs.br-remote-glob-merge
+++ /dev/null
@@ -1,15 +0,0 @@
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-remote-glob-merge_remote-glob b/t/t5515/refs.br-remote-glob-merge_remote-glob
deleted file mode 100644
index 9bbbfd9fc53..00000000000
--- a/t/t5515/refs.br-remote-glob-merge_remote-glob
+++ /dev/null
@@ -1,15 +0,0 @@
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-remote-glob-octopus b/t/t5515/refs.br-remote-glob-octopus
deleted file mode 100644
index 9bbbfd9fc53..00000000000
--- a/t/t5515/refs.br-remote-glob-octopus
+++ /dev/null
@@ -1,15 +0,0 @@
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-remote-glob-octopus_remote-glob b/t/t5515/refs.br-remote-glob-octopus_remote-glob
deleted file mode 100644
index 9bbbfd9fc53..00000000000
--- a/t/t5515/refs.br-remote-glob-octopus_remote-glob
+++ /dev/null
@@ -1,15 +0,0 @@
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-remote-glob_remote-glob b/t/t5515/refs.br-remote-glob_remote-glob
deleted file mode 100644
index 9bbbfd9fc53..00000000000
--- a/t/t5515/refs.br-remote-glob_remote-glob
+++ /dev/null
@@ -1,15 +0,0 @@
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-unconfig_branches-default b/t/t5515/refs.br-unconfig_branches-default
deleted file mode 100644
index 21917c1e5db..00000000000
--- a/t/t5515/refs.br-unconfig_branches-default
+++ /dev/null
@@ -1,12 +0,0 @@
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/heads/branches-default
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-unconfig_branches-one b/t/t5515/refs.br-unconfig_branches-one
deleted file mode 100644
index 8a705a5df25..00000000000
--- a/t/t5515/refs.br-unconfig_branches-one
+++ /dev/null
@@ -1,12 +0,0 @@
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/heads/branches-one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-unconfig_remote-explicit b/t/t5515/refs.br-unconfig_remote-explicit
deleted file mode 100644
index 9bbbfd9fc53..00000000000
--- a/t/t5515/refs.br-unconfig_remote-explicit
+++ /dev/null
@@ -1,15 +0,0 @@
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.br-unconfig_remote-glob b/t/t5515/refs.br-unconfig_remote-glob
deleted file mode 100644
index 9bbbfd9fc53..00000000000
--- a/t/t5515/refs.br-unconfig_remote-glob
+++ /dev/null
@@ -1,15 +0,0 @@
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.master_branches-default b/t/t5515/refs.master_branches-default
deleted file mode 100644
index 21917c1e5db..00000000000
--- a/t/t5515/refs.master_branches-default
+++ /dev/null
@@ -1,12 +0,0 @@
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/heads/branches-default
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.master_branches-one b/t/t5515/refs.master_branches-one
deleted file mode 100644
index 8a705a5df25..00000000000
--- a/t/t5515/refs.master_branches-one
+++ /dev/null
@@ -1,12 +0,0 @@
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/heads/branches-one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.master_remote-explicit b/t/t5515/refs.master_remote-explicit
deleted file mode 100644
index 9bbbfd9fc53..00000000000
--- a/t/t5515/refs.master_remote-explicit
+++ /dev/null
@@ -1,15 +0,0 @@
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
diff --git a/t/t5515/refs.master_remote-glob b/t/t5515/refs.master_remote-glob
deleted file mode 100644
index 9bbbfd9fc53..00000000000
--- a/t/t5515/refs.master_remote-glob
+++ /dev/null
@@ -1,15 +0,0 @@
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two
-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one
-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three
-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two
-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master
-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one
-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree
-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three
-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file
-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two
-- 
2.12.2.windows.2.800.gede8f145e06

[PATCH 02/11] Documentation: really deprecate .git/remotes/ and .git/branches/

From: Johannes Schindelin <hidden>
Date: 2017-05-11 13:48:35

The documentation did not make it quite clear just how deprecated these
directories are.

Signed-off-by: Johannes Schindelin <redacted>
---
 Documentation/gitrepository-layout.txt | 19 +++++-----
 Documentation/urls-remotes.txt         | 65 ++--------------------------------
 2 files changed, 11 insertions(+), 73 deletions(-)
diff --git a/Documentation/gitrepository-layout.txt b/Documentation/gitrepository-layout.txt
index f51ed4e37cd..9f2275f06d5 100644
--- a/Documentation/gitrepository-layout.txt
+++ b/Documentation/gitrepository-layout.txt
@@ -144,12 +144,11 @@ config::
 	used instead.
 
 branches::
-	A slightly deprecated way to store shorthands to be used
+	A highly deprecated way to store shorthands to be used
 	to specify a URL to 'git fetch', 'git pull' and 'git push'.
 	A file can be stored as `branches/<name>` and then
 	'name' can be given to these commands in place of
-	'repository' argument.  See the REMOTES section in
-	linkgit:git-fetch[1] for details.  This mechanism is legacy
+	'repository' argument.  This mechanism is legacy
 	and not likely to be found in modern repositories. This
 	directory is ignored if $GIT_COMMON_DIR is set and
 	"$GIT_COMMON_DIR/branches" will be used instead.
@@ -213,13 +212,13 @@ info/sparse-checkout::
 	See also: linkgit:git-read-tree[1].
 
 remotes::
-	Stores shorthands for URL and default refnames for use
-	when interacting with remote repositories via 'git fetch',
-	'git pull' and 'git push' commands.  See the REMOTES section
-	in linkgit:git-fetch[1] for details.  This mechanism is legacy
-	and not likely to be found in modern repositories. This
-	directory is ignored if $GIT_COMMON_DIR is set and
-	"$GIT_COMMON_DIR/remotes" will be used instead.
+	A highly deprecated location to store shorthands for URL and
+	default refnames for use when interacting with remote
+	repositories via 'git fetch', 'git pull' and 'git push'
+	commands.  This mechanism is legacy and not likely to be
+	found in modern repositories. This directory is ignored if
+	$GIT_COMMON_DIR is set and "$GIT_COMMON_DIR/remotes" will
+	be used instead.
 
 logs::
 	Records of changes made to refs are stored in this directory.
diff --git a/Documentation/urls-remotes.txt b/Documentation/urls-remotes.txt
index bd184cd6539..a7214a9cae5 100644
--- a/Documentation/urls-remotes.txt
+++ b/Documentation/urls-remotes.txt
@@ -3,15 +3,8 @@ include::urls.txt[]
 REMOTES[[REMOTES]]
 ------------------
 
-The name of one of the following can be used instead
-of a URL as `<repository>` argument:
-
-* a remote in the Git configuration file: `$GIT_DIR/config`,
-* a file in the `$GIT_DIR/remotes` directory, or
-* a file in the `$GIT_DIR/branches` directory.
-
-All of these also allow you to omit the refspec from the command line
-because they each contain a refspec which git will use by default.
+The name of a remote in the Git configuration file: `$GIT_DIR/config`
+can be used instead of a URL as `<repository>` argument.
 
 Named remote in configuration file
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -35,60 +28,6 @@ config file would appear like this:
 The `<pushurl>` is used for pushes only. It is optional and defaults
 to `<url>`.
 
-Named file in `$GIT_DIR/remotes`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can choose to provide the name of a
-file in `$GIT_DIR/remotes`.  The URL
-in this file will be used to access the repository.  The refspec
-in this file will be used as default when you do not
-provide a refspec on the command line.  This file should have the
-following format:
-
-------------
-	URL: one of the above URL format
-	Push: <refspec>
-	Pull: <refspec>
-
-------------
-
-`Push:` lines are used by 'git push' and
-`Pull:` lines are used by 'git pull' and 'git fetch'.
-Multiple `Push:` and `Pull:` lines may
-be specified for additional branch mappings.
-
-Named file in `$GIT_DIR/branches`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can choose to provide the name of a
-file in `$GIT_DIR/branches`.
-The URL in this file will be used to access the repository.
-This file should have the following format:
-
-
-------------
-	<url>#<head>
-------------
-
-`<url>` is required; `#<head>` is optional.
-
-Depending on the operation, git will use one of the following
-refspecs, if you don't provide one on the command line.
-`<branch>` is the name of this file in `$GIT_DIR/branches` and
-`<head>` defaults to `master`.
-
-git fetch uses:
-
-------------
-	refs/heads/<head>:refs/heads/<branch>
-------------
-
-git push uses:
-
-------------
-	HEAD:refs/heads/<head>
-------------
-
 
 
 
-- 
2.12.2.windows.2.800.gede8f145e06

[PATCH 10/11] PREVIEW: t0060: stop testing support for .git/remotes/ and .git/branches/

From: Johannes Schindelin <hidden>
Date: 2017-05-11 13:48:59

We are about to remove that feature for good.

Signed-off-by: Johannes Schindelin <redacted>
---
 t/t0060-path-utils.sh | 2 --
 1 file changed, 2 deletions(-)
diff --git a/t/t0060-path-utils.sh b/t/t0060-path-utils.sh
index 444b5a4df80..162c9a5a2f7 100755
--- a/t/t0060-path-utils.sh
+++ b/t/t0060-path-utils.sh
@@ -295,8 +295,6 @@ test_git_path GIT_COMMON_DIR=bar info/exclude             bar/info/exclude
 test_git_path GIT_COMMON_DIR=bar info/grafts              bar/info/grafts
 test_git_path GIT_COMMON_DIR=bar info/sparse-checkout     .git/info/sparse-checkout
 test_git_path GIT_COMMON_DIR=bar info//sparse-checkout    .git/info//sparse-checkout
-test_git_path GIT_COMMON_DIR=bar remotes/bar              bar/remotes/bar
-test_git_path GIT_COMMON_DIR=bar branches/bar             bar/branches/bar
 test_git_path GIT_COMMON_DIR=bar logs/refs/heads/master   bar/logs/refs/heads/master
 test_git_path GIT_COMMON_DIR=bar refs/heads/master        bar/refs/heads/master
 test_git_path GIT_COMMON_DIR=bar refs/bisect/foo          .git/refs/bisect/foo
-- 
2.12.2.windows.2.800.gede8f145e06

[PATCH 11/11] PREVIEW: remove support for .git/remotes/ and .git/branches/

From: Johannes Schindelin <hidden>
Date: 2017-05-11 13:49:01

At long last, after a cycle or three of warning users who *still* use
the ancient feature of .git/remotes/ and .git/branches/, it is time to
retire the code.

Signed-off-by: Johannes Schindelin <redacted>
---
 path.c   |  2 --
 remote.c | 96 ----------------------------------------------------------------
 remote.h |  4 +--
 3 files changed, 1 insertion(+), 101 deletions(-)
diff --git a/path.c b/path.c
index c1cb1cf6273..ee709bb2337 100644
--- a/path.c
+++ b/path.c
@@ -104,7 +104,6 @@ struct common_dir {
 };
 
 static struct common_dir common_list[] = {
-	{ 0, 1, 0, "branches" },
 	{ 0, 1, 0, "hooks" },
 	{ 0, 1, 0, "info" },
 	{ 0, 0, 1, "info/sparse-checkout" },
@@ -115,7 +114,6 @@ static struct common_dir common_list[] = {
 	{ 0, 1, 0, "objects" },
 	{ 0, 1, 0, "refs" },
 	{ 0, 1, 1, "refs/bisect" },
-	{ 0, 1, 0, "remotes" },
 	{ 0, 1, 0, "worktrees" },
 	{ 0, 1, 0, "rr-cache" },
 	{ 0, 1, 0, "svn" },
diff --git a/remote.c b/remote.c
index b2ae168035e..914ff74c0d2 100644
--- a/remote.c
+++ b/remote.c
@@ -241,89 +241,6 @@ static void add_instead_of(struct rewrite *rewrite, const char *instead_of)
 	rewrite->instead_of_nr++;
 }
 
-static const char *skip_spaces(const char *s)
-{
-	while (isspace(*s))
-		s++;
-	return s;
-}
-
-static void read_remotes_file(struct remote *remote)
-{
-	struct strbuf buf = STRBUF_INIT;
-	FILE *f = fopen(git_path("remotes/%s", remote->name), "r");
-
-	if (!f)
-		return;
-
-	warning(_("the remote '%s' uses the long-deprecated '%s' file"),
-		remote->name, git_path("branches/%s", remote->name));
-
-	remote->configured_in_repo = 1;
-	remote->origin = REMOTE_REMOTES;
-	while (strbuf_getline(&buf, f) != EOF) {
-		const char *v;
-
-		strbuf_rtrim(&buf);
-
-		if (skip_prefix(buf.buf, "URL:", &v))
-			add_url_alias(remote, xstrdup(skip_spaces(v)));
-		else if (skip_prefix(buf.buf, "Push:", &v))
-			add_push_refspec(remote, xstrdup(skip_spaces(v)));
-		else if (skip_prefix(buf.buf, "Pull:", &v))
-			add_fetch_refspec(remote, xstrdup(skip_spaces(v)));
-	}
-	strbuf_release(&buf);
-	fclose(f);
-}
-
-static void read_branches_file(struct remote *remote)
-{
-	char *frag;
-	struct strbuf buf = STRBUF_INIT;
-	FILE *f = fopen(git_path("branches/%s", remote->name), "r");
-
-	if (!f)
-		return;
-
-	strbuf_getline_lf(&buf, f);
-	fclose(f);
-	strbuf_trim(&buf);
-	if (!buf.len) {
-		strbuf_release(&buf);
-		return;
-	}
-
-	warning(_("the branch '%s' uses the long-deprecated '%s' file"),
-		remote->name, git_path("branches/%s", remote->name));
-
-	remote->configured_in_repo = 1;
-	remote->origin = REMOTE_BRANCHES;
-
-	/*
-	 * The branches file would have URL and optionally
-	 * #branch specified.  The "master" (or specified) branch is
-	 * fetched and stored in the local branch matching the
-	 * remote name.
-	 */
-	frag = strchr(buf.buf, '#');
-	if (frag)
-		*(frag++) = '\0';
-	else
-		frag = "master";
-
-	add_url_alias(remote, strbuf_detach(&buf, NULL));
-	add_fetch_refspec(remote, xstrfmt("refs/heads/%s:refs/heads/%s",
-					  frag, remote->name));
-
-	/*
-	 * Cogito compatible push: push current HEAD to remote #branch
-	 * (master if missing)
-	 */
-	add_push_refspec(remote, xstrfmt("HEAD:refs/heads/%s", frag));
-	remote->fetch_tags = 1; /* always auto-follow */
-}
-
 static int handle_config(const char *key, const char *value, void *cb)
 {
 	const char *name;
@@ -652,13 +569,6 @@ void free_refspec(int nr_refspec, struct refspec *refspec)
 	free(refspec);
 }
 
-static int valid_remote_nick(const char *name)
-{
-	if (!name[0] || is_dot_or_dotdot(name))
-		return 0;
-	return !strchr(name, '/'); /* no slash */
-}
-
 const char *remote_for_branch(struct branch *branch, int *explicit)
 {
 	if (branch && branch->remote_name) {
@@ -700,12 +610,6 @@ static struct remote *remote_get_1(const char *name,
 		name = get_default(current_branch, &name_given);
 
 	ret = make_remote(name, 0);
-	if (valid_remote_nick(name) && have_git_dir()) {
-		if (!valid_remote(ret))
-			read_remotes_file(ret);
-		if (!valid_remote(ret))
-			read_branches_file(ret);
-	}
 	if (name_given && !valid_remote(ret))
 		add_url_alias(ret, name);
 	if (!valid_remote(ret))
diff --git a/remote.h b/remote.h
index 6c28cd3e4bf..921b3d43356 100644
--- a/remote.h
+++ b/remote.h
@@ -6,9 +6,7 @@
 
 enum {
 	REMOTE_UNCONFIGURED = 0,
-	REMOTE_CONFIG,
-	REMOTE_REMOTES,
-	REMOTE_BRANCHES
+	REMOTE_CONFIG
 };
 
 struct remote {
-- 
2.12.2.windows.2.800.gede8f145e06

[PATCH 06/11] PREVIEW: t5510: convert .git/remotes/ test to use a regular remote

From: Johannes Schindelin <hidden>
Date: 2017-05-11 13:49:02

We are about to stop supporting the .git/remotes/ and .git/branches/
feature. In preparation, t5510-fetch is adjusted *not* to verify that
.git/remotes/ works.

As the tests are entangled, we do not simply remove the test repository
with such a remote, but convert it to use a regular remote instead.

Signed-off-by: Johannes Schindelin <redacted>
---
 t/t5510-fetch.sh | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh
index 668c54be41e..f51b3360348 100755
--- a/t/t5510-fetch.sh
+++ b/t/t5510-fetch.sh
@@ -46,12 +46,10 @@ test_expect_success "clone and setup child repos" '
 		cd three &&
 		git config branch.master.remote two &&
 		git config branch.master.merge refs/heads/one &&
-		mkdir -p .git/remotes &&
-		{
-			echo "URL: ../two/.git/"
-			echo "Pull: refs/heads/master:refs/heads/two"
-			echo "Pull: refs/heads/one:refs/heads/one"
-		} >.git/remotes/two
+		git config remote.two.url ../two/.git/ &&
+		git config remote.two.fetch refs/heads/master:refs/heads/two &&
+		git config --add remote.two.fetch \
+			refs/heads/one:refs/heads/one
 	) &&
 	git clone . bundle &&
 	git clone . seven
-- 
2.12.2.windows.2.800.gede8f145e06

[PATCH 07/11] PREVIEW: t5516: stop testing .git/branches/ functionality

From: Johannes Schindelin <hidden>
Date: 2017-05-11 13:49:36

We are about to remove support for .git/remotes/ and .git/branches/, at
long last. In preparation for this move, let's remove the corresponding
regression tests from t5516-fetch-push.

Note: the `push --prune` test case (and another test case after that)
relied on the side effect where a branch with the name `second` was
created earlier. We simply move that branch creation into that test
case.

Signed-off-by: Johannes Schindelin <redacted>
---
 t/t5516-fetch-push.sh | 59 +--------------------------------------------------
 1 file changed, 1 insertion(+), 58 deletions(-)
diff --git a/t/t5516-fetch-push.sh b/t/t5516-fetch-push.sh
index 457f648ad91..c8ba7b67f67 100755
--- a/t/t5516-fetch-push.sh
+++ b/t/t5516-fetch-push.sh
@@ -862,64 +862,6 @@ test_expect_success 'allow push to HEAD of non-bare repository (config)' '
 	! grep "warning: updating the current branch" stderr
 '
 
-test_expect_success 'fetch with branches' '
-	mk_empty testrepo &&
-	git branch second $the_first_commit &&
-	git checkout second &&
-	mkdir -p testrepo/.git/branches &&
-	echo ".." > testrepo/.git/branches/branch1 &&
-	(
-		cd testrepo &&
-		git fetch branch1 &&
-		echo "$the_commit commit	refs/heads/branch1" >expect &&
-		git for-each-ref refs/heads >actual &&
-		test_cmp expect actual
-	) &&
-	git checkout master
-'
-
-test_expect_success 'fetch with branches containing #' '
-	mk_empty testrepo &&
-	mkdir -p testrepo/.git/branches &&
-	echo "..#second" > testrepo/.git/branches/branch2 &&
-	(
-		cd testrepo &&
-		git fetch branch2 &&
-		echo "$the_first_commit commit	refs/heads/branch2" >expect &&
-		git for-each-ref refs/heads >actual &&
-		test_cmp expect actual
-	) &&
-	git checkout master
-'
-
-test_expect_success 'push with branches' '
-	mk_empty testrepo &&
-	git checkout second &&
-	mkdir -p .git/branches &&
-	echo "testrepo" > .git/branches/branch1 &&
-	git push branch1 &&
-	(
-		cd testrepo &&
-		echo "$the_first_commit commit	refs/heads/master" >expect &&
-		git for-each-ref refs/heads >actual &&
-		test_cmp expect actual
-	)
-'
-
-test_expect_success 'push with branches containing #' '
-	mk_empty testrepo &&
-	mkdir -p .git/branches &&
-	echo "testrepo#branch3" > .git/branches/branch2 &&
-	git push branch2 &&
-	(
-		cd testrepo &&
-		echo "$the_first_commit commit	refs/heads/branch3" >expect &&
-		git for-each-ref refs/heads >actual &&
-		test_cmp expect actual
-	) &&
-	git checkout master
-'
-
 test_expect_success 'push into aliased refs (consistent)' '
 	mk_test testrepo heads/master &&
 	mk_child testrepo child1 &&
@@ -1042,6 +984,7 @@ test_expect_success 'push --porcelain --dry-run rejected' '
 
 test_expect_success 'push --prune' '
 	mk_test testrepo heads/master heads/second heads/foo heads/bar &&
+	git branch second $the_first_commit &&
 	git push --prune testrepo : &&
 	check_push_result testrepo $the_commit heads/master &&
 	check_push_result testrepo $the_first_commit heads/second &&
-- 
2.12.2.windows.2.800.gede8f145e06

[PATCH 08/11] PREVIEW: remote: remove support for migrating ancient remotes

From: Johannes Schindelin <hidden>
Date: 2017-05-11 13:49:59

By now, everybody will have moved on... no need to burden ourselves with
now-obsolete code.

Signed-off-by: Johannes Schindelin <redacted>
---
 Documentation/git-remote.txt |  4 ----
 builtin/remote.c             | 27 ---------------------
 t/t5505-remote.sh            | 57 --------------------------------------------
 3 files changed, 88 deletions(-)
diff --git a/Documentation/git-remote.txt b/Documentation/git-remote.txt
index 577b969c1bd..746fdd27ced 100644
--- a/Documentation/git-remote.txt
+++ b/Documentation/git-remote.txt
@@ -84,10 +84,6 @@ will always behave as if `--mirror` was passed.
 
 Rename the remote named <old> to <new>. All remote-tracking branches and
 configuration settings for the remote are updated.
-+
-In case <old> and <new> are the same, and <old> is a file under
-`$GIT_DIR/remotes` or `$GIT_DIR/branches`, the remote is converted to
-the configuration file format.
 
 'remove'::
 'rm'::
diff --git a/builtin/remote.c b/builtin/remote.c
index addf97ad293..c3502f24223 100644
--- a/builtin/remote.c
+++ b/builtin/remote.c
@@ -574,30 +574,6 @@ static int read_remote_branches(const char *refname,
 	return 0;
 }
 
-static int migrate_file(struct remote *remote)
-{
-	struct strbuf buf = STRBUF_INIT;
-	int i;
-
-	strbuf_addf(&buf, "remote.%s.url", remote->name);
-	for (i = 0; i < remote->url_nr; i++)
-		git_config_set_multivar(buf.buf, remote->url[i], "^$", 0);
-	strbuf_reset(&buf);
-	strbuf_addf(&buf, "remote.%s.push", remote->name);
-	for (i = 0; i < remote->push_refspec_nr; i++)
-		git_config_set_multivar(buf.buf, remote->push_refspec[i], "^$", 0);
-	strbuf_reset(&buf);
-	strbuf_addf(&buf, "remote.%s.fetch", remote->name);
-	for (i = 0; i < remote->fetch_refspec_nr; i++)
-		git_config_set_multivar(buf.buf, remote->fetch_refspec[i], "^$", 0);
-	if (remote->origin == REMOTE_REMOTES)
-		unlink_or_warn(git_path("remotes/%s", remote->name));
-	else if (remote->origin == REMOTE_BRANCHES)
-		unlink_or_warn(git_path("branches/%s", remote->name));
-
-	return 0;
-}
-
 static int mv(int argc, const char **argv)
 {
 	struct option options[] = {
@@ -621,9 +597,6 @@ static int mv(int argc, const char **argv)
 	if (!remote_is_configured(oldremote, 1))
 		die(_("No such remote: %s"), rename.old);
 
-	if (!strcmp(rename.old, rename.new) && oldremote->origin != REMOTE_CONFIG)
-		return migrate_file(oldremote);
-
 	newremote = remote_get(rename.new);
 	if (remote_is_configured(newremote, 1))
 		die(_("remote %s already exists."), rename.new);
diff --git a/t/t5505-remote.sh b/t/t5505-remote.sh
index 4fd66760c75..857950ac8ee 100755
--- a/t/t5505-remote.sh
+++ b/t/t5505-remote.sh
@@ -798,63 +798,6 @@ Pull: refs/heads/master:refs/heads/origin
 Pull: refs/heads/next:refs/heads/origin2
 EOF
 
-test_expect_success 'migrate a remote from named file in $GIT_DIR/remotes' '
-	git clone one five &&
-	origin_url=$(pwd)/one &&
-	(
-		cd five &&
-		git remote remove origin &&
-		mkdir -p .git/remotes &&
-		cat ../remotes_origin >.git/remotes/origin &&
-		git remote rename origin origin &&
-		test_path_is_missing .git/remotes/origin &&
-		test "$(git config remote.origin.url)" = "$origin_url" &&
-		cat >push_expected <<-\EOF &&
-		refs/heads/master:refs/heads/upstream
-		refs/heads/next:refs/heads/upstream2
-		EOF
-		cat >fetch_expected <<-\EOF &&
-		refs/heads/master:refs/heads/origin
-		refs/heads/next:refs/heads/origin2
-		EOF
-		git config --get-all remote.origin.push >push_actual &&
-		git config --get-all remote.origin.fetch >fetch_actual &&
-		test_cmp push_expected push_actual &&
-		test_cmp fetch_expected fetch_actual
-	)
-'
-
-test_expect_success 'migrate a remote from named file in $GIT_DIR/branches' '
-	git clone one six &&
-	origin_url=$(pwd)/one &&
-	(
-		cd six &&
-		git remote rm origin &&
-		mkdir -p .git/branches &&
-		echo "$origin_url" >.git/branches/origin &&
-		git remote rename origin origin &&
-		test_path_is_missing .git/branches/origin &&
-		test "$(git config remote.origin.url)" = "$origin_url" &&
-		test "$(git config remote.origin.fetch)" = "refs/heads/master:refs/heads/origin" &&
-		test "$(git config remote.origin.push)" = "HEAD:refs/heads/master"
-	)
-'
-
-test_expect_success 'migrate a remote from named file in $GIT_DIR/branches (2)' '
-	git clone one seven &&
-	(
-		cd seven &&
-		git remote rm origin &&
-		mkdir .git/branches &&
-		echo "quux#foom" > .git/branches/origin &&
-		git remote rename origin origin &&
-		test_path_is_missing .git/branches/origin &&
-		test "$(git config remote.origin.url)" = "quux" &&
-		test "$(git config remote.origin.fetch)" = "refs/heads/foom:refs/heads/origin"
-		test "$(git config remote.origin.push)" = "HEAD:refs/heads/foom"
-	)
-'
-
 test_expect_success 'remote prune to cause a dangling symref' '
 	git clone one eight &&
 	(
-- 
2.12.2.windows.2.800.gede8f145e06

Re: [PATCH 01/11] git-parse-remote: fix highly misleading man page

From: Stefan Beller <hidden>
Date: 2017-05-11 17:21:51

On Thu, May 11, 2017 at 6:47 AM, Johannes Schindelin
[off-list ref] wrote:
quoted hunk
The man page still talked about the .git/remotes/ directory (which is no
longer in use, as of 75c384efb52 (Do not create $GIT_DIR/remotes/
directory anymore., 2006-12-19)).

Let's just revamp it almost completely to reflect the *purpose* of that
scriptlet, as opposed to its implementation details.

Signed-off-by: Johannes Schindelin <redacted>
---
 Documentation/git-parse-remote.txt | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/Documentation/git-parse-remote.txt b/Documentation/git-parse-remote.txt
index a45ea1ece81..7f865f33898 100644
--- a/Documentation/git-parse-remote.txt
+++ b/Documentation/git-parse-remote.txt
@@ -3,7 +3,7 @@ git-parse-remote(1)

 NAME
 ----
-git-parse-remote - Routines to help parsing remote repository access parameters
+git-parse-remote - Routines to help parsing remote repository information
Today I learned about git-parse-remote. Upon further inspection it is
just a lib,
not anything useful for a user. (The man page with or without this patch
is not very helpful to me)

Only git-rebase as well as git-submodule include this lib, the submodules
only need get_default_remote (4 lines of sh), which is also available
in the submodule--helper, we'd just have to expose it and make it accessible.

I wonder if we'd want to retire this script in the long run.

I also wonder if rewriting the man page is good use of (your) time, as the
last contribution specifically to Documentation/git-parse-remote.txt
is 62d955fd43 (parse-remote: remove unused functions, 2009-06-12),
which has been a while since.

The outline in the coverletter promised more than just rewording, but
I am fine with the change as is; it's a good start.

Thanks,
Stefan

Re: [PATCH 05/11] Revert "Revert "Don't create the $GIT_DIR/branches directory on init""

From: Stefan Beller <hidden>
Date: 2017-05-11 17:26:39

On Thu, May 11, 2017 at 6:47 AM, Johannes Schindelin
[off-list ref] wrote:
A long, long, long time ago, we stored the "upstream" information of
branches in files inside the .git/branches/ directory. We don't do this
anymore, though. Since 5751f49010e (Move remote parsing into a library
file out of builtin-push., 2007-05-12), to be precise.

This is sort of a sibling to 75c384efb52 (Do not create $GIT_DIR/remotes/
directory anymore., 2006-12-19).

The tests t5505-remote and t5516-fetch-push need to be adjusted now, as
they expect to find a .git/branches/ directory.

This reverts c8a58ac5a52 (Revert "Don't create the $GIT_DIR/branches
directory on init", 2009-10-31).

Signed-off-by: Johannes Schindelin <redacted>
---
This (and the previous patches) makes sense to me.

Thanks,
Stefan

Re: [PATCH 11/11] PREVIEW: remove support for .git/remotes/ and .git/branches/

From: Stefan Beller <hidden>
Date: 2017-05-11 18:19:22

On Thu, May 11, 2017 at 6:48 AM, Johannes Schindelin
[off-list ref] wrote:
At long last, after a cycle or three of warning users who *still* use
the ancient feature of .git/remotes/ and .git/branches/, it is time to
retire the code.

Signed-off-by: Johannes Schindelin <redacted>
---
The PREVIEW patches also look good to me, though I just
skimmed them and other may chime in on the timing of them.

Thanks,
Stefan

Re: [PATCH 01/11] git-parse-remote: fix highly misleading man page

From: Johannes Schindelin <hidden>
Date: 2017-05-11 19:15:06

Hi Stefan,


On Thu, 11 May 2017, Stefan Beller wrote:
On Thu, May 11, 2017 at 6:47 AM, Johannes Schindelin
[off-list ref] wrote:
quoted
The man page still talked about the .git/remotes/ directory (which is
no longer in use, as of 75c384efb52 (Do not create $GIT_DIR/remotes/
directory anymore., 2006-12-19)).

Let's just revamp it almost completely to reflect the *purpose* of
that scriptlet, as opposed to its implementation details.

Signed-off-by: Johannes Schindelin <redacted>
---
 Documentation/git-parse-remote.txt | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/Documentation/git-parse-remote.txt b/Documentation/git-parse-remote.txt
index a45ea1ece81..7f865f33898 100644
--- a/Documentation/git-parse-remote.txt
+++ b/Documentation/git-parse-remote.txt
@@ -3,7 +3,7 @@ git-parse-remote(1)

 NAME
 ----
-git-parse-remote - Routines to help parsing remote repository access parameters
+git-parse-remote - Routines to help parsing remote repository information
Today I learned about git-parse-remote. Upon further inspection it is
just a lib, not anything useful for a user. (The man page with or
without this patch is not very helpful to me)
Yes, I figured as much when I read the man page. It shows how much most of
our man pages of the olden days improved when you find an unchanged one...
Only git-rebase as well as git-submodule include this lib, the
submodules only need get_default_remote (4 lines of sh), which is also
available in the submodule--helper, we'd just have to expose it and make
it accessible.

I wonder if we'd want to retire this script in the long run.
I do not think that we can. Just like git-sh-setup, we advertised it for
use in custom scripts.
I also wonder if rewriting the man page is good use of (your) time, as
the last contribution specifically to Documentation/git-parse-remote.txt
is 62d955fd43 (parse-remote: remove unused functions, 2009-06-12), which
has been a while since.
1) we still advertise those "shell library files" for consumption in
   users' scripts, so I think we have to keep the man page, too, and

2) The fact that the man page is stale just shows how dearly it is in need
   of being edited, no? ;-)
The outline in the coverletter promised more than just rewording, but
I am fine with the change as is; it's a good start.
You mean the commit message (I do not think I talked about the
git-parse-remote man page in the cover letter)?

If so, I think I only promised to completely revamp it and to stop talking
about implementation details...

Ciao,
Dscho

Re: [PATCH 11/11] PREVIEW: remove support for .git/remotes/ and .git/branches/

From: Johannes Schindelin <hidden>
Date: 2017-05-11 19:19:42

Hi Stefan,

On Thu, 11 May 2017, Stefan Beller wrote:
On Thu, May 11, 2017 at 6:48 AM, Johannes Schindelin
[off-list ref] wrote:
quoted
At long last, after a cycle or three of warning users who *still* use
the ancient feature of .git/remotes/ and .git/branches/, it is time to
retire the code.

Signed-off-by: Johannes Schindelin <redacted>
---
The PREVIEW patches also look good to me, though I just
skimmed them and other may chime in on the timing of them.
Thanks for the review!

I agree that the PREVIEW part is not quite as important as the first half.
I only bothered with it because I did want to make sure that the first
half is correct, that it does cover all the places we will need to delete
in the end.

In other words: the PREVIEW part should become its own patch series, that
I hope Junio will carry in pu (or next) for a while, similar to the
changes that removed the historical wart of the funny argument order in
`git merge`.

Ciao,
Dscho

Re: [PATCH 00/11] Start retiring .git/remotes/ and .git/branches/ for good

From: Johannes Schindelin <hidden>
Date: 2017-05-12 18:44:55

Hi Peff,

On Fri, 12 May 2017, Jeff King wrote:
On Thu, May 11, 2017 at 03:47:33PM +0200, Johannes Schindelin wrote:
quoted
Git uses the config for remote/upstream information in favor of the
previously-used .git/remotes/ and .git/branches/ for a decade now.

Nothing in Git writes to these files any longer, and the most
prominent user of .git/branches/ (Cogito) is long abandoned.

It is time to start not only deprecating this feature, but *really*
deprecating it. Like, really, *really*. For reals.
I like the goal, and the patches themselves (both the deprecations and
the actual removal) all look good to me.
Thanks!
If we want to start slow (and if Junio is right that there may be some
people who are actually using this feature, we probably should), step 0
may be making people aware that it's on the horizon, even before we
start issuing annoying warnings to them. This thread does that to some
degree, but we could also put it in the release notes for a version.
That's not guaranteed to get people's attention, but it gives more
opportunity for them to speak up before installing a version of Git that
produces warnings whenever they fetch.
Okay. I do not think there is any value in putting this into the release
notes, of course, as 1) next to nobody reads them, at least not closely,
and 2) people who still use .git/branches/ very clearly missed the release
notes of a decade ago that .git/branches/ is not the way to go.

Of course, it takes what it takes. If we spend 6+ cycles deprecating a
feature that only one person may still use, for what we know, so be it.

Ciao,
Dscho

Re: [PATCH 00/11] Start retiring .git/remotes/ and .git/branches/ for good

From: Jeff King <hidden>
Date: 2017-05-12 18:45:55

On Thu, May 11, 2017 at 03:47:33PM +0200, Johannes Schindelin wrote:
Git uses the config for remote/upstream information in favor of the
previously-used .git/remotes/ and .git/branches/ for a decade now.

Nothing in Git writes to these files any longer, and the most prominent
user of .git/branches/ (Cogito) is long abandoned.

It is time to start not only deprecating this feature, but *really*
deprecating it. Like, really, *really*. For reals.
I like the goal, and the patches themselves (both the deprecations and
the actual removal) all look good to me.

If we want to start slow (and if Junio is right that there may be some
people who are actually using this feature, we probably should), step 0
may be making people aware that it's on the horizon, even before we
start issuing annoying warnings to them. This thread does that to some
degree, but we could also put it in the release notes for a version.
That's not guaranteed to get people's attention, but it gives more
opportunity for them to speak up before installing a version of Git that
produces warnings whenever they fetch.

-Peff

[PATCH 0/5] Remove now-unused git-parse-remote

From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2020-11-11 15:18:17

I started poking at removing .git/branches from the default template,
which I had a patch for until I noticed Johannes's old[1] series.

In any case, this is one thing that came out of that
investigation. The code we're keeping by moving it to git-submodule.sh
can also be replaced by some C code we have, but I wanted to leave
that to another submission (if I'll get to it), and make this simply a
code removal.

1. https://public-inbox.org/git/cover.1494509599.git.johannes.schindelin@gmx.de/

Ævar Arnfjörð Bjarmason (5):
  parse-remote: remove unused GIT_DIR variable
  parse-remote: remove long-dead rebase code
  parse-remote: remove long-dead git-pull.sh code
  parse-remote: move used code to git-submodule.sh
  parse-remote: remove this now-unused library

 .gitignore                         |  1 -
 Documentation/git-parse-remote.txt | 23 -------
 Makefile                           |  2 -
 command-list.txt                   |  1 -
 git-parse-remote.sh                | 98 ------------------------------
 git-submodule.sh                   |  8 ++-
 6 files changed, 7 insertions(+), 126 deletions(-)
 delete mode 100644 Documentation/git-parse-remote.txt

-- 
2.29.2.222.g5d2a92d10f8

[PATCH 1/5] parse-remote: remove unused GIT_DIR variable

From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2020-11-11 15:18:18

This variable was last used in code removed way back in
45781adb9a ("get_remote_url(): use the same data source as ls-remote
to get remote urls", 2011-03-01).

Since it's only used in git-submodule.sh it could have been the case
that the code there relied on us setting $GIT_DIR, but that's not the
case. The only use of $GIT_DIR in git-submodule.sh involves a $GIT_DIR
variable that the code there sets by itself.

Signed-off-by: Ævar Arnfjörð Bjarmason <redacted>
---
 git-parse-remote.sh | 4 ----
 1 file changed, 4 deletions(-)
diff --git a/git-parse-remote.sh b/git-parse-remote.sh
index d3c39980f3..6b743cda17 100644
--- a/git-parse-remote.sh
+++ b/git-parse-remote.sh
@@ -2,10 +2,6 @@
 # upstream branch that should be pulled by "git pull" from the current
 # branch.
 
-# git-ls-remote could be called from outside a git managed repository;
-# this would fail in that case and would issue an error message.
-GIT_DIR=$(git rev-parse -q --git-dir) || :;
-
 get_default_remote () {
 	curr_branch=$(git symbolic-ref -q HEAD)
 	curr_branch="${curr_branch#refs/heads/}"
-- 
2.29.2.222.g5d2a92d10f8

[PATCH 2/5] parse-remote: remove long-dead rebase code

From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2020-11-11 15:18:19

Remove code that was last used in the now-removed rebase.useBuiltin
setting. See d03ebd411c ("rebase: remove the rebase.useBuiltin
setting", 2019-03-18) for the removal of its last user.

Signed-off-by: Ævar Arnfjörð Bjarmason <redacted>
---
 git-parse-remote.sh | 47 ---------------------------------------------
 1 file changed, 47 deletions(-)
diff --git a/git-parse-remote.sh b/git-parse-remote.sh
index 6b743cda17..e3f6195281 100644
--- a/git-parse-remote.sh
+++ b/git-parse-remote.sh
@@ -48,50 +48,3 @@ get_remote_merge_branch () {
 	    esac
 	esac
 }
-
-error_on_missing_default_upstream () {
-	cmd="$1"
-	op_type="$2"
-	op_prep="$3" # FIXME: op_prep is no longer used
-	example="$4"
-	branch_name=$(git symbolic-ref -q HEAD)
-	display_branch_name="${branch_name#refs/heads/}"
-	# If there's only one remote, use that in the suggestion
-	remote="$(gettext "<remote>")"
-	branch="$(gettext "<branch>")"
-	if test $(git remote | wc -l) = 1
-	then
-		remote=$(git remote)
-	fi
-
-	if test -z "$branch_name"
-	then
-		gettextln "You are not currently on a branch."
-	else
-		gettextln "There is no tracking information for the current branch."
-	fi
-	case "$op_type" in
-	rebase)
-		gettextln "Please specify which branch you want to rebase against."
-		;;
-	merge)
-		gettextln "Please specify which branch you want to merge with."
-		;;
-	*)
-		echo >&2 "BUG: unknown operation type: $op_type"
-		exit 1
-		;;
-	esac
-	eval_gettextln "See git-\${cmd}(1) for details."
-	echo
-	echo "    $example"
-	echo
-	if test -n "$branch_name"
-	then
-		gettextln "If you wish to set tracking information for this branch you can do so with:"
-		echo
-		echo "    git branch --set-upstream-to=$remote/$branch $display_branch_name"
-		echo
-	fi
-	exit 1
-}
-- 
2.29.2.222.g5d2a92d10f8

[PATCH 4/5] parse-remote: move used code to git-submodule.sh

From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2020-11-11 15:18:22

Move the only code in git-parse-remote.sh that was actually used to
git-submodule.sh.

This leaves just a comment in git-parse-remote.sh for ease of review,
a later commit will remove it and its build system configuration.

Signed-off-by: Ævar Arnfjörð Bjarmason <redacted>
---
 git-parse-remote.sh | 7 -------
 git-submodule.sh    | 7 +++++++
 2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/git-parse-remote.sh b/git-parse-remote.sh
index 864519eecf..b8d6a215e6 100644
--- a/git-parse-remote.sh
+++ b/git-parse-remote.sh
@@ -1,10 +1,3 @@
 # This is a shell library to calculate the remote repository and
 # upstream branch that should be pulled by "git pull" from the current
 # branch.
-
-get_default_remote () {
-	curr_branch=$(git symbolic-ref -q HEAD)
-	curr_branch="${curr_branch#refs/heads/}"
-	origin=$(git config --get "branch.$curr_branch.remote")
-	echo ${origin:-origin}
-}
diff --git a/git-submodule.sh b/git-submodule.sh
index 7ce52872b7..a6219c34e2 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -413,6 +413,13 @@ is_tip_reachable () (
 	test -z "$rev"
 )
 
+get_default_remote () {
+	curr_branch=$(git symbolic-ref -q HEAD)
+	curr_branch="${curr_branch#refs/heads/}"
+	origin=$(git config --get "branch.$curr_branch.remote")
+	echo ${origin:-origin}
+}
+
 fetch_in_submodule () (
 	sanitize_submodule_env &&
 	cd "$1" &&
-- 
2.29.2.222.g5d2a92d10f8

[PATCH 5/5] parse-remote: remove this now-unused library

From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2020-11-11 15:18:23

Completely remove the git-parse-remote shellscript library.

Since e9460a66e0 ("parse-remote: support default reflist in
get_remote_merge_branch", 2009-06-12) when there were around 300 lines
of code here used by various core code everything in it has become
unsued, and that unused code was removed in preceding commits. Almost
all of its previous functionality has now been rewritten in C.

Signed-off-by: Ævar Arnfjörð Bjarmason <redacted>
---
 .gitignore                         |  1 -
 Documentation/git-parse-remote.txt | 23 -----------------------
 Makefile                           |  2 --
 command-list.txt                   |  1 -
 git-submodule.sh                   |  1 -
 5 files changed, 28 deletions(-)
 delete mode 100644 Documentation/git-parse-remote.txt
diff --git a/.gitignore b/.gitignore
index 6232d33924..9da275e4e8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -114,7 +114,6 @@
 /git-pack-redundant
 /git-pack-objects
 /git-pack-refs
-/git-parse-remote
 /git-patch-id
 /git-prune
 /git-prune-packed
diff --git a/Documentation/git-parse-remote.txt b/Documentation/git-parse-remote.txt
deleted file mode 100644
index a45ea1ece8..0000000000
--- a/Documentation/git-parse-remote.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-git-parse-remote(1)
-===================
-
-NAME
-----
-git-parse-remote - Routines to help parsing remote repository access parameters
-
-
-SYNOPSIS
---------
-[verse]
-'. "$(git --exec-path)/git-parse-remote"'
-
-DESCRIPTION
------------
-This script is included in various scripts to supply
-routines to parse files under $GIT_DIR/remotes/ and
-$GIT_DIR/branches/ and configuration variables that are related
-to fetching, pulling and pushing.
-
-GIT
----
-Part of the linkgit:git[1] suite
diff --git a/Makefile b/Makefile
index 790a883932..c874dff9b8 100644
--- a/Makefile
+++ b/Makefile
@@ -613,7 +613,6 @@ SCRIPT_SH += git-submodule.sh
 SCRIPT_SH += git-web--browse.sh
 
 SCRIPT_LIB += git-mergetool--lib
-SCRIPT_LIB += git-parse-remote
 SCRIPT_LIB += git-rebase--preserve-merges
 SCRIPT_LIB += git-sh-i18n
 SCRIPT_LIB += git-sh-setup
@@ -2577,7 +2576,6 @@ XGETTEXT_FLAGS_PERL = $(XGETTEXT_FLAGS) --language=Perl \
 	--keyword=__ --keyword=N__ --keyword="__n:1,2"
 LOCALIZED_C = $(C_OBJ:o=c) $(LIB_H) $(GENERATED_H)
 LOCALIZED_SH = $(SCRIPT_SH)
-LOCALIZED_SH += git-parse-remote.sh
 LOCALIZED_SH += git-rebase--preserve-merges.sh
 LOCALIZED_SH += git-sh-setup.sh
 LOCALIZED_PERL = $(SCRIPT_PERL)
diff --git a/command-list.txt b/command-list.txt
index 0e3204e7d1..c19c8a94fe 100644
--- a/command-list.txt
+++ b/command-list.txt
@@ -135,7 +135,6 @@ git-p4                                  foreignscminterface
 git-pack-objects                        plumbingmanipulators
 git-pack-redundant                      plumbinginterrogators
 git-pack-refs                           ancillarymanipulators
-git-parse-remote                        synchelpers
 git-patch-id                            purehelpers
 git-prune                               ancillarymanipulators   complete
 git-prune-packed                        plumbingmanipulators
diff --git a/git-submodule.sh b/git-submodule.sh
index a6219c34e2..e7962e1a45 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -20,7 +20,6 @@ USAGE="[--quiet] [--cached]
 OPTIONS_SPEC=
 SUBDIRECTORY_OK=Yes
 . git-sh-setup
-. git-parse-remote
 require_work_tree
 wt_prefix=$(git rev-parse --show-prefix)
 cd_to_toplevel
-- 
2.29.2.222.g5d2a92d10f8

[PATCH 3/5] parse-remote: remove long-dead git-pull.sh code

From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2020-11-11 15:18:25

Remove long-dead code that used to be used by git-pull.sh before
49eb8d39c7 ("Remove contrib/examples/*", 2018-03-25).

Signed-off-by: Ævar Arnfjörð Bjarmason <redacted>
---
 git-parse-remote.sh | 40 ----------------------------------------
 1 file changed, 40 deletions(-)
diff --git a/git-parse-remote.sh b/git-parse-remote.sh
index e3f6195281..864519eecf 100644
--- a/git-parse-remote.sh
+++ b/git-parse-remote.sh
@@ -8,43 +8,3 @@ get_default_remote () {
 	origin=$(git config --get "branch.$curr_branch.remote")
 	echo ${origin:-origin}
 }
-
-get_remote_merge_branch () {
-	case "$#" in
-	0|1)
-	    origin="$1"
-	    default=$(get_default_remote)
-	    test -z "$origin" && origin=$default
-	    curr_branch=$(git symbolic-ref -q HEAD) &&
-	    [ "$origin" = "$default" ] &&
-	    echo $(git for-each-ref --format='%(upstream)' $curr_branch)
-	    ;;
-	*)
-	    repo=$1
-	    shift
-	    ref=$1
-	    # FIXME: It should return the tracking branch
-	    #        Currently only works with the default mapping
-	    case "$ref" in
-	    +*)
-		ref=$(expr "z$ref" : 'z+\(.*\)')
-		;;
-	    esac
-	    expr "z$ref" : 'z.*:' >/dev/null || ref="${ref}:"
-	    remote=$(expr "z$ref" : 'z\([^:]*\):')
-	    case "$remote" in
-	    '' | HEAD ) remote=HEAD ;;
-	    heads/*) remote=${remote#heads/} ;;
-	    refs/heads/*) remote=${remote#refs/heads/} ;;
-	    refs/* | tags/* | remotes/* ) remote=
-	    esac
-	    [ -n "$remote" ] && case "$repo" in
-		.)
-		    echo "refs/heads/$remote"
-		    ;;
-		*)
-		    echo "refs/remotes/$repo/$remote"
-		    ;;
-	    esac
-	esac
-}
-- 
2.29.2.222.g5d2a92d10f8

Re: [PATCH 0/5] Remove now-unused git-parse-remote

From: Jeff King <hidden>
Date: 2020-11-11 17:37:44

On Wed, Nov 11, 2020 at 04:17:49PM +0100, Ævar Arnfjörð Bjarmason wrote:
I started poking at removing .git/branches from the default template,
which I had a patch for until I noticed Johannes's old[1] series.

In any case, this is one thing that came out of that
investigation. The code we're keeping by moving it to git-submodule.sh
can also be replaced by some C code we have, but I wanted to leave
that to another submission (if I'll get to it), and make this simply a
code removal.
I'm happy to see unused code go away in general, but this raises a
question: what promises have we made to end-user scripts about this
library being available?

We do install it, including a manpage which claims you can do:

  . "$(git --exec-path)/git-parse-remote"

though it does not actually document any particular functions being
available. It looks like we've removed functions before without warning
(e.g., 1a92777504 (git-request-pull: open-code the only invocation of
get_remote_url, 2011-03-01)).

I'm just wondering if we need to have any kind of warning or deprecation
period.

To be clear, I find it pretty unlikely that anybody is using the rather
esoteric functions in this file, but that's usually when I get most
surprised. :)
 .gitignore                         |  1 -
 Documentation/git-parse-remote.txt | 23 -------
 Makefile                           |  2 -
 command-list.txt                   |  1 -
 git-parse-remote.sh                | 98 ------------------------------
 git-submodule.sh                   |  8 ++-
 6 files changed, 7 insertions(+), 126 deletions(-)
 delete mode 100644 Documentation/git-parse-remote.txt
I expected to see a "delete" line for git-parse-remote.sh here. I
thought at first maybe you were leaving the empty shell so that people
could continue to source it (keeping the promise in the manpage, but not
providing any actual functions). But it looks like the final patch stops
building it at all, leaving the now-useless source file.

-Peff

Re: [PATCH 0/5] Remove now-unused git-parse-remote

From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2020-11-12 14:09:30

On Wed, Nov 11 2020, Jeff King wrote:
On Wed, Nov 11, 2020 at 04:17:49PM +0100, Ævar Arnfjörð Bjarmason wrote:
quoted
I started poking at removing .git/branches from the default template,
which I had a patch for until I noticed Johannes's old[1] series.

In any case, this is one thing that came out of that
investigation. The code we're keeping by moving it to git-submodule.sh
can also be replaced by some C code we have, but I wanted to leave
that to another submission (if I'll get to it), and make this simply a
code removal.
I'm happy to see unused code go away in general, but this raises a
question: what promises have we made to end-user scripts about this
library being available?

We do install it, including a manpage which claims you can do:

  . "$(git --exec-path)/git-parse-remote"

though it does not actually document any particular functions being
available. It looks like we've removed functions before without warning
(e.g., 1a92777504 (git-request-pull: open-code the only invocation of
get_remote_url, 2011-03-01)).

I'm just wondering if we need to have any kind of warning or deprecation
period.

To be clear, I find it pretty unlikely that anybody is using the rather
esoteric functions in this file, but that's usually when I get most
surprised. :)
I think it's fine to just remove it, I'll note that in a v2 commit
message. I.e. the convention at the time was just to create these *.sh
libraries as documented, but I don't think anyone used them outside of
git.git.

If they did maybe we should move them to contrib and ... create the same
bitrot as with the *.sh builtins :)

So I think it's better just to "git rm" it, if it breaks things for
anyone they can just get the last version and maintain it themselves.
quoted
 .gitignore                         |  1 -
 Documentation/git-parse-remote.txt | 23 -------
 Makefile                           |  2 -
 command-list.txt                   |  1 -
 git-parse-remote.sh                | 98 ------------------------------
 git-submodule.sh                   |  8 ++-
 6 files changed, 7 insertions(+), 126 deletions(-)
 delete mode 100644 Documentation/git-parse-remote.txt
I expected to see a "delete" line for git-parse-remote.sh here. I
thought at first maybe you were leaving the empty shell so that people
could continue to source it (keeping the promise in the manpage, but not
providing any actual functions). But it looks like the final patch stops
building it at all, leaving the now-useless source file.
That was just a mistake on my part, I meant to "git rm" it but
forgot. Will fix it v2.

How do I "git fetch" with a custom <refspec> but a default remote?

From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2020-11-12 14:19:27

On Wed, Nov 11 2020, Ævar Arnfjörð Bjarmason wrote:
In any case, this is one thing that came out of that
investigation. The code we're keeping by moving it to git-submodule.sh
can also be replaced by some C code we have, but I wanted to leave
that to another submission (if I'll get to it), and make this simply a
code removal.
I may have missed a way to do $subject, but I don't think it's
possible. The reason I want it is because git-submodule.sh does this:

    git fetch $(get_default_remote) "$@" ;;

Where that shellscript function gets the name of the remote configured
for the current branch. If you do just a:

    git fetch

Then it will do the right thing, per its documentation:

     When no remote is specified, by default the origin remote will be
     used, unless there’s an upstream branch configured for the current
     branch.

But git-submodule.sh wants to do:

    git fetch <default-remote> <some-sha1>

So the caller is forced to find out what that is.

I came up with this patch:
    
    diff --git a/builtin/fetch.c b/builtin/fetch.c
    index f9c3c49f14..f110ac8d08 100644
    --- a/builtin/fetch.c
    +++ b/builtin/fetch.c
    @@ -56,6 +56,7 @@ static int prune_tags = -1; /* unspecified */
     #define PRUNE_TAGS_BY_DEFAULT 0 /* do we prune tags by default? */
     
     static int all, append, dry_run, force, keep, multiple, update_head_ok;
    +static int default_remote;
     static int write_fetch_head = 1;
     static int verbosity, deepen_relative, set_upstream;
     static int progress = -1;
    @@ -140,6 +141,8 @@ static struct option builtin_fetch_options[] = {
            OPT__VERBOSITY(&verbosity),
            OPT_BOOL(0, "all", &all,
                     N_("fetch from all remotes")),
    +       OPT_BOOL(0, "default-remote", &default_remote,
    +                N_("fetch from default remote")),
            OPT_BOOL(0, "set-upstream", &set_upstream,
                     N_("set upstream for git pull/fetch")),
            OPT_BOOL('a', "append", &append,
    @@ -1852,7 +1855,7 @@ int cmd_fetch(int argc, const char **argv, const char *prefix)
                    else if (argc > 1)
                            die(_("fetch --all does not make sense with refspecs"));
                    (void) for_each_remote(get_one_remote_for_fetch, &list);
    -       } else if (argc == 0) {
    +       } else if (argc == 0 || default_remote) {
                    /* No arguments -- use default remote */
                    remote = remote_get(NULL);
            } else if (multiple) {

Which allows me to do:

    -               git fetch $(get_default_remote) "$@" ;;
    +               git fetch --default-remote "$@" ;;


So it works, but what do we think about this calling convention? Do we
have any prior art for commands that take positional arguments like
<remote> and <refspec> where you'd like to use a default for an earlier
argument to provide a subsequent one?

To make it more general and consistent we'de probably like a --remote=*
and --refspec arguments, so the invocation would be:

    git fetch ([--remote=]<name> | --default-remote) [([--refspec=]<refspec> | --default-refspec)]

But maybe I'm overthinking it...

Re: [PATCH 0/5] Remove now-unused git-parse-remote

From: Jeff King <hidden>
Date: 2020-11-12 18:42:33

On Thu, Nov 12, 2020 at 03:09:25PM +0100, Ævar Arnfjörð Bjarmason wrote:
quoted
To be clear, I find it pretty unlikely that anybody is using the rather
esoteric functions in this file, but that's usually when I get most
surprised. :)
I think it's fine to just remove it, I'll note that in a v2 commit
message. I.e. the convention at the time was just to create these *.sh
libraries as documented, but I don't think anyone used them outside of
git.git.
OK. I'm fine with that interpretation as long as we are doing it
consciously. It might be worth noting in the release notes (not only the
removal here, but our general attitude towards these shell libraries).
If they did maybe we should move them to contrib and ... create the same
bitrot as with the *.sh builtins :)
Please no. :)
quoted
I expected to see a "delete" line for git-parse-remote.sh here. I
thought at first maybe you were leaving the empty shell so that people
could continue to source it (keeping the promise in the manpage, but not
providing any actual functions). But it looks like the final patch stops
building it at all, leaving the now-useless source file.
That was just a mistake on my part, I meant to "git rm" it but
forgot. Will fix it v2.
Makes sense.

-Peff

Re: How do I "git fetch" with a custom <refspec> but a default remote?

From: Jeff King <hidden>
Date: 2020-11-12 18:51:49

On Thu, Nov 12, 2020 at 03:19:19PM +0100, Ævar Arnfjörð Bjarmason wrote:
On Wed, Nov 11 2020, Ævar Arnfjörð Bjarmason wrote:
quoted
In any case, this is one thing that came out of that
investigation. The code we're keeping by moving it to git-submodule.sh
can also be replaced by some C code we have, but I wanted to leave
that to another submission (if I'll get to it), and make this simply a
code removal.
I may have missed a way to do $subject, but I don't think it's
possible.
I'm pretty certain it's not. I've run into this before and looked for a
solution without finding one (in my case I was not scripting, but was
just too lazy to type "origin").
I came up with this patch:
[...]
So it works, but what do we think about this calling convention? Do we
have any prior art for commands that take positional arguments like
<remote> and <refspec> where you'd like to use a default for an earlier
argument to provide a subsequent one?
It seems perfectly reasonable to me. The logic for parsing (that users
must understand) is: if --default-remote is specified, act as if the
default remote was specified as the first argument.

I can't think offhand of a case exactly like this, but certainly options
like "git tag -d" influences how the non-option arguments are parsed.
To make it more general and consistent we'de probably like a --remote=*
and --refspec arguments, so the invocation would be:

    git fetch ([--remote=]<name> | --default-remote) [([--refspec=]<refspec> | --default-refspec)]

But maybe I'm overthinking it...
If we were starting from scratch, then I think that might have been
nicer, because --default-remote would be implied if there is no
"--remote" option. And then my lazy-to-type:

  git fetch topic

would just work. But given that we have the positional <remote>
parameter already, I don't think adding --remote gives much value. And
it raises the question of what "git fetch --remote=foo --remote=bar"
means (I think the answer is last-one-wins).

Slightly orthogonal, but I've occasionally also wished for:

  git fetch @{upstream}

or

  git fetch @{push}

to grab the latest copy of related branches. Those are a _bit_ funny in
that we usually resolve those names to the local tracking branch. But I
think the semantics are clear (we get to that tracking branch by
applying fetch refspecs to a particular remote).

I mention it only in case it gives you any bright ideas on how the
command-line parsing would work there.

-Peff

Re: How do I "git fetch" with a custom <refspec> but a default remote?

From: Chris Torek <hidden>
Date: 2020-11-12 19:26:40

On Thu, Nov 12, 2020 at 10:52 AM Jeff King [off-list ref] wrote:
If we were starting from scratch, then I think that might have been
nicer, because --default-remote would be implied if there is no
"--remote" option. And then my lazy-to-type:

  git fetch topic

would just work. But given that we have the positional <remote>
parameter already, I don't think adding --remote gives much value. And
it raises the question of what "git fetch --remote=foo --remote=bar"
means (I think the answer is last-one-wins).
Since `git fetch` can fetch from more than one remote, it seems to me
to make more sense to mean "fetch from each".

(This isn't necessarily an argument in favor of adding these options,
just my suggestion for what multiple `--remote=` settings would mean.)

Chris

Re: How do I "git fetch" with a custom <refspec> but a default remote?

From: Jeff King <hidden>
Date: 2020-11-12 20:48:05

On Thu, Nov 12, 2020 at 11:26:25AM -0800, Chris Torek wrote:
On Thu, Nov 12, 2020 at 10:52 AM Jeff King [off-list ref] wrote:
quoted
If we were starting from scratch, then I think that might have been
nicer, because --default-remote would be implied if there is no
"--remote" option. And then my lazy-to-type:

  git fetch topic

would just work. But given that we have the positional <remote>
parameter already, I don't think adding --remote gives much value. And
it raises the question of what "git fetch --remote=foo --remote=bar"
means (I think the answer is last-one-wins).
Since `git fetch` can fetch from more than one remote, it seems to me
to make more sense to mean "fetch from each".
Ah, right, I forgot that --multiple existed. Without it, specifying
multiple remotes makes no sense at all. But perhaps giving multiple
--remote would implicitly specify "--multiple". That makes sense to me.
(This isn't necessarily an argument in favor of adding these options,
just my suggestion for what multiple `--remote=` settings would mean.)
Likewise. "makes sense" above mostly means I would not object to it, but
I am not advocating for it. :)

-Peff

Re: How do I "git fetch" with a custom <refspec> but a default remote?

From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2020-11-14 12:12:57

On Thu, Nov 12 2020, Ævar Arnfjörð Bjarmason wrote:
On Wed, Nov 11 2020, Ævar Arnfjörð Bjarmason wrote:
quoted
In any case, this is one thing that came out of that
investigation. The code we're keeping by moving it to git-submodule.sh
can also be replaced by some C code we have, but I wanted to leave
that to another submission (if I'll get to it), and make this simply a
code removal.
I may have missed a way to do $subject, but I don't think it's
possible. The reason I want it is because git-submodule.sh does this:

    git fetch $(get_default_remote) "$@" ;;

Where that shellscript function gets the name of the remote configured
for the current branch. If you do just a:

    git fetch

Then it will do the right thing, per its documentation:

     When no remote is specified, by default the origin remote will be
     used, unless there’s an upstream branch configured for the current
     branch.

But git-submodule.sh wants to do:

    git fetch <default-remote> <some-sha1>

So the caller is forced to find out what that is.

I came up with this patch:
    
    diff --git a/builtin/fetch.c b/builtin/fetch.c
    index f9c3c49f14..f110ac8d08 100644
    --- a/builtin/fetch.c
    +++ b/builtin/fetch.c
    @@ -56,6 +56,7 @@ static int prune_tags = -1; /* unspecified */
     #define PRUNE_TAGS_BY_DEFAULT 0 /* do we prune tags by default? */
     
     static int all, append, dry_run, force, keep, multiple, update_head_ok;
    +static int default_remote;
     static int write_fetch_head = 1;
     static int verbosity, deepen_relative, set_upstream;
     static int progress = -1;
    @@ -140,6 +141,8 @@ static struct option builtin_fetch_options[] = {
            OPT__VERBOSITY(&verbosity),
            OPT_BOOL(0, "all", &all,
                     N_("fetch from all remotes")),
    +       OPT_BOOL(0, "default-remote", &default_remote,
    +                N_("fetch from default remote")),
            OPT_BOOL(0, "set-upstream", &set_upstream,
                     N_("set upstream for git pull/fetch")),
            OPT_BOOL('a', "append", &append,
    @@ -1852,7 +1855,7 @@ int cmd_fetch(int argc, const char **argv, const char *prefix)
                    else if (argc > 1)
                            die(_("fetch --all does not make sense with refspecs"));
                    (void) for_each_remote(get_one_remote_for_fetch, &list);
    -       } else if (argc == 0) {
    +       } else if (argc == 0 || default_remote) {
                    /* No arguments -- use default remote */
                    remote = remote_get(NULL);
            } else if (multiple) {

Which allows me to do:

    -               git fetch $(get_default_remote) "$@" ;;
    +               git fetch --default-remote "$@" ;;


So it works, but what do we think about this calling convention? Do we
have any prior art for commands that take positional arguments like
<remote> and <refspec> where you'd like to use a default for an earlier
argument to provide a subsequent one?

To make it more general and consistent we'de probably like a --remote=*
and --refspec arguments, so the invocation would be:

    git fetch ([--remote=]<name> | --default-remote) [([--refspec=]<refspec> | --default-refspec)]

But maybe I'm overthinking it...
To reply to my own question, this is possible with the --stdin option:

    echo <refpec> | git fetch --stdin

See 2b713c272c ("fetch: allow refspecs specified through stdin",
2020-08-17)[1].

1. https://lore.kernel.org/git/9f277f1631a37785dcd72a552dd86738d639ea59.1597722942.git.jonathantanmy@google.com/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help