{"thread":{"id":"45931","subject":"[PATCH 05/11] Revert \"Revert \"Don't create the $GIT_DIR/branches directory on init\"\"","startedAt":"2017-05-11T13:48:22Z","lastAt":"2020-11-17T14:25:02Z","messageCount":62,"participants":["Johannes Schindelin","Stefan Beller","Junio C Hamano","Jonathan Nieder","Jeff King","Ævar Arnfjörð Bjarmason","Chris Torek"],"isPatch":true,"patchVersion":1,"patchTotal":11},"messages":[{"id":"319394","messageId":"32d64bd3716c6f7a24877535330b7ac754eb117c.1494509599.git.johannes.schindelin@gmx.de","threadId":"45931","inReplyTo":"cover.1494509599.git.johannes.schindelin@gmx.de","subject":"[PATCH 05/11] Revert \"Revert \"Don't create the $GIT_DIR/branches directory on init\"\"","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2017-05-11T13:47:50Z","receivedAt":"2017-05-11T13:48:22Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"A long, long, long time ago, we stored the \"upstream\" information of\nbranches in files inside the .git/branches/ directory. We don't do this\nanymore, though. Since 5751f49010e (Move remote parsing into a library\nfile out of builtin-push., 2007-05-12), to be precise.\n\nThis is sort of a sibling to 75c384efb52 (Do not create $GIT_DIR/remotes/\ndirectory anymore., 2006-12-19).\n\nThe tests t5505-remote and t5516-fetch-push need to be adjusted now, as\nthey expect to find a .git/branches/ directory.\n\nThis reverts c8a58ac5a52 (Revert \"Don't create the $GIT_DIR/branches\ndirectory on init\", 2009-10-31).\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n---\n t/t5505-remote.sh     | 2 ++\n t/t5516-fetch-push.sh | 4 ++++\n templates/branches--  | 1 -\n 3 files changed, 6 insertions(+), 1 deletion(-)\n delete mode 100644 templates/branches--\n\ndiff --git a/t/t5505-remote.sh b/t/t5505-remote.sh\nindex a6c0178f3af..4fd66760c75 100755\n--- a/t/t5505-remote.sh\n+++ b/t/t5505-remote.sh\n@@ -830,6 +830,7 @@ test_expect_success 'migrate a remote from named file in $GIT_DIR/branches' '\n \t(\n \t\tcd six &&\n \t\tgit remote rm origin &&\n+\t\tmkdir -p .git/branches &&\n \t\techo \"$origin_url\" >.git/branches/origin &&\n \t\tgit remote rename origin origin &&\n \t\ttest_path_is_missing .git/branches/origin &&\n@@ -844,6 +845,7 @@ test_expect_success 'migrate a remote from named file in $GIT_DIR/branches (2)'\n \t(\n \t\tcd seven &&\n \t\tgit remote rm origin &&\n+\t\tmkdir .git/branches &&\n \t\techo \"quux#foom\" > .git/branches/origin &&\n \t\tgit remote rename origin origin &&\n \t\ttest_path_is_missing .git/branches/origin &&\ndiff --git a/t/t5516-fetch-push.sh b/t/t5516-fetch-push.sh\nindex 177897ea0b1..457f648ad91 100755\n--- a/t/t5516-fetch-push.sh\n+++ b/t/t5516-fetch-push.sh\n@@ -866,6 +866,7 @@ test_expect_success 'fetch with branches' '\n \tmk_empty testrepo &&\n \tgit branch second $the_first_commit &&\n \tgit checkout second &&\n+\tmkdir -p testrepo/.git/branches &&\n \techo \"..\" > testrepo/.git/branches/branch1 &&\n \t(\n \t\tcd testrepo &&\n@@ -879,6 +880,7 @@ test_expect_success 'fetch with branches' '\n \n test_expect_success 'fetch with branches containing #' '\n \tmk_empty testrepo &&\n+\tmkdir -p testrepo/.git/branches &&\n \techo \"..#second\" > testrepo/.git/branches/branch2 &&\n \t(\n \t\tcd testrepo &&\n@@ -893,6 +895,7 @@ test_expect_success 'fetch with branches containing #' '\n test_expect_success 'push with branches' '\n \tmk_empty testrepo &&\n \tgit checkout second &&\n+\tmkdir -p .git/branches &&\n \techo \"testrepo\" > .git/branches/branch1 &&\n \tgit push branch1 &&\n \t(\n@@ -905,6 +908,7 @@ test_expect_success 'push with branches' '\n \n test_expect_success 'push with branches containing #' '\n \tmk_empty testrepo &&\n+\tmkdir -p .git/branches &&\n \techo \"testrepo#branch3\" > .git/branches/branch2 &&\n \tgit push branch2 &&\n \t(\ndiff --git a/templates/branches-- b/templates/branches--\ndeleted file mode 100644\nindex fae88709a63..00000000000\n--- a/templates/branches--\n+++ /dev/null\n@@ -1 +0,0 @@\n-: this is just to ensure the directory exists.\n-- \n2.12.2.windows.2.800.gede8f145e06\n\n\n"},{"id":"319395","messageId":"52d5a69b713f19d99e069054ea1a8a46828d9927.1494509599.git.johannes.schindelin@gmx.de","threadId":"45931","inReplyTo":"cover.1494509599.git.johannes.schindelin@gmx.de","subject":"[PATCH 04/11] remote: warn loud and clear when .git/remotes/ is *still* used","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2017-05-11T13:47:47Z","receivedAt":"2017-05-11T13:48:24Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Since at least 75c384efb52 (Do not create $GIT_DIR/remotes/ directory\nanymore., 2006-12-19), we strongly prefer remotes and upstream branches\nto be specified in the config rather than .git/remotes/ and\n.git/branches/.\n\nFor some time, we still retained backwards-compatibility. At some stage,\nit becomes pointless, though, as it just adds maintenance burden for no\ngood reason: no repositories created within the past decade have\npopulated these directories, and pre-existing repositories were most\nlikely migrated by now.\n\nIn preparation for removing support for this ancient compatibility that\nshould no longer be necessary, let's warn everybody who is still using\nthat feature (if there is anybody left, that is).\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n---\n remote.c | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/remote.c b/remote.c\nindex 04ab2230337..b2ae168035e 100644\n--- a/remote.c\n+++ b/remote.c\n@@ -255,6 +255,10 @@ static void read_remotes_file(struct remote *remote)\n \n \tif (!f)\n \t\treturn;\n+\n+\twarning(_(\"the remote '%s' uses the long-deprecated '%s' file\"),\n+\t\tremote->name, git_path(\"branches/%s\", remote->name));\n+\n \tremote->configured_in_repo = 1;\n \tremote->origin = REMOTE_REMOTES;\n \twhile (strbuf_getline(&buf, f) != EOF) {\n-- \n2.12.2.windows.2.800.gede8f145e06\n\n\n"},{"id":"319396","messageId":"cover.1494509599.git.johannes.schindelin@gmx.de","threadId":"45931","inReplyTo":null,"subject":"[PATCH 00/11] Start retiring .git/remotes/ and .git/branches/ for good","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2017-05-11T13:47:33Z","receivedAt":"2017-05-11T13:48:26Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Git uses the config for remote/upstream information in favor of the\npreviously-used .git/remotes/ and .git/branches/ for a decade now.\n\nNothing in Git writes to these files any longer, and the most prominent\nuser of .git/branches/ (Cogito) is long abandoned.\n\nIt is time to start not only deprecating this feature, but *really*\ndeprecating it. Like, really, *really*. For reals.\n\nHalf of this patch series does that.\n\nThe second half is a preview of the patches to finally rip out the code\nthat implements .git/remotes/ & .git/branches/ support. We we will want\nto apply them to a future major version of Git, after *really*\ndeprecating .git/remotes/ & .git/branches/ support for at least one\nmajor version (I would be more comfortable with three major versions,\nactually).\n\nNote: even after these patches, there is still a file mentioning\n.git/remote/ (sic!) and .git/branches/:\nDocumentation/git-show-branch.txt. The reference is not, however,\ndescribing Git's internals, but merely uses existing commit history\n(from the olden days) in an example.\n\nThere is also a reference in contrib/examples/git-fetch.sh, but that\nshould remain there, for historians' purposes.\n\nOh, and the reason that I split out the changes to t5505, t5510, t5515 &\nt5516 in the PREVIEW part is that those changes are unfortunately not\nquite as trivial as I hoped, and require a bit of a rationale for the\nway they were performed in the commit message. Read: I wanted to make\nthis patch series easier to review. And as I already split out all the\nt/ patches, it felt silly to *not* split out the t0060 patch.\n\n\nJohannes Schindelin (11):\n  git-parse-remote: fix highly misleading man page\n  Documentation: really deprecate .git/remotes/ and .git/branches/\n  remote: warn loud and clear when .git/branches/ is *still* used\n  remote: warn loud and clear when .git/remotes/ is *still* used\n  Revert \"Revert \"Don't create the $GIT_DIR/branches directory on init\"\"\n  PREVIEW: t5510: convert .git/remotes/ test to use a regular remote\n  PREVIEW: t5516: stop testing .git/branches/ functionality\n  PREVIEW: remote: remove support for migrating ancient remotes\n  PREVIEW: t5515: remove .git/remotes/ and .git/branches/ tests\n  PREVIEW: t0060: stop testing support for .git/remotes/ and\n    .git/branches/\n  PREVIEW: remove support for .git/remotes/ and .git/branches/\n\n Documentation/git-parse-remote.txt                 |  7 +-\n Documentation/git-remote.txt                       |  4 -\n Documentation/gitrepository-layout.txt             | 19 +++--\n Documentation/urls-remotes.txt                     | 65 +---------------\n builtin/remote.c                                   | 27 -------\n path.c                                             |  2 -\n remote.c                                           | 89 ----------------------\n remote.h                                           |  4 +-\n t/t0060-path-utils.sh                              |  2 -\n t/t5505-remote.sh                                  | 55 -------------\n t/t5510-fetch.sh                                   | 10 +--\n t/t5515-fetch-merge-logic.sh                       | 23 ------\n t/t5515/fetch.br-branches-default                  |  8 --\n t/t5515/fetch.br-branches-default-merge            |  9 ---\n ...etch.br-branches-default-merge_branches-default |  9 ---\n t/t5515/fetch.br-branches-default-octopus          | 10 ---\n ...ch.br-branches-default-octopus_branches-default | 10 ---\n t/t5515/fetch.br-branches-default_branches-default |  8 --\n t/t5515/fetch.br-branches-one                      |  8 --\n t/t5515/fetch.br-branches-one-merge                |  9 ---\n t/t5515/fetch.br-branches-one-merge_branches-one   |  9 ---\n t/t5515/fetch.br-branches-one-octopus              |  9 ---\n t/t5515/fetch.br-branches-one-octopus_branches-one |  9 ---\n t/t5515/fetch.br-branches-one_branches-one         |  8 --\n t/t5515/fetch.br-remote-explicit                   | 11 ---\n t/t5515/fetch.br-remote-explicit-merge             | 11 ---\n .../fetch.br-remote-explicit-merge_remote-explicit | 11 ---\n t/t5515/fetch.br-remote-explicit-octopus           | 11 ---\n ...etch.br-remote-explicit-octopus_remote-explicit | 11 ---\n t/t5515/fetch.br-remote-explicit_remote-explicit   | 11 ---\n t/t5515/fetch.br-remote-glob                       | 11 ---\n t/t5515/fetch.br-remote-glob-merge                 | 11 ---\n t/t5515/fetch.br-remote-glob-merge_remote-glob     | 11 ---\n t/t5515/fetch.br-remote-glob-octopus               | 11 ---\n t/t5515/fetch.br-remote-glob-octopus_remote-glob   | 11 ---\n t/t5515/fetch.br-remote-glob_remote-glob           | 11 ---\n t/t5515/fetch.br-unconfig_branches-default         |  8 --\n t/t5515/fetch.br-unconfig_branches-one             |  8 --\n t/t5515/fetch.br-unconfig_remote-explicit          | 11 ---\n t/t5515/fetch.br-unconfig_remote-glob              | 11 ---\n t/t5515/fetch.master_branches-default              |  8 --\n t/t5515/fetch.master_branches-one                  |  8 --\n t/t5515/fetch.master_remote-explicit               | 11 ---\n t/t5515/fetch.master_remote-glob                   | 11 ---\n t/t5515/refs.br-branches-default                   | 12 ---\n t/t5515/refs.br-branches-default-merge             | 12 ---\n ...refs.br-branches-default-merge_branches-default | 12 ---\n t/t5515/refs.br-branches-default-octopus           | 12 ---\n ...fs.br-branches-default-octopus_branches-default | 12 ---\n t/t5515/refs.br-branches-default_branches-default  | 12 ---\n t/t5515/refs.br-branches-one                       | 12 ---\n t/t5515/refs.br-branches-one-merge                 | 12 ---\n t/t5515/refs.br-branches-one-merge_branches-one    | 12 ---\n t/t5515/refs.br-branches-one-octopus               | 12 ---\n t/t5515/refs.br-branches-one-octopus_branches-one  | 12 ---\n t/t5515/refs.br-branches-one_branches-one          | 12 ---\n t/t5515/refs.br-remote-explicit                    | 15 ----\n t/t5515/refs.br-remote-explicit-merge              | 15 ----\n .../refs.br-remote-explicit-merge_remote-explicit  | 15 ----\n t/t5515/refs.br-remote-explicit-octopus            | 15 ----\n ...refs.br-remote-explicit-octopus_remote-explicit | 15 ----\n t/t5515/refs.br-remote-explicit_remote-explicit    | 15 ----\n t/t5515/refs.br-remote-glob                        | 15 ----\n t/t5515/refs.br-remote-glob-merge                  | 15 ----\n t/t5515/refs.br-remote-glob-merge_remote-glob      | 15 ----\n t/t5515/refs.br-remote-glob-octopus                | 15 ----\n t/t5515/refs.br-remote-glob-octopus_remote-glob    | 15 ----\n t/t5515/refs.br-remote-glob_remote-glob            | 15 ----\n t/t5515/refs.br-unconfig_branches-default          | 12 ---\n t/t5515/refs.br-unconfig_branches-one              | 12 ---\n t/t5515/refs.br-unconfig_remote-explicit           | 15 ----\n t/t5515/refs.br-unconfig_remote-glob               | 15 ----\n t/t5515/refs.master_branches-default               | 12 ---\n t/t5515/refs.master_branches-one                   | 12 ---\n t/t5515/refs.master_remote-explicit                | 15 ----\n t/t5515/refs.master_remote-glob                    | 15 ----\n t/t5516-fetch-push.sh                              | 55 +------------\n templates/branches--                               |  1 -\n 78 files changed, 20 insertions(+), 1089 deletions(-)\n delete mode 100644 t/t5515/fetch.br-branches-default\n delete mode 100644 t/t5515/fetch.br-branches-default-merge\n delete mode 100644 t/t5515/fetch.br-branches-default-merge_branches-default\n delete mode 100644 t/t5515/fetch.br-branches-default-octopus\n delete mode 100644 t/t5515/fetch.br-branches-default-octopus_branches-default\n delete mode 100644 t/t5515/fetch.br-branches-default_branches-default\n delete mode 100644 t/t5515/fetch.br-branches-one\n delete mode 100644 t/t5515/fetch.br-branches-one-merge\n delete mode 100644 t/t5515/fetch.br-branches-one-merge_branches-one\n delete mode 100644 t/t5515/fetch.br-branches-one-octopus\n delete mode 100644 t/t5515/fetch.br-branches-one-octopus_branches-one\n delete mode 100644 t/t5515/fetch.br-branches-one_branches-one\n delete mode 100644 t/t5515/fetch.br-remote-explicit\n delete mode 100644 t/t5515/fetch.br-remote-explicit-merge\n delete mode 100644 t/t5515/fetch.br-remote-explicit-merge_remote-explicit\n delete mode 100644 t/t5515/fetch.br-remote-explicit-octopus\n delete mode 100644 t/t5515/fetch.br-remote-explicit-octopus_remote-explicit\n delete mode 100644 t/t5515/fetch.br-remote-explicit_remote-explicit\n delete mode 100644 t/t5515/fetch.br-remote-glob\n delete mode 100644 t/t5515/fetch.br-remote-glob-merge\n delete mode 100644 t/t5515/fetch.br-remote-glob-merge_remote-glob\n delete mode 100644 t/t5515/fetch.br-remote-glob-octopus\n delete mode 100644 t/t5515/fetch.br-remote-glob-octopus_remote-glob\n delete mode 100644 t/t5515/fetch.br-remote-glob_remote-glob\n delete mode 100644 t/t5515/fetch.br-unconfig_branches-default\n delete mode 100644 t/t5515/fetch.br-unconfig_branches-one\n delete mode 100644 t/t5515/fetch.br-unconfig_remote-explicit\n delete mode 100644 t/t5515/fetch.br-unconfig_remote-glob\n delete mode 100644 t/t5515/fetch.master_branches-default\n delete mode 100644 t/t5515/fetch.master_branches-one\n delete mode 100644 t/t5515/fetch.master_remote-explicit\n delete mode 100644 t/t5515/fetch.master_remote-glob\n delete mode 100644 t/t5515/refs.br-branches-default\n delete mode 100644 t/t5515/refs.br-branches-default-merge\n delete mode 100644 t/t5515/refs.br-branches-default-merge_branches-default\n delete mode 100644 t/t5515/refs.br-branches-default-octopus\n delete mode 100644 t/t5515/refs.br-branches-default-octopus_branches-default\n delete mode 100644 t/t5515/refs.br-branches-default_branches-default\n delete mode 100644 t/t5515/refs.br-branches-one\n delete mode 100644 t/t5515/refs.br-branches-one-merge\n delete mode 100644 t/t5515/refs.br-branches-one-merge_branches-one\n delete mode 100644 t/t5515/refs.br-branches-one-octopus\n delete mode 100644 t/t5515/refs.br-branches-one-octopus_branches-one\n delete mode 100644 t/t5515/refs.br-branches-one_branches-one\n delete mode 100644 t/t5515/refs.br-remote-explicit\n delete mode 100644 t/t5515/refs.br-remote-explicit-merge\n delete mode 100644 t/t5515/refs.br-remote-explicit-merge_remote-explicit\n delete mode 100644 t/t5515/refs.br-remote-explicit-octopus\n delete mode 100644 t/t5515/refs.br-remote-explicit-octopus_remote-explicit\n delete mode 100644 t/t5515/refs.br-remote-explicit_remote-explicit\n delete mode 100644 t/t5515/refs.br-remote-glob\n delete mode 100644 t/t5515/refs.br-remote-glob-merge\n delete mode 100644 t/t5515/refs.br-remote-glob-merge_remote-glob\n delete mode 100644 t/t5515/refs.br-remote-glob-octopus\n delete mode 100644 t/t5515/refs.br-remote-glob-octopus_remote-glob\n delete mode 100644 t/t5515/refs.br-remote-glob_remote-glob\n delete mode 100644 t/t5515/refs.br-unconfig_branches-default\n delete mode 100644 t/t5515/refs.br-unconfig_branches-one\n delete mode 100644 t/t5515/refs.br-unconfig_remote-explicit\n delete mode 100644 t/t5515/refs.br-unconfig_remote-glob\n delete mode 100644 t/t5515/refs.master_branches-default\n delete mode 100644 t/t5515/refs.master_branches-one\n delete mode 100644 t/t5515/refs.master_remote-explicit\n delete mode 100644 t/t5515/refs.master_remote-glob\n delete mode 100644 templates/branches--\n\n\nbase-commit: b06d3643105c8758ed019125a4399cb7efdcce2c\nPublished-As: https://github.com/dscho/git/releases/tag/retire-cogito-branches-v1\nFetch-It-Via: git fetch https://github.com/dscho/git retire-cogito-branches-v1\n\n-- \n2.12.2.windows.2.800.gede8f145e06\n\n"},{"id":"319397","messageId":"b26882e61ef466c787b575d3fd60bfeec8a9281a.1494509599.git.johannes.schindelin@gmx.de","threadId":"45931","inReplyTo":"cover.1494509599.git.johannes.schindelin@gmx.de","subject":"[PATCH 01/11] git-parse-remote: fix highly misleading man page","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2017-05-11T13:47:37Z","receivedAt":"2017-05-11T13:48:28Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"The man page still talked about the .git/remotes/ directory (which is no\nlonger in use, as of 75c384efb52 (Do not create $GIT_DIR/remotes/\ndirectory anymore., 2006-12-19)).\n\nLet's just revamp it almost completely to reflect the *purpose* of that\nscriptlet, as opposed to its implementation details.\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n---\n Documentation/git-parse-remote.txt | 7 +++----\n 1 file changed, 3 insertions(+), 4 deletions(-)\n\ndiff --git a/Documentation/git-parse-remote.txt b/Documentation/git-parse-remote.txt\nindex a45ea1ece81..7f865f33898 100644\n--- a/Documentation/git-parse-remote.txt\n+++ b/Documentation/git-parse-remote.txt\n@@ -3,7 +3,7 @@ git-parse-remote(1)\n \n NAME\n ----\n-git-parse-remote - Routines to help parsing remote repository access parameters\n+git-parse-remote - Routines to help parsing remote repository information\n \n \n SYNOPSIS\n@@ -14,9 +14,8 @@ SYNOPSIS\n DESCRIPTION\n -----------\n This script is included in various scripts to supply\n-routines to parse files under $GIT_DIR/remotes/ and\n-$GIT_DIR/branches/ and configuration variables that are related\n-to fetching, pulling and pushing.\n+routines to query the remote repository and its branch\n+associated with the current branch.\n \n GIT\n ---\n-- \n2.12.2.windows.2.800.gede8f145e06\n\n\n"},{"id":"319398","messageId":"5da6c76ca5f6805ad868b361b27ae61d8427819a.1494509599.git.johannes.schindelin@gmx.de","threadId":"45931","inReplyTo":"cover.1494509599.git.johannes.schindelin@gmx.de","subject":"[PATCH 03/11] remote: warn loud and clear when .git/branches/ is *still* used","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2017-05-11T13:47:43Z","receivedAt":"2017-05-11T13:48:30Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Since at least 5751f49010e (Move remote parsing into a library file out\nof builtin-push., 2007-05-12), we strongly prefer remotes and upstream\nbranches to be specified in the config rather than .git/remotes/ and\n.git/branches/.\n\nFor some time, we still retained compatibility with Cogito (which was an\nexcellent project demonstrating many useful features that eventually\nwere integrated into Git proper) by creating the branches/ subdirectory\nupon git-init.\n\nIn preparation for removing support for this ancient compatibility that\nshould no longer be necessary, let's warn everybody who is still using\nthat feature (if there is anybody left, that is).\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n---\n remote.c | 3 +++\n 1 file changed, 3 insertions(+)\n\ndiff --git a/remote.c b/remote.c\nindex 801137c72eb..04ab2230337 100644\n--- a/remote.c\n+++ b/remote.c\n@@ -290,6 +290,9 @@ static void read_branches_file(struct remote *remote)\n \t\treturn;\n \t}\n \n+\twarning(_(\"the branch '%s' uses the long-deprecated '%s' file\"),\n+\t\tremote->name, git_path(\"branches/%s\", remote->name));\n+\n \tremote->configured_in_repo = 1;\n \tremote->origin = REMOTE_BRANCHES;\n \n-- \n2.12.2.windows.2.800.gede8f145e06\n\n\n"},{"id":"319399","messageId":"b9fcc61b2e01a7b97057f5aa5b307bdf5dae8587.1494509599.git.johannes.schindelin@gmx.de","threadId":"45931","inReplyTo":"cover.1494509599.git.johannes.schindelin@gmx.de","subject":"[PATCH 09/11] PREVIEW: t5515: remove .git/remotes/ and .git/branches/ tests","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2017-05-11T13:48:01Z","receivedAt":"2017-05-11T13:48:33Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"We are about to remove support for the long-obsolete .git/remotes/ and\n.git/branches/ directories. Let's stop testing them, in preparation for\nthat move.\n\nThe bulk of this patch simply removes support files that are no longer\nneeded.\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n---\n t/t5515-fetch-merge-logic.sh                       | 23 ----------------------\n t/t5515/fetch.br-branches-default                  |  8 --------\n t/t5515/fetch.br-branches-default-merge            |  9 ---------\n ...etch.br-branches-default-merge_branches-default |  9 ---------\n t/t5515/fetch.br-branches-default-octopus          | 10 ----------\n ...ch.br-branches-default-octopus_branches-default | 10 ----------\n t/t5515/fetch.br-branches-default_branches-default |  8 --------\n t/t5515/fetch.br-branches-one                      |  8 --------\n t/t5515/fetch.br-branches-one-merge                |  9 ---------\n t/t5515/fetch.br-branches-one-merge_branches-one   |  9 ---------\n t/t5515/fetch.br-branches-one-octopus              |  9 ---------\n t/t5515/fetch.br-branches-one-octopus_branches-one |  9 ---------\n t/t5515/fetch.br-branches-one_branches-one         |  8 --------\n t/t5515/fetch.br-remote-explicit                   | 11 -----------\n t/t5515/fetch.br-remote-explicit-merge             | 11 -----------\n .../fetch.br-remote-explicit-merge_remote-explicit | 11 -----------\n t/t5515/fetch.br-remote-explicit-octopus           | 11 -----------\n ...etch.br-remote-explicit-octopus_remote-explicit | 11 -----------\n t/t5515/fetch.br-remote-explicit_remote-explicit   | 11 -----------\n t/t5515/fetch.br-remote-glob                       | 11 -----------\n t/t5515/fetch.br-remote-glob-merge                 | 11 -----------\n t/t5515/fetch.br-remote-glob-merge_remote-glob     | 11 -----------\n t/t5515/fetch.br-remote-glob-octopus               | 11 -----------\n t/t5515/fetch.br-remote-glob-octopus_remote-glob   | 11 -----------\n t/t5515/fetch.br-remote-glob_remote-glob           | 11 -----------\n t/t5515/fetch.br-unconfig_branches-default         |  8 --------\n t/t5515/fetch.br-unconfig_branches-one             |  8 --------\n t/t5515/fetch.br-unconfig_remote-explicit          | 11 -----------\n t/t5515/fetch.br-unconfig_remote-glob              | 11 -----------\n t/t5515/fetch.master_branches-default              |  8 --------\n t/t5515/fetch.master_branches-one                  |  8 --------\n t/t5515/fetch.master_remote-explicit               | 11 -----------\n t/t5515/fetch.master_remote-glob                   | 11 -----------\n t/t5515/refs.br-branches-default                   | 12 -----------\n t/t5515/refs.br-branches-default-merge             | 12 -----------\n ...refs.br-branches-default-merge_branches-default | 12 -----------\n t/t5515/refs.br-branches-default-octopus           | 12 -----------\n ...fs.br-branches-default-octopus_branches-default | 12 -----------\n t/t5515/refs.br-branches-default_branches-default  | 12 -----------\n t/t5515/refs.br-branches-one                       | 12 -----------\n t/t5515/refs.br-branches-one-merge                 | 12 -----------\n t/t5515/refs.br-branches-one-merge_branches-one    | 12 -----------\n t/t5515/refs.br-branches-one-octopus               | 12 -----------\n t/t5515/refs.br-branches-one-octopus_branches-one  | 12 -----------\n t/t5515/refs.br-branches-one_branches-one          | 12 -----------\n t/t5515/refs.br-remote-explicit                    | 15 --------------\n t/t5515/refs.br-remote-explicit-merge              | 15 --------------\n .../refs.br-remote-explicit-merge_remote-explicit  | 15 --------------\n t/t5515/refs.br-remote-explicit-octopus            | 15 --------------\n ...refs.br-remote-explicit-octopus_remote-explicit | 15 --------------\n t/t5515/refs.br-remote-explicit_remote-explicit    | 15 --------------\n t/t5515/refs.br-remote-glob                        | 15 --------------\n t/t5515/refs.br-remote-glob-merge                  | 15 --------------\n t/t5515/refs.br-remote-glob-merge_remote-glob      | 15 --------------\n t/t5515/refs.br-remote-glob-octopus                | 15 --------------\n t/t5515/refs.br-remote-glob-octopus_remote-glob    | 15 --------------\n t/t5515/refs.br-remote-glob_remote-glob            | 15 --------------\n t/t5515/refs.br-unconfig_branches-default          | 12 -----------\n t/t5515/refs.br-unconfig_branches-one              | 12 -----------\n t/t5515/refs.br-unconfig_remote-explicit           | 15 --------------\n t/t5515/refs.br-unconfig_remote-glob               | 15 --------------\n t/t5515/refs.master_branches-default               | 12 -----------\n t/t5515/refs.master_branches-one                   | 12 -----------\n t/t5515/refs.master_remote-explicit                | 15 --------------\n t/t5515/refs.master_remote-glob                    | 15 --------------\n 65 files changed, 769 deletions(-)\n delete mode 100644 t/t5515/fetch.br-branches-default\n delete mode 100644 t/t5515/fetch.br-branches-default-merge\n delete mode 100644 t/t5515/fetch.br-branches-default-merge_branches-default\n delete mode 100644 t/t5515/fetch.br-branches-default-octopus\n delete mode 100644 t/t5515/fetch.br-branches-default-octopus_branches-default\n delete mode 100644 t/t5515/fetch.br-branches-default_branches-default\n delete mode 100644 t/t5515/fetch.br-branches-one\n delete mode 100644 t/t5515/fetch.br-branches-one-merge\n delete mode 100644 t/t5515/fetch.br-branches-one-merge_branches-one\n delete mode 100644 t/t5515/fetch.br-branches-one-octopus\n delete mode 100644 t/t5515/fetch.br-branches-one-octopus_branches-one\n delete mode 100644 t/t5515/fetch.br-branches-one_branches-one\n delete mode 100644 t/t5515/fetch.br-remote-explicit\n delete mode 100644 t/t5515/fetch.br-remote-explicit-merge\n delete mode 100644 t/t5515/fetch.br-remote-explicit-merge_remote-explicit\n delete mode 100644 t/t5515/fetch.br-remote-explicit-octopus\n delete mode 100644 t/t5515/fetch.br-remote-explicit-octopus_remote-explicit\n delete mode 100644 t/t5515/fetch.br-remote-explicit_remote-explicit\n delete mode 100644 t/t5515/fetch.br-remote-glob\n delete mode 100644 t/t5515/fetch.br-remote-glob-merge\n delete mode 100644 t/t5515/fetch.br-remote-glob-merge_remote-glob\n delete mode 100644 t/t5515/fetch.br-remote-glob-octopus\n delete mode 100644 t/t5515/fetch.br-remote-glob-octopus_remote-glob\n delete mode 100644 t/t5515/fetch.br-remote-glob_remote-glob\n delete mode 100644 t/t5515/fetch.br-unconfig_branches-default\n delete mode 100644 t/t5515/fetch.br-unconfig_branches-one\n delete mode 100644 t/t5515/fetch.br-unconfig_remote-explicit\n delete mode 100644 t/t5515/fetch.br-unconfig_remote-glob\n delete mode 100644 t/t5515/fetch.master_branches-default\n delete mode 100644 t/t5515/fetch.master_branches-one\n delete mode 100644 t/t5515/fetch.master_remote-explicit\n delete mode 100644 t/t5515/fetch.master_remote-glob\n delete mode 100644 t/t5515/refs.br-branches-default\n delete mode 100644 t/t5515/refs.br-branches-default-merge\n delete mode 100644 t/t5515/refs.br-branches-default-merge_branches-default\n delete mode 100644 t/t5515/refs.br-branches-default-octopus\n delete mode 100644 t/t5515/refs.br-branches-default-octopus_branches-default\n delete mode 100644 t/t5515/refs.br-branches-default_branches-default\n delete mode 100644 t/t5515/refs.br-branches-one\n delete mode 100644 t/t5515/refs.br-branches-one-merge\n delete mode 100644 t/t5515/refs.br-branches-one-merge_branches-one\n delete mode 100644 t/t5515/refs.br-branches-one-octopus\n delete mode 100644 t/t5515/refs.br-branches-one-octopus_branches-one\n delete mode 100644 t/t5515/refs.br-branches-one_branches-one\n delete mode 100644 t/t5515/refs.br-remote-explicit\n delete mode 100644 t/t5515/refs.br-remote-explicit-merge\n delete mode 100644 t/t5515/refs.br-remote-explicit-merge_remote-explicit\n delete mode 100644 t/t5515/refs.br-remote-explicit-octopus\n delete mode 100644 t/t5515/refs.br-remote-explicit-octopus_remote-explicit\n delete mode 100644 t/t5515/refs.br-remote-explicit_remote-explicit\n delete mode 100644 t/t5515/refs.br-remote-glob\n delete mode 100644 t/t5515/refs.br-remote-glob-merge\n delete mode 100644 t/t5515/refs.br-remote-glob-merge_remote-glob\n delete mode 100644 t/t5515/refs.br-remote-glob-octopus\n delete mode 100644 t/t5515/refs.br-remote-glob-octopus_remote-glob\n delete mode 100644 t/t5515/refs.br-remote-glob_remote-glob\n delete mode 100644 t/t5515/refs.br-unconfig_branches-default\n delete mode 100644 t/t5515/refs.br-unconfig_branches-one\n delete mode 100644 t/t5515/refs.br-unconfig_remote-explicit\n delete mode 100644 t/t5515/refs.br-unconfig_remote-glob\n delete mode 100644 t/t5515/refs.master_branches-default\n delete mode 100644 t/t5515/refs.master_branches-one\n delete mode 100644 t/t5515/refs.master_remote-explicit\n delete mode 100644 t/t5515/refs.master_remote-glob\n\ndiff --git a/t/t5515-fetch-merge-logic.sh b/t/t5515-fetch-merge-logic.sh\nindex 36b0dbc01cf..19639ffe598 100755\n--- a/t/t5515-fetch-merge-logic.sh\n+++ b/t/t5515-fetch-merge-logic.sh\n@@ -55,29 +55,6 @@ test_expect_success setup '\n \tgit config remote.config-glob.fetch refs/heads/*:refs/remotes/rem/* &&\n \tremotes=\"$remotes config-glob\" &&\n \n-\tmkdir -p .git/remotes &&\n-\t{\n-\t\techo \"URL: ../.git/\"\n-\t\techo \"Pull: refs/heads/master:remotes/rem/master\"\n-\t\techo \"Pull: refs/heads/one:remotes/rem/one\"\n-\t\techo \"Pull: two:remotes/rem/two\"\n-\t\techo \"Pull: refs/heads/three:remotes/rem/three\"\n-\t} >.git/remotes/remote-explicit &&\n-\tremotes=\"$remotes remote-explicit\" &&\n-\n-\t{\n-\t\techo \"URL: ../.git/\"\n-\t\techo \"Pull: refs/heads/*:refs/remotes/rem/*\"\n-\t} >.git/remotes/remote-glob &&\n-\tremotes=\"$remotes remote-glob\" &&\n-\n-\tmkdir -p .git/branches &&\n-\techo \"../.git\" > .git/branches/branches-default &&\n-\tremotes=\"$remotes branches-default\" &&\n-\n-\techo \"../.git#one\" > .git/branches/branches-one &&\n-\tremotes=\"$remotes branches-one\" &&\n-\n \tfor remote in $remotes ; do\n \t\tgit config branch.br-$remote.remote $remote &&\n \t\tgit config branch.br-$remote-merge.remote $remote &&\ndiff --git a/t/t5515/fetch.br-branches-default b/t/t5515/fetch.br-branches-default\ndeleted file mode 100644\nindex a1bc3d53a60..00000000000\n--- a/t/t5515/fetch.br-branches-default\n+++ /dev/null\n@@ -1,8 +0,0 @@\n-# br-branches-default\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f\t\tbranch 'master' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-branches-default-merge b/t/t5515/fetch.br-branches-default-merge\ndeleted file mode 100644\nindex 12ab08e8acb..00000000000\n--- a/t/t5515/fetch.br-branches-default-merge\n+++ /dev/null\n@@ -1,9 +0,0 @@\n-# br-branches-default-merge\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b\t\tbranch 'three' of ../\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f\tnot-for-merge\tbranch 'master' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-branches-default-merge_branches-default b/t/t5515/fetch.br-branches-default-merge_branches-default\ndeleted file mode 100644\nindex 54427522dd5..00000000000\n--- a/t/t5515/fetch.br-branches-default-merge_branches-default\n+++ /dev/null\n@@ -1,9 +0,0 @@\n-# br-branches-default-merge branches-default\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b\t\tbranch 'three' of ../\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f\tnot-for-merge\tbranch 'master' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-branches-default-octopus b/t/t5515/fetch.br-branches-default-octopus\ndeleted file mode 100644\nindex 498a761aae8..00000000000\n--- a/t/t5515/fetch.br-branches-default-octopus\n+++ /dev/null\n@@ -1,10 +0,0 @@\n-# br-branches-default-octopus\n-8e32a6d901327a23ef831511badce7bf3bf46689\t\tbranch 'one' of ../\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8\t\tbranch 'two' of ../\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f\tnot-for-merge\tbranch 'master' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-branches-default-octopus_branches-default b/t/t5515/fetch.br-branches-default-octopus_branches-default\ndeleted file mode 100644\nindex 0857f134e10..00000000000\n--- a/t/t5515/fetch.br-branches-default-octopus_branches-default\n+++ /dev/null\n@@ -1,10 +0,0 @@\n-# br-branches-default-octopus branches-default\n-8e32a6d901327a23ef831511badce7bf3bf46689\t\tbranch 'one' of ../\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8\t\tbranch 'two' of ../\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f\tnot-for-merge\tbranch 'master' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-branches-default_branches-default b/t/t5515/fetch.br-branches-default_branches-default\ndeleted file mode 100644\nindex 8cbd7189362..00000000000\n--- a/t/t5515/fetch.br-branches-default_branches-default\n+++ /dev/null\n@@ -1,8 +0,0 @@\n-# br-branches-default branches-default\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f\t\tbranch 'master' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-branches-one b/t/t5515/fetch.br-branches-one\ndeleted file mode 100644\nindex c98f6705263..00000000000\n--- a/t/t5515/fetch.br-branches-one\n+++ /dev/null\n@@ -1,8 +0,0 @@\n-# br-branches-one\n-8e32a6d901327a23ef831511badce7bf3bf46689\t\tbranch 'one' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-branches-one-merge b/t/t5515/fetch.br-branches-one-merge\ndeleted file mode 100644\nindex 54a77420d5d..00000000000\n--- a/t/t5515/fetch.br-branches-one-merge\n+++ /dev/null\n@@ -1,9 +0,0 @@\n-# br-branches-one-merge\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b\t\tbranch 'three' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\tbranch 'one' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-branches-one-merge_branches-one b/t/t5515/fetch.br-branches-one-merge_branches-one\ndeleted file mode 100644\nindex b4d1bb0b0ba..00000000000\n--- a/t/t5515/fetch.br-branches-one-merge_branches-one\n+++ /dev/null\n@@ -1,9 +0,0 @@\n-# br-branches-one-merge branches-one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b\t\tbranch 'three' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\tbranch 'one' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-branches-one-octopus b/t/t5515/fetch.br-branches-one-octopus\ndeleted file mode 100644\nindex 97c4b544b8c..00000000000\n--- a/t/t5515/fetch.br-branches-one-octopus\n+++ /dev/null\n@@ -1,9 +0,0 @@\n-# br-branches-one-octopus\n-8e32a6d901327a23ef831511badce7bf3bf46689\t\tbranch 'one' of ../\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8\t\tbranch 'two' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-branches-one-octopus_branches-one b/t/t5515/fetch.br-branches-one-octopus_branches-one\ndeleted file mode 100644\nindex df705f74c7d..00000000000\n--- a/t/t5515/fetch.br-branches-one-octopus_branches-one\n+++ /dev/null\n@@ -1,9 +0,0 @@\n-# br-branches-one-octopus branches-one\n-8e32a6d901327a23ef831511badce7bf3bf46689\t\tbranch 'one' of ../\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8\t\tbranch 'two' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-branches-one_branches-one b/t/t5515/fetch.br-branches-one_branches-one\ndeleted file mode 100644\nindex 96890e5bd99..00000000000\n--- a/t/t5515/fetch.br-branches-one_branches-one\n+++ /dev/null\n@@ -1,8 +0,0 @@\n-# br-branches-one branches-one\n-8e32a6d901327a23ef831511badce7bf3bf46689\t\tbranch 'one' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-remote-explicit b/t/t5515/fetch.br-remote-explicit\ndeleted file mode 100644\nindex ab44bc55196..00000000000\n--- a/t/t5515/fetch.br-remote-explicit\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-# br-remote-explicit\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f\t\tbranch 'master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\tbranch 'one' of ../\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8\tnot-for-merge\tbranch 'two' of ../\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b\tnot-for-merge\tbranch 'three' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-remote-explicit-merge b/t/t5515/fetch.br-remote-explicit-merge\ndeleted file mode 100644\nindex d018b3515f7..00000000000\n--- a/t/t5515/fetch.br-remote-explicit-merge\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-# br-remote-explicit-merge\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b\t\tbranch 'three' of ../\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f\tnot-for-merge\tbranch 'master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\tbranch 'one' of ../\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8\tnot-for-merge\tbranch 'two' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-remote-explicit-merge_remote-explicit b/t/t5515/fetch.br-remote-explicit-merge_remote-explicit\ndeleted file mode 100644\nindex 0d3d780dd0c..00000000000\n--- a/t/t5515/fetch.br-remote-explicit-merge_remote-explicit\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-# br-remote-explicit-merge remote-explicit\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b\t\tbranch 'three' of ../\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f\tnot-for-merge\tbranch 'master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\tbranch 'one' of ../\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8\tnot-for-merge\tbranch 'two' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-remote-explicit-octopus b/t/t5515/fetch.br-remote-explicit-octopus\ndeleted file mode 100644\nindex 6f843044ede..00000000000\n--- a/t/t5515/fetch.br-remote-explicit-octopus\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-# br-remote-explicit-octopus\n-8e32a6d901327a23ef831511badce7bf3bf46689\t\tbranch 'one' of ../\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8\t\tbranch 'two' of ../\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f\tnot-for-merge\tbranch 'master' of ../\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b\tnot-for-merge\tbranch 'three' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-remote-explicit-octopus_remote-explicit b/t/t5515/fetch.br-remote-explicit-octopus_remote-explicit\ndeleted file mode 100644\nindex 3546a837136..00000000000\n--- a/t/t5515/fetch.br-remote-explicit-octopus_remote-explicit\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-# br-remote-explicit-octopus remote-explicit\n-8e32a6d901327a23ef831511badce7bf3bf46689\t\tbranch 'one' of ../\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8\t\tbranch 'two' of ../\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f\tnot-for-merge\tbranch 'master' of ../\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b\tnot-for-merge\tbranch 'three' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-remote-explicit_remote-explicit b/t/t5515/fetch.br-remote-explicit_remote-explicit\ndeleted file mode 100644\nindex 01e014e6a02..00000000000\n--- a/t/t5515/fetch.br-remote-explicit_remote-explicit\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-# br-remote-explicit remote-explicit\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f\t\tbranch 'master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\tbranch 'one' of ../\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8\tnot-for-merge\tbranch 'two' of ../\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b\tnot-for-merge\tbranch 'three' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-remote-glob b/t/t5515/fetch.br-remote-glob\ndeleted file mode 100644\nindex 09bfcee00f9..00000000000\n--- a/t/t5515/fetch.br-remote-glob\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-# br-remote-glob\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f\tnot-for-merge\tbranch 'master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\tbranch 'one' of ../\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b\tnot-for-merge\tbranch 'three' of ../\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8\tnot-for-merge\tbranch 'two' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-remote-glob-merge b/t/t5515/fetch.br-remote-glob-merge\ndeleted file mode 100644\nindex 7e1a433a64f..00000000000\n--- a/t/t5515/fetch.br-remote-glob-merge\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-# br-remote-glob-merge\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b\t\tbranch 'three' of ../\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f\tnot-for-merge\tbranch 'master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\tbranch 'one' of ../\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8\tnot-for-merge\tbranch 'two' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-remote-glob-merge_remote-glob b/t/t5515/fetch.br-remote-glob-merge_remote-glob\ndeleted file mode 100644\nindex 53571bb4ec6..00000000000\n--- a/t/t5515/fetch.br-remote-glob-merge_remote-glob\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-# br-remote-glob-merge remote-glob\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b\t\tbranch 'three' of ../\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f\tnot-for-merge\tbranch 'master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\tbranch 'one' of ../\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8\tnot-for-merge\tbranch 'two' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-remote-glob-octopus b/t/t5515/fetch.br-remote-glob-octopus\ndeleted file mode 100644\nindex c7c8b6d7f47..00000000000\n--- a/t/t5515/fetch.br-remote-glob-octopus\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-# br-remote-glob-octopus\n-8e32a6d901327a23ef831511badce7bf3bf46689\t\tbranch 'one' of ../\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8\t\tbranch 'two' of ../\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f\tnot-for-merge\tbranch 'master' of ../\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b\tnot-for-merge\tbranch 'three' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-remote-glob-octopus_remote-glob b/t/t5515/fetch.br-remote-glob-octopus_remote-glob\ndeleted file mode 100644\nindex 36076fba0cc..00000000000\n--- a/t/t5515/fetch.br-remote-glob-octopus_remote-glob\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-# br-remote-glob-octopus remote-glob\n-8e32a6d901327a23ef831511badce7bf3bf46689\t\tbranch 'one' of ../\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8\t\tbranch 'two' of ../\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f\tnot-for-merge\tbranch 'master' of ../\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b\tnot-for-merge\tbranch 'three' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-remote-glob_remote-glob b/t/t5515/fetch.br-remote-glob_remote-glob\ndeleted file mode 100644\nindex 20ba5cb1725..00000000000\n--- a/t/t5515/fetch.br-remote-glob_remote-glob\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-# br-remote-glob remote-glob\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f\tnot-for-merge\tbranch 'master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\tbranch 'one' of ../\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b\tnot-for-merge\tbranch 'three' of ../\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8\tnot-for-merge\tbranch 'two' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-unconfig_branches-default b/t/t5515/fetch.br-unconfig_branches-default\ndeleted file mode 100644\nindex da30e3c62c2..00000000000\n--- a/t/t5515/fetch.br-unconfig_branches-default\n+++ /dev/null\n@@ -1,8 +0,0 @@\n-# br-unconfig branches-default\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f\t\tbranch 'master' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-unconfig_branches-one b/t/t5515/fetch.br-unconfig_branches-one\ndeleted file mode 100644\nindex e4614314c54..00000000000\n--- a/t/t5515/fetch.br-unconfig_branches-one\n+++ /dev/null\n@@ -1,8 +0,0 @@\n-# br-unconfig branches-one\n-8e32a6d901327a23ef831511badce7bf3bf46689\t\tbranch 'one' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-unconfig_remote-explicit b/t/t5515/fetch.br-unconfig_remote-explicit\ndeleted file mode 100644\nindex 6318dd11b4c..00000000000\n--- a/t/t5515/fetch.br-unconfig_remote-explicit\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-# br-unconfig remote-explicit\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f\t\tbranch 'master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\tbranch 'one' of ../\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8\tnot-for-merge\tbranch 'two' of ../\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b\tnot-for-merge\tbranch 'three' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.br-unconfig_remote-glob b/t/t5515/fetch.br-unconfig_remote-glob\ndeleted file mode 100644\nindex 1d9afad7d84..00000000000\n--- a/t/t5515/fetch.br-unconfig_remote-glob\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-# br-unconfig remote-glob\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f\tnot-for-merge\tbranch 'master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\tbranch 'one' of ../\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b\tnot-for-merge\tbranch 'three' of ../\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8\tnot-for-merge\tbranch 'two' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.master_branches-default b/t/t5515/fetch.master_branches-default\ndeleted file mode 100644\nindex 2eedd3bfa4a..00000000000\n--- a/t/t5515/fetch.master_branches-default\n+++ /dev/null\n@@ -1,8 +0,0 @@\n-# master branches-default\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f\t\tbranch 'master' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.master_branches-one b/t/t5515/fetch.master_branches-one\ndeleted file mode 100644\nindex 901ce21d333..00000000000\n--- a/t/t5515/fetch.master_branches-one\n+++ /dev/null\n@@ -1,8 +0,0 @@\n-# master branches-one\n-8e32a6d901327a23ef831511badce7bf3bf46689\t\tbranch 'one' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.master_remote-explicit b/t/t5515/fetch.master_remote-explicit\ndeleted file mode 100644\nindex b3cfe6b98b2..00000000000\n--- a/t/t5515/fetch.master_remote-explicit\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-# master remote-explicit\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f\t\tbranch 'master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\tbranch 'one' of ../\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8\tnot-for-merge\tbranch 'two' of ../\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b\tnot-for-merge\tbranch 'three' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/fetch.master_remote-glob b/t/t5515/fetch.master_remote-glob\ndeleted file mode 100644\nindex 118befd1e48..00000000000\n--- a/t/t5515/fetch.master_remote-glob\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-# master remote-glob\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f\tnot-for-merge\tbranch 'master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\tbranch 'one' of ../\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b\tnot-for-merge\tbranch 'three' of ../\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8\tnot-for-merge\tbranch 'two' of ../\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5\tnot-for-merge\ttag 'tag-master' of ../\n-8e32a6d901327a23ef831511badce7bf3bf46689\tnot-for-merge\ttag 'tag-one' of ../\n-22feea448b023a2d864ef94b013735af34d238ba\tnot-for-merge\ttag 'tag-one-tree' of ../\n-c61a82b60967180544e3c19f819ddbd0c9f89899\tnot-for-merge\ttag 'tag-three' of ../\n-0e3b14047d3ee365f4f2a1b673db059c3972589c\tnot-for-merge\ttag 'tag-three-file' of ../\n-525b7fb068d59950d185a8779dc957c77eed73ba\tnot-for-merge\ttag 'tag-two' of ../\ndiff --git a/t/t5515/refs.br-branches-default b/t/t5515/refs.br-branches-default\ndeleted file mode 100644\nindex 21917c1e5db..00000000000\n--- a/t/t5515/refs.br-branches-default\n+++ /dev/null\n@@ -1,12 +0,0 @@\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/heads/branches-default\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-branches-default-merge b/t/t5515/refs.br-branches-default-merge\ndeleted file mode 100644\nindex 21917c1e5db..00000000000\n--- a/t/t5515/refs.br-branches-default-merge\n+++ /dev/null\n@@ -1,12 +0,0 @@\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/heads/branches-default\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-branches-default-merge_branches-default b/t/t5515/refs.br-branches-default-merge_branches-default\ndeleted file mode 100644\nindex 21917c1e5db..00000000000\n--- a/t/t5515/refs.br-branches-default-merge_branches-default\n+++ /dev/null\n@@ -1,12 +0,0 @@\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/heads/branches-default\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-branches-default-octopus b/t/t5515/refs.br-branches-default-octopus\ndeleted file mode 100644\nindex 21917c1e5db..00000000000\n--- a/t/t5515/refs.br-branches-default-octopus\n+++ /dev/null\n@@ -1,12 +0,0 @@\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/heads/branches-default\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-branches-default-octopus_branches-default b/t/t5515/refs.br-branches-default-octopus_branches-default\ndeleted file mode 100644\nindex 21917c1e5db..00000000000\n--- a/t/t5515/refs.br-branches-default-octopus_branches-default\n+++ /dev/null\n@@ -1,12 +0,0 @@\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/heads/branches-default\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-branches-default_branches-default b/t/t5515/refs.br-branches-default_branches-default\ndeleted file mode 100644\nindex 21917c1e5db..00000000000\n--- a/t/t5515/refs.br-branches-default_branches-default\n+++ /dev/null\n@@ -1,12 +0,0 @@\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/heads/branches-default\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-branches-one b/t/t5515/refs.br-branches-one\ndeleted file mode 100644\nindex 8a705a5df25..00000000000\n--- a/t/t5515/refs.br-branches-one\n+++ /dev/null\n@@ -1,12 +0,0 @@\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/heads/branches-one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-branches-one-merge b/t/t5515/refs.br-branches-one-merge\ndeleted file mode 100644\nindex 8a705a5df25..00000000000\n--- a/t/t5515/refs.br-branches-one-merge\n+++ /dev/null\n@@ -1,12 +0,0 @@\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/heads/branches-one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-branches-one-merge_branches-one b/t/t5515/refs.br-branches-one-merge_branches-one\ndeleted file mode 100644\nindex 8a705a5df25..00000000000\n--- a/t/t5515/refs.br-branches-one-merge_branches-one\n+++ /dev/null\n@@ -1,12 +0,0 @@\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/heads/branches-one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-branches-one-octopus b/t/t5515/refs.br-branches-one-octopus\ndeleted file mode 100644\nindex 8a705a5df25..00000000000\n--- a/t/t5515/refs.br-branches-one-octopus\n+++ /dev/null\n@@ -1,12 +0,0 @@\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/heads/branches-one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-branches-one-octopus_branches-one b/t/t5515/refs.br-branches-one-octopus_branches-one\ndeleted file mode 100644\nindex 8a705a5df25..00000000000\n--- a/t/t5515/refs.br-branches-one-octopus_branches-one\n+++ /dev/null\n@@ -1,12 +0,0 @@\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/heads/branches-one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-branches-one_branches-one b/t/t5515/refs.br-branches-one_branches-one\ndeleted file mode 100644\nindex 8a705a5df25..00000000000\n--- a/t/t5515/refs.br-branches-one_branches-one\n+++ /dev/null\n@@ -1,12 +0,0 @@\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/heads/branches-one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-remote-explicit b/t/t5515/refs.br-remote-explicit\ndeleted file mode 100644\nindex 9bbbfd9fc53..00000000000\n--- a/t/t5515/refs.br-remote-explicit\n+++ /dev/null\n@@ -1,15 +0,0 @@\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-remote-explicit-merge b/t/t5515/refs.br-remote-explicit-merge\ndeleted file mode 100644\nindex 9bbbfd9fc53..00000000000\n--- a/t/t5515/refs.br-remote-explicit-merge\n+++ /dev/null\n@@ -1,15 +0,0 @@\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-remote-explicit-merge_remote-explicit b/t/t5515/refs.br-remote-explicit-merge_remote-explicit\ndeleted file mode 100644\nindex 9bbbfd9fc53..00000000000\n--- a/t/t5515/refs.br-remote-explicit-merge_remote-explicit\n+++ /dev/null\n@@ -1,15 +0,0 @@\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-remote-explicit-octopus b/t/t5515/refs.br-remote-explicit-octopus\ndeleted file mode 100644\nindex 9bbbfd9fc53..00000000000\n--- a/t/t5515/refs.br-remote-explicit-octopus\n+++ /dev/null\n@@ -1,15 +0,0 @@\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-remote-explicit-octopus_remote-explicit b/t/t5515/refs.br-remote-explicit-octopus_remote-explicit\ndeleted file mode 100644\nindex 9bbbfd9fc53..00000000000\n--- a/t/t5515/refs.br-remote-explicit-octopus_remote-explicit\n+++ /dev/null\n@@ -1,15 +0,0 @@\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-remote-explicit_remote-explicit b/t/t5515/refs.br-remote-explicit_remote-explicit\ndeleted file mode 100644\nindex 9bbbfd9fc53..00000000000\n--- a/t/t5515/refs.br-remote-explicit_remote-explicit\n+++ /dev/null\n@@ -1,15 +0,0 @@\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-remote-glob b/t/t5515/refs.br-remote-glob\ndeleted file mode 100644\nindex 9bbbfd9fc53..00000000000\n--- a/t/t5515/refs.br-remote-glob\n+++ /dev/null\n@@ -1,15 +0,0 @@\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-remote-glob-merge b/t/t5515/refs.br-remote-glob-merge\ndeleted file mode 100644\nindex 9bbbfd9fc53..00000000000\n--- a/t/t5515/refs.br-remote-glob-merge\n+++ /dev/null\n@@ -1,15 +0,0 @@\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-remote-glob-merge_remote-glob b/t/t5515/refs.br-remote-glob-merge_remote-glob\ndeleted file mode 100644\nindex 9bbbfd9fc53..00000000000\n--- a/t/t5515/refs.br-remote-glob-merge_remote-glob\n+++ /dev/null\n@@ -1,15 +0,0 @@\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-remote-glob-octopus b/t/t5515/refs.br-remote-glob-octopus\ndeleted file mode 100644\nindex 9bbbfd9fc53..00000000000\n--- a/t/t5515/refs.br-remote-glob-octopus\n+++ /dev/null\n@@ -1,15 +0,0 @@\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-remote-glob-octopus_remote-glob b/t/t5515/refs.br-remote-glob-octopus_remote-glob\ndeleted file mode 100644\nindex 9bbbfd9fc53..00000000000\n--- a/t/t5515/refs.br-remote-glob-octopus_remote-glob\n+++ /dev/null\n@@ -1,15 +0,0 @@\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-remote-glob_remote-glob b/t/t5515/refs.br-remote-glob_remote-glob\ndeleted file mode 100644\nindex 9bbbfd9fc53..00000000000\n--- a/t/t5515/refs.br-remote-glob_remote-glob\n+++ /dev/null\n@@ -1,15 +0,0 @@\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-unconfig_branches-default b/t/t5515/refs.br-unconfig_branches-default\ndeleted file mode 100644\nindex 21917c1e5db..00000000000\n--- a/t/t5515/refs.br-unconfig_branches-default\n+++ /dev/null\n@@ -1,12 +0,0 @@\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/heads/branches-default\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-unconfig_branches-one b/t/t5515/refs.br-unconfig_branches-one\ndeleted file mode 100644\nindex 8a705a5df25..00000000000\n--- a/t/t5515/refs.br-unconfig_branches-one\n+++ /dev/null\n@@ -1,12 +0,0 @@\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/heads/branches-one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-unconfig_remote-explicit b/t/t5515/refs.br-unconfig_remote-explicit\ndeleted file mode 100644\nindex 9bbbfd9fc53..00000000000\n--- a/t/t5515/refs.br-unconfig_remote-explicit\n+++ /dev/null\n@@ -1,15 +0,0 @@\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.br-unconfig_remote-glob b/t/t5515/refs.br-unconfig_remote-glob\ndeleted file mode 100644\nindex 9bbbfd9fc53..00000000000\n--- a/t/t5515/refs.br-unconfig_remote-glob\n+++ /dev/null\n@@ -1,15 +0,0 @@\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.master_branches-default b/t/t5515/refs.master_branches-default\ndeleted file mode 100644\nindex 21917c1e5db..00000000000\n--- a/t/t5515/refs.master_branches-default\n+++ /dev/null\n@@ -1,12 +0,0 @@\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/heads/branches-default\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.master_branches-one b/t/t5515/refs.master_branches-one\ndeleted file mode 100644\nindex 8a705a5df25..00000000000\n--- a/t/t5515/refs.master_branches-one\n+++ /dev/null\n@@ -1,12 +0,0 @@\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/heads/branches-one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.master_remote-explicit b/t/t5515/refs.master_remote-explicit\ndeleted file mode 100644\nindex 9bbbfd9fc53..00000000000\n--- a/t/t5515/refs.master_remote-explicit\n+++ /dev/null\n@@ -1,15 +0,0 @@\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\ndiff --git a/t/t5515/refs.master_remote-glob b/t/t5515/refs.master_remote-glob\ndeleted file mode 100644\nindex 9bbbfd9fc53..00000000000\n--- a/t/t5515/refs.master_remote-glob\n+++ /dev/null\n@@ -1,15 +0,0 @@\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/HEAD\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/origin/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/origin/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/origin/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/origin/two\n-754b754407bf032e9a2f9d5a9ad05ca79a6b228f refs/remotes/rem/master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/remotes/rem/one\n-0567da4d5edd2ff4bb292a465ba9e64dcad9536b refs/remotes/rem/three\n-6134ee8f857693b96ff1cc98d3e2fd62b199e5a8 refs/remotes/rem/two\n-6c9dec2b923228c9ff994c6cfe4ae16c12408dc5 refs/tags/tag-master\n-8e32a6d901327a23ef831511badce7bf3bf46689 refs/tags/tag-one\n-22feea448b023a2d864ef94b013735af34d238ba refs/tags/tag-one-tree\n-c61a82b60967180544e3c19f819ddbd0c9f89899 refs/tags/tag-three\n-0e3b14047d3ee365f4f2a1b673db059c3972589c refs/tags/tag-three-file\n-525b7fb068d59950d185a8779dc957c77eed73ba refs/tags/tag-two\n-- \n2.12.2.windows.2.800.gede8f145e06\n\n\n"},{"id":"319400","messageId":"9856edc5dd10c716eba6a00111478a5589cade8f.1494509599.git.johannes.schindelin@gmx.de","threadId":"45931","inReplyTo":"cover.1494509599.git.johannes.schindelin@gmx.de","subject":"[PATCH 02/11] Documentation: really deprecate .git/remotes/ and .git/branches/","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2017-05-11T13:47:40Z","receivedAt":"2017-05-11T13:48:35Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"The documentation did not make it quite clear just how deprecated these\ndirectories are.\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n---\n Documentation/gitrepository-layout.txt | 19 +++++-----\n Documentation/urls-remotes.txt         | 65 ++--------------------------------\n 2 files changed, 11 insertions(+), 73 deletions(-)\n\ndiff --git a/Documentation/gitrepository-layout.txt b/Documentation/gitrepository-layout.txt\nindex f51ed4e37cd..9f2275f06d5 100644\n--- a/Documentation/gitrepository-layout.txt\n+++ b/Documentation/gitrepository-layout.txt\n@@ -144,12 +144,11 @@ config::\n \tused instead.\n \n branches::\n-\tA slightly deprecated way to store shorthands to be used\n+\tA highly deprecated way to store shorthands to be used\n \tto specify a URL to 'git fetch', 'git pull' and 'git push'.\n \tA file can be stored as `branches/<name>` and then\n \t'name' can be given to these commands in place of\n-\t'repository' argument.  See the REMOTES section in\n-\tlinkgit:git-fetch[1] for details.  This mechanism is legacy\n+\t'repository' argument.  This mechanism is legacy\n \tand not likely to be found in modern repositories. This\n \tdirectory is ignored if $GIT_COMMON_DIR is set and\n \t\"$GIT_COMMON_DIR/branches\" will be used instead.\n@@ -213,13 +212,13 @@ info/sparse-checkout::\n \tSee also: linkgit:git-read-tree[1].\n \n remotes::\n-\tStores shorthands for URL and default refnames for use\n-\twhen interacting with remote repositories via 'git fetch',\n-\t'git pull' and 'git push' commands.  See the REMOTES section\n-\tin linkgit:git-fetch[1] for details.  This mechanism is legacy\n-\tand not likely to be found in modern repositories. This\n-\tdirectory is ignored if $GIT_COMMON_DIR is set and\n-\t\"$GIT_COMMON_DIR/remotes\" will be used instead.\n+\tA highly deprecated location to store shorthands for URL and\n+\tdefault refnames for use when interacting with remote\n+\trepositories via 'git fetch', 'git pull' and 'git push'\n+\tcommands.  This mechanism is legacy and not likely to be\n+\tfound in modern repositories. This directory is ignored if\n+\t$GIT_COMMON_DIR is set and \"$GIT_COMMON_DIR/remotes\" will\n+\tbe used instead.\n \n logs::\n \tRecords of changes made to refs are stored in this directory.\ndiff --git a/Documentation/urls-remotes.txt b/Documentation/urls-remotes.txt\nindex bd184cd6539..a7214a9cae5 100644\n--- a/Documentation/urls-remotes.txt\n+++ b/Documentation/urls-remotes.txt\n@@ -3,15 +3,8 @@ include::urls.txt[]\n REMOTES[[REMOTES]]\n ------------------\n \n-The name of one of the following can be used instead\n-of a URL as `<repository>` argument:\n-\n-* a remote in the Git configuration file: `$GIT_DIR/config`,\n-* a file in the `$GIT_DIR/remotes` directory, or\n-* a file in the `$GIT_DIR/branches` directory.\n-\n-All of these also allow you to omit the refspec from the command line\n-because they each contain a refspec which git will use by default.\n+The name of a remote in the Git configuration file: `$GIT_DIR/config`\n+can be used instead of a URL as `<repository>` argument.\n \n Named remote in configuration file\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n@@ -35,60 +28,6 @@ config file would appear like this:\n The `<pushurl>` is used for pushes only. It is optional and defaults\n to `<url>`.\n \n-Named file in `$GIT_DIR/remotes`\n-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n-\n-You can choose to provide the name of a\n-file in `$GIT_DIR/remotes`.  The URL\n-in this file will be used to access the repository.  The refspec\n-in this file will be used as default when you do not\n-provide a refspec on the command line.  This file should have the\n-following format:\n-\n-------------\n-\tURL: one of the above URL format\n-\tPush: <refspec>\n-\tPull: <refspec>\n-\n-------------\n-\n-`Push:` lines are used by 'git push' and\n-`Pull:` lines are used by 'git pull' and 'git fetch'.\n-Multiple `Push:` and `Pull:` lines may\n-be specified for additional branch mappings.\n-\n-Named file in `$GIT_DIR/branches`\n-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n-\n-You can choose to provide the name of a\n-file in `$GIT_DIR/branches`.\n-The URL in this file will be used to access the repository.\n-This file should have the following format:\n-\n-\n-------------\n-\t<url>#<head>\n-------------\n-\n-`<url>` is required; `#<head>` is optional.\n-\n-Depending on the operation, git will use one of the following\n-refspecs, if you don't provide one on the command line.\n-`<branch>` is the name of this file in `$GIT_DIR/branches` and\n-`<head>` defaults to `master`.\n-\n-git fetch uses:\n-\n-------------\n-\trefs/heads/<head>:refs/heads/<branch>\n-------------\n-\n-git push uses:\n-\n-------------\n-\tHEAD:refs/heads/<head>\n-------------\n-\n \n \n \n-- \n2.12.2.windows.2.800.gede8f145e06\n\n\n"},{"id":"319401","messageId":"41310d8aac9a58c8c419676a1e9c971b2b4648aa.1494509599.git.johannes.schindelin@gmx.de","threadId":"45931","inReplyTo":"cover.1494509599.git.johannes.schindelin@gmx.de","subject":"[PATCH 10/11] PREVIEW: t0060: stop testing support for .git/remotes/ and .git/branches/","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2017-05-11T13:48:24Z","receivedAt":"2017-05-11T13:48:59Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"We are about to remove that feature for good.\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n---\n t/t0060-path-utils.sh | 2 --\n 1 file changed, 2 deletions(-)\n\ndiff --git a/t/t0060-path-utils.sh b/t/t0060-path-utils.sh\nindex 444b5a4df80..162c9a5a2f7 100755\n--- a/t/t0060-path-utils.sh\n+++ b/t/t0060-path-utils.sh\n@@ -295,8 +295,6 @@ test_git_path GIT_COMMON_DIR=bar info/exclude             bar/info/exclude\n test_git_path GIT_COMMON_DIR=bar info/grafts              bar/info/grafts\n test_git_path GIT_COMMON_DIR=bar info/sparse-checkout     .git/info/sparse-checkout\n test_git_path GIT_COMMON_DIR=bar info//sparse-checkout    .git/info//sparse-checkout\n-test_git_path GIT_COMMON_DIR=bar remotes/bar              bar/remotes/bar\n-test_git_path GIT_COMMON_DIR=bar branches/bar             bar/branches/bar\n test_git_path GIT_COMMON_DIR=bar logs/refs/heads/master   bar/logs/refs/heads/master\n test_git_path GIT_COMMON_DIR=bar refs/heads/master        bar/refs/heads/master\n test_git_path GIT_COMMON_DIR=bar refs/bisect/foo          .git/refs/bisect/foo\n-- \n2.12.2.windows.2.800.gede8f145e06\n\n\n"},{"id":"319402","messageId":"c73881261cc3021410695126989c6f1596f638b0.1494509599.git.johannes.schindelin@gmx.de","threadId":"45931","inReplyTo":"cover.1494509599.git.johannes.schindelin@gmx.de","subject":"[PATCH 11/11] PREVIEW: remove support for .git/remotes/ and .git/branches/","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2017-05-11T13:48:28Z","receivedAt":"2017-05-11T13:49:01Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"At long last, after a cycle or three of warning users who *still* use\nthe ancient feature of .git/remotes/ and .git/branches/, it is time to\nretire the code.\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n---\n path.c   |  2 --\n remote.c | 96 ----------------------------------------------------------------\n remote.h |  4 +--\n 3 files changed, 1 insertion(+), 101 deletions(-)\n\ndiff --git a/path.c b/path.c\nindex c1cb1cf6273..ee709bb2337 100644\n--- a/path.c\n+++ b/path.c\n@@ -104,7 +104,6 @@ struct common_dir {\n };\n \n static struct common_dir common_list[] = {\n-\t{ 0, 1, 0, \"branches\" },\n \t{ 0, 1, 0, \"hooks\" },\n \t{ 0, 1, 0, \"info\" },\n \t{ 0, 0, 1, \"info/sparse-checkout\" },\n@@ -115,7 +114,6 @@ static struct common_dir common_list[] = {\n \t{ 0, 1, 0, \"objects\" },\n \t{ 0, 1, 0, \"refs\" },\n \t{ 0, 1, 1, \"refs/bisect\" },\n-\t{ 0, 1, 0, \"remotes\" },\n \t{ 0, 1, 0, \"worktrees\" },\n \t{ 0, 1, 0, \"rr-cache\" },\n \t{ 0, 1, 0, \"svn\" },\ndiff --git a/remote.c b/remote.c\nindex b2ae168035e..914ff74c0d2 100644\n--- a/remote.c\n+++ b/remote.c\n@@ -241,89 +241,6 @@ static void add_instead_of(struct rewrite *rewrite, const char *instead_of)\n \trewrite->instead_of_nr++;\n }\n \n-static const char *skip_spaces(const char *s)\n-{\n-\twhile (isspace(*s))\n-\t\ts++;\n-\treturn s;\n-}\n-\n-static void read_remotes_file(struct remote *remote)\n-{\n-\tstruct strbuf buf = STRBUF_INIT;\n-\tFILE *f = fopen(git_path(\"remotes/%s\", remote->name), \"r\");\n-\n-\tif (!f)\n-\t\treturn;\n-\n-\twarning(_(\"the remote '%s' uses the long-deprecated '%s' file\"),\n-\t\tremote->name, git_path(\"branches/%s\", remote->name));\n-\n-\tremote->configured_in_repo = 1;\n-\tremote->origin = REMOTE_REMOTES;\n-\twhile (strbuf_getline(&buf, f) != EOF) {\n-\t\tconst char *v;\n-\n-\t\tstrbuf_rtrim(&buf);\n-\n-\t\tif (skip_prefix(buf.buf, \"URL:\", &v))\n-\t\t\tadd_url_alias(remote, xstrdup(skip_spaces(v)));\n-\t\telse if (skip_prefix(buf.buf, \"Push:\", &v))\n-\t\t\tadd_push_refspec(remote, xstrdup(skip_spaces(v)));\n-\t\telse if (skip_prefix(buf.buf, \"Pull:\", &v))\n-\t\t\tadd_fetch_refspec(remote, xstrdup(skip_spaces(v)));\n-\t}\n-\tstrbuf_release(&buf);\n-\tfclose(f);\n-}\n-\n-static void read_branches_file(struct remote *remote)\n-{\n-\tchar *frag;\n-\tstruct strbuf buf = STRBUF_INIT;\n-\tFILE *f = fopen(git_path(\"branches/%s\", remote->name), \"r\");\n-\n-\tif (!f)\n-\t\treturn;\n-\n-\tstrbuf_getline_lf(&buf, f);\n-\tfclose(f);\n-\tstrbuf_trim(&buf);\n-\tif (!buf.len) {\n-\t\tstrbuf_release(&buf);\n-\t\treturn;\n-\t}\n-\n-\twarning(_(\"the branch '%s' uses the long-deprecated '%s' file\"),\n-\t\tremote->name, git_path(\"branches/%s\", remote->name));\n-\n-\tremote->configured_in_repo = 1;\n-\tremote->origin = REMOTE_BRANCHES;\n-\n-\t/*\n-\t * The branches file would have URL and optionally\n-\t * #branch specified.  The \"master\" (or specified) branch is\n-\t * fetched and stored in the local branch matching the\n-\t * remote name.\n-\t */\n-\tfrag = strchr(buf.buf, '#');\n-\tif (frag)\n-\t\t*(frag++) = '\\0';\n-\telse\n-\t\tfrag = \"master\";\n-\n-\tadd_url_alias(remote, strbuf_detach(&buf, NULL));\n-\tadd_fetch_refspec(remote, xstrfmt(\"refs/heads/%s:refs/heads/%s\",\n-\t\t\t\t\t  frag, remote->name));\n-\n-\t/*\n-\t * Cogito compatible push: push current HEAD to remote #branch\n-\t * (master if missing)\n-\t */\n-\tadd_push_refspec(remote, xstrfmt(\"HEAD:refs/heads/%s\", frag));\n-\tremote->fetch_tags = 1; /* always auto-follow */\n-}\n-\n static int handle_config(const char *key, const char *value, void *cb)\n {\n \tconst char *name;\n@@ -652,13 +569,6 @@ void free_refspec(int nr_refspec, struct refspec *refspec)\n \tfree(refspec);\n }\n \n-static int valid_remote_nick(const char *name)\n-{\n-\tif (!name[0] || is_dot_or_dotdot(name))\n-\t\treturn 0;\n-\treturn !strchr(name, '/'); /* no slash */\n-}\n-\n const char *remote_for_branch(struct branch *branch, int *explicit)\n {\n \tif (branch && branch->remote_name) {\n@@ -700,12 +610,6 @@ static struct remote *remote_get_1(const char *name,\n \t\tname = get_default(current_branch, &name_given);\n \n \tret = make_remote(name, 0);\n-\tif (valid_remote_nick(name) && have_git_dir()) {\n-\t\tif (!valid_remote(ret))\n-\t\t\tread_remotes_file(ret);\n-\t\tif (!valid_remote(ret))\n-\t\t\tread_branches_file(ret);\n-\t}\n \tif (name_given && !valid_remote(ret))\n \t\tadd_url_alias(ret, name);\n \tif (!valid_remote(ret))\ndiff --git a/remote.h b/remote.h\nindex 6c28cd3e4bf..921b3d43356 100644\n--- a/remote.h\n+++ b/remote.h\n@@ -6,9 +6,7 @@\n \n enum {\n \tREMOTE_UNCONFIGURED = 0,\n-\tREMOTE_CONFIG,\n-\tREMOTE_REMOTES,\n-\tREMOTE_BRANCHES\n+\tREMOTE_CONFIG\n };\n \n struct remote {\n-- \n2.12.2.windows.2.800.gede8f145e06\n"},{"id":"319403","messageId":"1fd886af939e1fdb9a7e3a250f0b0fae56f716fb.1494509599.git.johannes.schindelin@gmx.de","threadId":"45931","inReplyTo":"cover.1494509599.git.johannes.schindelin@gmx.de","subject":"[PATCH 06/11] PREVIEW: t5510: convert .git/remotes/ test to use a regular remote","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2017-05-11T13:47:53Z","receivedAt":"2017-05-11T13:49:02Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"We are about to stop supporting the .git/remotes/ and .git/branches/\nfeature. In preparation, t5510-fetch is adjusted *not* to verify that\n.git/remotes/ works.\n\nAs the tests are entangled, we do not simply remove the test repository\nwith such a remote, but convert it to use a regular remote instead.\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n---\n t/t5510-fetch.sh | 10 ++++------\n 1 file changed, 4 insertions(+), 6 deletions(-)\n\ndiff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh\nindex 668c54be41e..f51b3360348 100755\n--- a/t/t5510-fetch.sh\n+++ b/t/t5510-fetch.sh\n@@ -46,12 +46,10 @@ test_expect_success \"clone and setup child repos\" '\n \t\tcd three &&\n \t\tgit config branch.master.remote two &&\n \t\tgit config branch.master.merge refs/heads/one &&\n-\t\tmkdir -p .git/remotes &&\n-\t\t{\n-\t\t\techo \"URL: ../two/.git/\"\n-\t\t\techo \"Pull: refs/heads/master:refs/heads/two\"\n-\t\t\techo \"Pull: refs/heads/one:refs/heads/one\"\n-\t\t} >.git/remotes/two\n+\t\tgit config remote.two.url ../two/.git/ &&\n+\t\tgit config remote.two.fetch refs/heads/master:refs/heads/two &&\n+\t\tgit config --add remote.two.fetch \\\n+\t\t\trefs/heads/one:refs/heads/one\n \t) &&\n \tgit clone . bundle &&\n \tgit clone . seven\n-- \n2.12.2.windows.2.800.gede8f145e06\n\n\n"},{"id":"319404","messageId":"6211d3073605233299c48719d9f0feeb618217a2.1494509599.git.johannes.schindelin@gmx.de","threadId":"45931","inReplyTo":"cover.1494509599.git.johannes.schindelin@gmx.de","subject":"[PATCH 07/11] PREVIEW: t5516: stop testing .git/branches/ functionality","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2017-05-11T13:47:56Z","receivedAt":"2017-05-11T13:49:36Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"We are about to remove support for .git/remotes/ and .git/branches/, at\nlong last. In preparation for this move, let's remove the corresponding\nregression tests from t5516-fetch-push.\n\nNote: the `push --prune` test case (and another test case after that)\nrelied on the side effect where a branch with the name `second` was\ncreated earlier. We simply move that branch creation into that test\ncase.\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n---\n t/t5516-fetch-push.sh | 59 +--------------------------------------------------\n 1 file changed, 1 insertion(+), 58 deletions(-)\n\ndiff --git a/t/t5516-fetch-push.sh b/t/t5516-fetch-push.sh\nindex 457f648ad91..c8ba7b67f67 100755\n--- a/t/t5516-fetch-push.sh\n+++ b/t/t5516-fetch-push.sh\n@@ -862,64 +862,6 @@ test_expect_success 'allow push to HEAD of non-bare repository (config)' '\n \t! grep \"warning: updating the current branch\" stderr\n '\n \n-test_expect_success 'fetch with branches' '\n-\tmk_empty testrepo &&\n-\tgit branch second $the_first_commit &&\n-\tgit checkout second &&\n-\tmkdir -p testrepo/.git/branches &&\n-\techo \"..\" > testrepo/.git/branches/branch1 &&\n-\t(\n-\t\tcd testrepo &&\n-\t\tgit fetch branch1 &&\n-\t\techo \"$the_commit commit\trefs/heads/branch1\" >expect &&\n-\t\tgit for-each-ref refs/heads >actual &&\n-\t\ttest_cmp expect actual\n-\t) &&\n-\tgit checkout master\n-'\n-\n-test_expect_success 'fetch with branches containing #' '\n-\tmk_empty testrepo &&\n-\tmkdir -p testrepo/.git/branches &&\n-\techo \"..#second\" > testrepo/.git/branches/branch2 &&\n-\t(\n-\t\tcd testrepo &&\n-\t\tgit fetch branch2 &&\n-\t\techo \"$the_first_commit commit\trefs/heads/branch2\" >expect &&\n-\t\tgit for-each-ref refs/heads >actual &&\n-\t\ttest_cmp expect actual\n-\t) &&\n-\tgit checkout master\n-'\n-\n-test_expect_success 'push with branches' '\n-\tmk_empty testrepo &&\n-\tgit checkout second &&\n-\tmkdir -p .git/branches &&\n-\techo \"testrepo\" > .git/branches/branch1 &&\n-\tgit push branch1 &&\n-\t(\n-\t\tcd testrepo &&\n-\t\techo \"$the_first_commit commit\trefs/heads/master\" >expect &&\n-\t\tgit for-each-ref refs/heads >actual &&\n-\t\ttest_cmp expect actual\n-\t)\n-'\n-\n-test_expect_success 'push with branches containing #' '\n-\tmk_empty testrepo &&\n-\tmkdir -p .git/branches &&\n-\techo \"testrepo#branch3\" > .git/branches/branch2 &&\n-\tgit push branch2 &&\n-\t(\n-\t\tcd testrepo &&\n-\t\techo \"$the_first_commit commit\trefs/heads/branch3\" >expect &&\n-\t\tgit for-each-ref refs/heads >actual &&\n-\t\ttest_cmp expect actual\n-\t) &&\n-\tgit checkout master\n-'\n-\n test_expect_success 'push into aliased refs (consistent)' '\n \tmk_test testrepo heads/master &&\n \tmk_child testrepo child1 &&\n@@ -1042,6 +984,7 @@ test_expect_success 'push --porcelain --dry-run rejected' '\n \n test_expect_success 'push --prune' '\n \tmk_test testrepo heads/master heads/second heads/foo heads/bar &&\n+\tgit branch second $the_first_commit &&\n \tgit push --prune testrepo : &&\n \tcheck_push_result testrepo $the_commit heads/master &&\n \tcheck_push_result testrepo $the_first_commit heads/second &&\n-- \n2.12.2.windows.2.800.gede8f145e06\n\n\n"},{"id":"319405","messageId":"86474db5654befa3880a33c10eb62075c6e2a5e0.1494509599.git.johannes.schindelin@gmx.de","threadId":"45931","inReplyTo":"cover.1494509599.git.johannes.schindelin@gmx.de","subject":"[PATCH 08/11] PREVIEW: remote: remove support for migrating ancient remotes","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2017-05-11T13:47:59Z","receivedAt":"2017-05-11T13:49:59Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"By now, everybody will have moved on... no need to burden ourselves with\nnow-obsolete code.\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n---\n Documentation/git-remote.txt |  4 ----\n builtin/remote.c             | 27 ---------------------\n t/t5505-remote.sh            | 57 --------------------------------------------\n 3 files changed, 88 deletions(-)\n\ndiff --git a/Documentation/git-remote.txt b/Documentation/git-remote.txt\nindex 577b969c1bd..746fdd27ced 100644\n--- a/Documentation/git-remote.txt\n+++ b/Documentation/git-remote.txt\n@@ -84,10 +84,6 @@ will always behave as if `--mirror` was passed.\n \n Rename the remote named <old> to <new>. All remote-tracking branches and\n configuration settings for the remote are updated.\n-+\n-In case <old> and <new> are the same, and <old> is a file under\n-`$GIT_DIR/remotes` or `$GIT_DIR/branches`, the remote is converted to\n-the configuration file format.\n \n 'remove'::\n 'rm'::\ndiff --git a/builtin/remote.c b/builtin/remote.c\nindex addf97ad293..c3502f24223 100644\n--- a/builtin/remote.c\n+++ b/builtin/remote.c\n@@ -574,30 +574,6 @@ static int read_remote_branches(const char *refname,\n \treturn 0;\n }\n \n-static int migrate_file(struct remote *remote)\n-{\n-\tstruct strbuf buf = STRBUF_INIT;\n-\tint i;\n-\n-\tstrbuf_addf(&buf, \"remote.%s.url\", remote->name);\n-\tfor (i = 0; i < remote->url_nr; i++)\n-\t\tgit_config_set_multivar(buf.buf, remote->url[i], \"^$\", 0);\n-\tstrbuf_reset(&buf);\n-\tstrbuf_addf(&buf, \"remote.%s.push\", remote->name);\n-\tfor (i = 0; i < remote->push_refspec_nr; i++)\n-\t\tgit_config_set_multivar(buf.buf, remote->push_refspec[i], \"^$\", 0);\n-\tstrbuf_reset(&buf);\n-\tstrbuf_addf(&buf, \"remote.%s.fetch\", remote->name);\n-\tfor (i = 0; i < remote->fetch_refspec_nr; i++)\n-\t\tgit_config_set_multivar(buf.buf, remote->fetch_refspec[i], \"^$\", 0);\n-\tif (remote->origin == REMOTE_REMOTES)\n-\t\tunlink_or_warn(git_path(\"remotes/%s\", remote->name));\n-\telse if (remote->origin == REMOTE_BRANCHES)\n-\t\tunlink_or_warn(git_path(\"branches/%s\", remote->name));\n-\n-\treturn 0;\n-}\n-\n static int mv(int argc, const char **argv)\n {\n \tstruct option options[] = {\n@@ -621,9 +597,6 @@ static int mv(int argc, const char **argv)\n \tif (!remote_is_configured(oldremote, 1))\n \t\tdie(_(\"No such remote: %s\"), rename.old);\n \n-\tif (!strcmp(rename.old, rename.new) && oldremote->origin != REMOTE_CONFIG)\n-\t\treturn migrate_file(oldremote);\n-\n \tnewremote = remote_get(rename.new);\n \tif (remote_is_configured(newremote, 1))\n \t\tdie(_(\"remote %s already exists.\"), rename.new);\ndiff --git a/t/t5505-remote.sh b/t/t5505-remote.sh\nindex 4fd66760c75..857950ac8ee 100755\n--- a/t/t5505-remote.sh\n+++ b/t/t5505-remote.sh\n@@ -798,63 +798,6 @@ Pull: refs/heads/master:refs/heads/origin\n Pull: refs/heads/next:refs/heads/origin2\n EOF\n \n-test_expect_success 'migrate a remote from named file in $GIT_DIR/remotes' '\n-\tgit clone one five &&\n-\torigin_url=$(pwd)/one &&\n-\t(\n-\t\tcd five &&\n-\t\tgit remote remove origin &&\n-\t\tmkdir -p .git/remotes &&\n-\t\tcat ../remotes_origin >.git/remotes/origin &&\n-\t\tgit remote rename origin origin &&\n-\t\ttest_path_is_missing .git/remotes/origin &&\n-\t\ttest \"$(git config remote.origin.url)\" = \"$origin_url\" &&\n-\t\tcat >push_expected <<-\\EOF &&\n-\t\trefs/heads/master:refs/heads/upstream\n-\t\trefs/heads/next:refs/heads/upstream2\n-\t\tEOF\n-\t\tcat >fetch_expected <<-\\EOF &&\n-\t\trefs/heads/master:refs/heads/origin\n-\t\trefs/heads/next:refs/heads/origin2\n-\t\tEOF\n-\t\tgit config --get-all remote.origin.push >push_actual &&\n-\t\tgit config --get-all remote.origin.fetch >fetch_actual &&\n-\t\ttest_cmp push_expected push_actual &&\n-\t\ttest_cmp fetch_expected fetch_actual\n-\t)\n-'\n-\n-test_expect_success 'migrate a remote from named file in $GIT_DIR/branches' '\n-\tgit clone one six &&\n-\torigin_url=$(pwd)/one &&\n-\t(\n-\t\tcd six &&\n-\t\tgit remote rm origin &&\n-\t\tmkdir -p .git/branches &&\n-\t\techo \"$origin_url\" >.git/branches/origin &&\n-\t\tgit remote rename origin origin &&\n-\t\ttest_path_is_missing .git/branches/origin &&\n-\t\ttest \"$(git config remote.origin.url)\" = \"$origin_url\" &&\n-\t\ttest \"$(git config remote.origin.fetch)\" = \"refs/heads/master:refs/heads/origin\" &&\n-\t\ttest \"$(git config remote.origin.push)\" = \"HEAD:refs/heads/master\"\n-\t)\n-'\n-\n-test_expect_success 'migrate a remote from named file in $GIT_DIR/branches (2)' '\n-\tgit clone one seven &&\n-\t(\n-\t\tcd seven &&\n-\t\tgit remote rm origin &&\n-\t\tmkdir .git/branches &&\n-\t\techo \"quux#foom\" > .git/branches/origin &&\n-\t\tgit remote rename origin origin &&\n-\t\ttest_path_is_missing .git/branches/origin &&\n-\t\ttest \"$(git config remote.origin.url)\" = \"quux\" &&\n-\t\ttest \"$(git config remote.origin.fetch)\" = \"refs/heads/foom:refs/heads/origin\"\n-\t\ttest \"$(git config remote.origin.push)\" = \"HEAD:refs/heads/foom\"\n-\t)\n-'\n-\n test_expect_success 'remote prune to cause a dangling symref' '\n \tgit clone one eight &&\n \t(\n-- \n2.12.2.windows.2.800.gede8f145e06\n\n\n"},{"id":"319422","messageId":"CAGZ79kb57HzJQ4VLFD_NMKvEnriPVXoAAPimg6BG_Z+PPjJ4aQ@mail.gmail.com","threadId":"45931","inReplyTo":"b26882e61ef466c787b575d3fd60bfeec8a9281a.1494509599.git.johannes.schindelin@gmx.de","subject":"Re: [PATCH 01/11] git-parse-remote: fix highly misleading man page","fromName":"Stefan Beller","fromEmail":"sbeller@google.com","sentAt":"2017-05-11T17:21:20Z","receivedAt":"2017-05-11T17:21:51Z","isPatch":true,"sender":{"key":"stefanbeller@gmail.com","avatar":"https://avatars.githubusercontent.com/u/455868?v=4"},"body":"On Thu, May 11, 2017 at 6:47 AM, Johannes Schindelin\n<johannes.schindelin@gmx.de> wrote:\n> The man page still talked about the .git/remotes/ directory (which is no\n> longer in use, as of 75c384efb52 (Do not create $GIT_DIR/remotes/\n> directory anymore., 2006-12-19)).\n>\n> Let's just revamp it almost completely to reflect the *purpose* of that\n> scriptlet, as opposed to its implementation details.\n>\n> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n> ---\n>  Documentation/git-parse-remote.txt | 7 +++----\n>  1 file changed, 3 insertions(+), 4 deletions(-)\n>\n> diff --git a/Documentation/git-parse-remote.txt b/Documentation/git-parse-remote.txt\n> index a45ea1ece81..7f865f33898 100644\n> --- a/Documentation/git-parse-remote.txt\n> +++ b/Documentation/git-parse-remote.txt\n> @@ -3,7 +3,7 @@ git-parse-remote(1)\n>\n>  NAME\n>  ----\n> -git-parse-remote - Routines to help parsing remote repository access parameters\n> +git-parse-remote - Routines to help parsing remote repository information\n\nToday I learned about git-parse-remote. Upon further inspection it is\njust a lib,\nnot anything useful for a user. (The man page with or without this patch\nis not very helpful to me)\n\nOnly git-rebase as well as git-submodule include this lib, the submodules\nonly need get_default_remote (4 lines of sh), which is also available\nin the submodule--helper, we'd just have to expose it and make it accessible.\n\nI wonder if we'd want to retire this script in the long run.\n\nI also wonder if rewriting the man page is good use of (your) time, as the\nlast contribution specifically to Documentation/git-parse-remote.txt\nis 62d955fd43 (parse-remote: remove unused functions, 2009-06-12),\nwhich has been a while since.\n\nThe outline in the coverletter promised more than just rewording, but\nI am fine with the change as is; it's a good start.\n\nThanks,\nStefan\n"},{"id":"319424","messageId":"CAGZ79kbAVt0xMDKmsTG-9cUx7Uj3jCY4-ma__BDokALMX8jz3g@mail.gmail.com","threadId":"45931","inReplyTo":"32d64bd3716c6f7a24877535330b7ac754eb117c.1494509599.git.johannes.schindelin@gmx.de","subject":"Re: [PATCH 05/11] Revert \"Revert \"Don't create the $GIT_DIR/branches directory on init\"\"","fromName":"Stefan Beller","fromEmail":"sbeller@google.com","sentAt":"2017-05-11T17:26:33Z","receivedAt":"2017-05-11T17:26:39Z","isPatch":true,"sender":{"key":"stefanbeller@gmail.com","avatar":"https://avatars.githubusercontent.com/u/455868?v=4"},"body":"On Thu, May 11, 2017 at 6:47 AM, Johannes Schindelin\n<johannes.schindelin@gmx.de> wrote:\n> A long, long, long time ago, we stored the \"upstream\" information of\n> branches in files inside the .git/branches/ directory. We don't do this\n> anymore, though. Since 5751f49010e (Move remote parsing into a library\n> file out of builtin-push., 2007-05-12), to be precise.\n>\n> This is sort of a sibling to 75c384efb52 (Do not create $GIT_DIR/remotes/\n> directory anymore., 2006-12-19).\n>\n> The tests t5505-remote and t5516-fetch-push need to be adjusted now, as\n> they expect to find a .git/branches/ directory.\n>\n> This reverts c8a58ac5a52 (Revert \"Don't create the $GIT_DIR/branches\n> directory on init\", 2009-10-31).\n>\n> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n> ---\n\nThis (and the previous patches) makes sense to me.\n\nThanks,\nStefan\n"},{"id":"319434","messageId":"CAGZ79kaM30ExQT6m9k5F5FqhKc-RwP4gsH6AaW_YgDL_ixs1Qg@mail.gmail.com","threadId":"45931","inReplyTo":"c73881261cc3021410695126989c6f1596f638b0.1494509599.git.johannes.schindelin@gmx.de","subject":"Re: [PATCH 11/11] PREVIEW: remove support for .git/remotes/ and .git/branches/","fromName":"Stefan Beller","fromEmail":"sbeller@google.com","sentAt":"2017-05-11T18:19:16Z","receivedAt":"2017-05-11T18:19:22Z","isPatch":true,"sender":{"key":"stefanbeller@gmail.com","avatar":"https://avatars.githubusercontent.com/u/455868?v=4"},"body":"On Thu, May 11, 2017 at 6:48 AM, Johannes Schindelin\n<johannes.schindelin@gmx.de> wrote:\n> At long last, after a cycle or three of warning users who *still* use\n> the ancient feature of .git/remotes/ and .git/branches/, it is time to\n> retire the code.\n>\n> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n> ---\n\nThe PREVIEW patches also look good to me, though I just\nskimmed them and other may chime in on the timing of them.\n\nThanks,\nStefan\n"},{"id":"319441","messageId":"alpine.DEB.2.21.1.1705112109410.146734@virtualbox","threadId":"45931","inReplyTo":"CAGZ79kb57HzJQ4VLFD_NMKvEnriPVXoAAPimg6BG_Z+PPjJ4aQ@mail.gmail.com","subject":"Re: [PATCH 01/11] git-parse-remote: fix highly misleading man page","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2017-05-11T19:14:52Z","receivedAt":"2017-05-11T19:15:06Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Stefan,\n\n\nOn Thu, 11 May 2017, Stefan Beller wrote:\n\n> On Thu, May 11, 2017 at 6:47 AM, Johannes Schindelin\n> <johannes.schindelin@gmx.de> wrote:\n> > The man page still talked about the .git/remotes/ directory (which is\n> > no longer in use, as of 75c384efb52 (Do not create $GIT_DIR/remotes/\n> > directory anymore., 2006-12-19)).\n> >\n> > Let's just revamp it almost completely to reflect the *purpose* of\n> > that scriptlet, as opposed to its implementation details.\n> >\n> > Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n> > ---\n> >  Documentation/git-parse-remote.txt | 7 +++----\n> >  1 file changed, 3 insertions(+), 4 deletions(-)\n> >\n> > diff --git a/Documentation/git-parse-remote.txt b/Documentation/git-parse-remote.txt\n> > index a45ea1ece81..7f865f33898 100644\n> > --- a/Documentation/git-parse-remote.txt\n> > +++ b/Documentation/git-parse-remote.txt\n> > @@ -3,7 +3,7 @@ git-parse-remote(1)\n> >\n> >  NAME\n> >  ----\n> > -git-parse-remote - Routines to help parsing remote repository access parameters\n> > +git-parse-remote - Routines to help parsing remote repository information\n> \n> Today I learned about git-parse-remote. Upon further inspection it is\n> just a lib, not anything useful for a user. (The man page with or\n> without this patch is not very helpful to me)\n\nYes, I figured as much when I read the man page. It shows how much most of\nour man pages of the olden days improved when you find an unchanged one...\n\n> Only git-rebase as well as git-submodule include this lib, the\n> submodules only need get_default_remote (4 lines of sh), which is also\n> available in the submodule--helper, we'd just have to expose it and make\n> it accessible.\n> \n> I wonder if we'd want to retire this script in the long run.\n\nI do not think that we can. Just like git-sh-setup, we advertised it for\nuse in custom scripts.\n\n> I also wonder if rewriting the man page is good use of (your) time, as\n> the last contribution specifically to Documentation/git-parse-remote.txt\n> is 62d955fd43 (parse-remote: remove unused functions, 2009-06-12), which\n> has been a while since.\n\n1) we still advertise those \"shell library files\" for consumption in\n   users' scripts, so I think we have to keep the man page, too, and\n\n2) The fact that the man page is stale just shows how dearly it is in need\n   of being edited, no? ;-)\n\n> The outline in the coverletter promised more than just rewording, but\n> I am fine with the change as is; it's a good start.\n\nYou mean the commit message (I do not think I talked about the\ngit-parse-remote man page in the cover letter)?\n\nIf so, I think I only promised to completely revamp it and to stop talking\nabout implementation details...\n\nCiao,\nDscho\n"},{"id":"319443","messageId":"alpine.DEB.2.21.1.1705112115370.146734@virtualbox","threadId":"45931","inReplyTo":"CAGZ79kaM30ExQT6m9k5F5FqhKc-RwP4gsH6AaW_YgDL_ixs1Qg@mail.gmail.com","subject":"Re: [PATCH 11/11] PREVIEW: remove support for .git/remotes/ and .git/branches/","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2017-05-11T19:19:08Z","receivedAt":"2017-05-11T19:19:42Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Stefan,\n\nOn Thu, 11 May 2017, Stefan Beller wrote:\n\n> On Thu, May 11, 2017 at 6:48 AM, Johannes Schindelin\n> <johannes.schindelin@gmx.de> wrote:\n> > At long last, after a cycle or three of warning users who *still* use\n> > the ancient feature of .git/remotes/ and .git/branches/, it is time to\n> > retire the code.\n> >\n> > Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n> > ---\n> \n> The PREVIEW patches also look good to me, though I just\n> skimmed them and other may chime in on the timing of them.\n\nThanks for the review!\n\nI agree that the PREVIEW part is not quite as important as the first half.\nI only bothered with it because I did want to make sure that the first\nhalf is correct, that it does cover all the places we will need to delete\nin the end.\n\nIn other words: the PREVIEW part should become its own patch series, that\nI hope Junio will carry in pu (or next) for a while, similar to the\nchanges that removed the historical wart of the funny argument order in\n`git merge`.\n\nCiao,\nDscho\n"},{"id":"319493","messageId":"xmqqk25m98rd.fsf@gitster.mtv.corp.google.com","threadId":"45931","inReplyTo":"cover.1494509599.git.johannes.schindelin@gmx.de","subject":"Re: [PATCH 00/11] Start retiring .git/remotes/ and .git/branches/ for good","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2017-05-12T01:14:14Z","receivedAt":"2017-05-12T01:14:22Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Johannes Schindelin <johannes.schindelin@gmx.de> writes:\n\n> Git uses the config for remote/upstream information in favor of the\n> previously-used .git/remotes/ and .git/branches/ for a decade now.\n\nThe last time I thought about trying this several years ago, I found\nthat people who need to grab things from many places still do use\n.git/branches/ and their use case is hard to migrate to .git/config,\nprimarily because the former is \"one per file\" and it is easy to\nadd/remove/tweak without affecting others.  Ask akpm@ if he still\nprefers to use .git/branches/ for example.\n\nIs it really hurting us having to support these old information\nsources we treat as read-only?\n"},{"id":"319503","messageId":"alpine.DEB.2.21.1.1705121617420.146734@virtualbox","threadId":"45931","inReplyTo":"xmqqfuga5lp2.fsf@gitster.mtv.corp.google.com","subject":"Re: [PATCH 00/11] Start retiring .git/remotes/ and .git/branches/ for good","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2017-05-12T14:19:55Z","receivedAt":"2017-05-12T18:44:36Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Junio,\n\nOn Fri, 12 May 2017, Junio C Hamano wrote:\n\n> Junio C Hamano <gitster@pobox.com> writes:\n> \n> > Johannes Schindelin <johannes.schindelin@gmx.de> writes:\n> >\n> >> Git uses the config for remote/upstream information in favor of the\n> >> previously-used .git/remotes/ and .git/branches/ for a decade now.\n> >\n> > The last time I thought about trying this several years ago, I found\n> > that people who need to grab things from many places still do use\n> > .git/branches/ and their use case is hard to migrate to .git/config,\n> > primarily because the former is \"one per file\" and it is easy to\n> > add/remove/tweak without affecting others.  Ask akpm@ if he still\n> > prefers to use .git/branches/ for example.\n> \n> FWIW, I do not think there is any reason for people to be using\n> .git/remotes/, but for .git/branches/, I do not think I can offer a\n> more efficient and easier to use alternative based on .git/config to\n> do these things:\n> \n>  $ grep <substring> .git/branches/* ;# what did I call that remote?\n>  $ cat .git/branches/$name ;# where do I get that from?\n>  $ echo \"$URL#$branch\" >.git/branches/$name ;# I just learned a new src\n>  $ rm .git/branch/$name ;# I no longer need it\n> \n> without having to learn things experienced CLI/UNIX person already\n> knows.\n\nI do not understand what you want to tell me with that example. It is\nconfusing me utterly.\n\n> We simply cannot beat the above with anything like \n> \n>     $ git config remote.$name.fetch refs/heads/$branch\n> \n> even though the config based remote definition may be infinitely\n> more powerful.\n\nThen maybe we need to teach, say, `git remote` to be that powerful?\n\n> > Is it really hurting us having to support these old information\n> > sources we treat as read-only?\n> \n> And this one is also important.  I do not think we had to touch any\n> code that handles .git/remotes/ or .git/branches when we extended\n> the .git/config based configuration for remotes, simply because the\n> old data source are pretty much frozen read-only places these days.\n\nOkay. But by the same reasoning, I want to hear nothing from you anymore\nabout the sort of maintenance burden you talked about in the ssh_variant\npatches. That burden was ridiculously small compared to what you tell me\nyou want to keep (and for a single user that may have moved on). Not one\nword.\n\nCiao,\nDscho\n"},{"id":"319505","messageId":"20170512173846.GA27400@aiede.svl.corp.google.com","threadId":"45931","inReplyTo":"alpine.DEB.2.21.1.1705121617420.146734@virtualbox","subject":"Re: [PATCH 00/11] Start retiring .git/remotes/ and .git/branches/ for good","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2017-05-12T17:38:46Z","receivedAt":"2017-05-12T18:44:42Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Johannes Schindelin wrote:\n> On Fri, 12 May 2017, Junio C Hamano wrote:\n\n>> And this one is also important.  I do not think we had to touch any\n>> code that handles .git/remotes/ or .git/branches when we extended\n>> the .git/config based configuration for remotes, simply because the\n>> old data source are pretty much frozen read-only places these days.\n>\n> Okay. But by the same reasoning, I want to hear nothing from you anymore\n> about the sort of maintenance burden you talked about in the ssh_variant\n> patches. That burden was ridiculously small compared to what you tell me\n> you want to keep (and for a single user that may have moved on). Not one\n> word.\n\nI don't understand this argument at all.  There are costs and benefits\nto removing an existing feature, just like there are costs and benefits\nto adding a feature.  If I understand the two examples you're comparing\ncorrectly, then the same principle is at play in both: when it is much\nmore expensive to remove a feature than to not add it in the first\nplace, a maintainer has to push back on both addition and removal of\nfeatures.\n\nI like patches 3 and 4 because they warn before taking something out\nfrom people's feet.  So I think this series heads in a good direction.\n\nI wonder if in the endgame we'd want git to still recognize the files,\nso it can point people to some documentation on how to convert them to\nthe supported thing.  That way, when people ask \"What do I have to do\nto work with my very old git repository using current versions of\ngit?\", the answer could still be \"Just use current git --- it will\nwork in an intuitive way and will give advice when it needs your help,\nwithout you needing to proactively do anything special.\"\n\nThanks,\nJonathan\n"},{"id":"319508","messageId":"alpine.DEB.2.21.1.1705121216290.146734@virtualbox","threadId":"45931","inReplyTo":"xmqqk25m98rd.fsf@gitster.mtv.corp.google.com","subject":"Re: [PATCH 00/11] Start retiring .git/remotes/ and .git/branches/ for good","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2017-05-12T10:18:46Z","receivedAt":"2017-05-12T18:44:48Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Junio,\n\nOn Fri, 12 May 2017, Junio C Hamano wrote:\n\n> Johannes Schindelin <johannes.schindelin@gmx.de> writes:\n> \n> > Git uses the config for remote/upstream information in favor of the\n> > previously-used .git/remotes/ and .git/branches/ for a decade now.\n> \n> The last time I thought about trying this several years ago, I found\n> that people who need to grab things from many places still do use\n> .git/branches/ and their use case is hard to migrate to .git/config,\n> primarily because the former is \"one per file\" and it is easy to\n> add/remove/tweak without affecting others.  Ask akpm@ if he still\n> prefers to use .git/branches/ for example.\n> \n> Is it really hurting us having to support these old information\n> sources we treat as read-only?\n\nWell, you frequently complain about my patches, claiming that they place\nunnecessary maintenance burden on you.\n\nI would say that the .git/remotes/ and .git/branches/ code is a lot more\nmaintenance burden than most of my patches.\n\nAlso: I do not buy that it is hard to migrate from .git/branches/ to\n.git/config. All you have to is to call git-config (maybe twice) instead\nof pasting a oneliner into a file. I do not have akpm@'s email address\nhandy, BTW.\n\nCiao,\nDscho\n"},{"id":"319513","messageId":"alpine.DEB.2.21.1.1705121304310.146734@virtualbox","threadId":"45931","inReplyTo":"20170512091104.5yl57m4x6z5oxq3r@sigill.intra.peff.net","subject":"Re: [PATCH 00/11] Start retiring .git/remotes/ and .git/branches/ for good","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2017-05-12T11:09:03Z","receivedAt":"2017-05-12T18:44:55Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Peff,\n\nOn Fri, 12 May 2017, Jeff King wrote:\n\n> On Thu, May 11, 2017 at 03:47:33PM +0200, Johannes Schindelin wrote:\n> \n> > Git uses the config for remote/upstream information in favor of the\n> > previously-used .git/remotes/ and .git/branches/ for a decade now.\n> > \n> > Nothing in Git writes to these files any longer, and the most\n> > prominent user of .git/branches/ (Cogito) is long abandoned.\n> > \n> > It is time to start not only deprecating this feature, but *really*\n> > deprecating it. Like, really, *really*. For reals.\n> \n> I like the goal, and the patches themselves (both the deprecations and\n> the actual removal) all look good to me.\n\nThanks!\n\n> If we want to start slow (and if Junio is right that there may be some\n> people who are actually using this feature, we probably should), step 0\n> may be making people aware that it's on the horizon, even before we\n> start issuing annoying warnings to them. This thread does that to some\n> degree, but we could also put it in the release notes for a version.\n> That's not guaranteed to get people's attention, but it gives more\n> opportunity for them to speak up before installing a version of Git that\n> produces warnings whenever they fetch.\n\nOkay. I do not think there is any value in putting this into the release\nnotes, of course, as 1) next to nobody reads them, at least not closely,\nand 2) people who still use .git/branches/ very clearly missed the release\nnotes of a decade ago that .git/branches/ is not the way to go.\n\nOf course, it takes what it takes. If we spend 6+ cycles deprecating a\nfeature that only one person may still use, for what we know, so be it.\n\nCiao,\nDscho\n"},{"id":"319519","messageId":"xmqqfuga5lp2.fsf@gitster.mtv.corp.google.com","threadId":"45931","inReplyTo":"xmqqk25m98rd.fsf@gitster.mtv.corp.google.com","subject":"Re: [PATCH 00/11] Start retiring .git/remotes/ and .git/branches/ for good","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2017-05-12T12:00:41Z","receivedAt":"2017-05-12T18:45:05Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Junio C Hamano <gitster@pobox.com> writes:\n\n> Johannes Schindelin <johannes.schindelin@gmx.de> writes:\n>\n>> Git uses the config for remote/upstream information in favor of the\n>> previously-used .git/remotes/ and .git/branches/ for a decade now.\n>\n> The last time I thought about trying this several years ago, I found\n> that people who need to grab things from many places still do use\n> .git/branches/ and their use case is hard to migrate to .git/config,\n> primarily because the former is \"one per file\" and it is easy to\n> add/remove/tweak without affecting others.  Ask akpm@ if he still\n> prefers to use .git/branches/ for example.\n\nFWIW, I do not think there is any reason for people to be using\n.git/remotes/, but for .git/branches/, I do not think I can offer a\nmore efficient and easier to use alternative based on .git/config to\ndo these things:\n\n $ grep <substring> .git/branches/* ;# what did I call that remote?\n $ cat .git/branches/$name ;# where do I get that from?\n $ echo \"$URL#$branch\" >.git/branches/$name ;# I just learned a new src\n $ rm .git/branch/$name ;# I no longer need it\n\nwithout having to learn things experienced CLI/UNIX person already\nknows.  We simply cannot beat the above with anything like \n\n    $ git config remote.$name.fetch refs/heads/$branch\n\neven though the config based remote definition may be infinitely\nmore powerful.\n\n> Is it really hurting us having to support these old information\n> sources we treat as read-only?\n\nAnd this one is also important.  I do not think we had to touch any\ncode that handles .git/remotes/ or .git/branches when we extended\nthe .git/config based configuration for remotes, simply because the\nold data source are pretty much frozen read-only places these days.\n\n"},{"id":"319547","messageId":"20170512091104.5yl57m4x6z5oxq3r@sigill.intra.peff.net","threadId":"45931","inReplyTo":"cover.1494509599.git.johannes.schindelin@gmx.de","subject":"Re: [PATCH 00/11] Start retiring .git/remotes/ and .git/branches/ for good","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2017-05-12T09:11:04Z","receivedAt":"2017-05-12T18:45:55Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Thu, May 11, 2017 at 03:47:33PM +0200, Johannes Schindelin wrote:\n\n> Git uses the config for remote/upstream information in favor of the\n> previously-used .git/remotes/ and .git/branches/ for a decade now.\n> \n> Nothing in Git writes to these files any longer, and the most prominent\n> user of .git/branches/ (Cogito) is long abandoned.\n> \n> It is time to start not only deprecating this feature, but *really*\n> deprecating it. Like, really, *really*. For reals.\n\nI like the goal, and the patches themselves (both the deprecations and\nthe actual removal) all look good to me.\n\nIf we want to start slow (and if Junio is right that there may be some\npeople who are actually using this feature, we probably should), step 0\nmay be making people aware that it's on the horizon, even before we\nstart issuing annoying warnings to them. This thread does that to some\ndegree, but we could also put it in the release notes for a version.\nThat's not guaranteed to get people's attention, but it gives more\nopportunity for them to speak up before installing a version of Git that\nproduces warnings whenever they fetch.\n\n-Peff\n"},{"id":"319567","messageId":"xmqq7f1l6as6.fsf@gitster.mtv.corp.google.com","threadId":"45931","inReplyTo":"alpine.DEB.2.21.1.1705121617420.146734@virtualbox","subject":"Re: [PATCH 00/11] Start retiring .git/remotes/ and .git/branches/ for good","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2017-05-12T21:11:05Z","receivedAt":"2017-05-12T21:11:13Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n\n> On Fri, 12 May 2017, Junio C Hamano wrote:\n>>  ...\n>> FWIW, I do not think there is any reason for people to be using\n>> .git/remotes/, but for .git/branches/, I do not think I can offer a\n>> more efficient and easier to use alternative based on .git/config to\n>> do these things:\n>> \n>>  $ grep <substring> .git/branches/* ;# what did I call that remote?\n>>  $ cat .git/branches/$name ;# where do I get that from?\n>>  $ echo \"$URL#$branch\" >.git/branches/$name ;# I just learned a new src\n>>  $ rm .git/branch/$name ;# I no longer need it\n>> \n>> without having to learn things experienced CLI/UNIX person already\n>> knows.\n>\n> I do not understand what you want to tell me with that example. It is\n> confusing me utterly.\n\nThey show how it helps a user, whose primary use of Git is to fetch\nfrom many places, to keep the the old \"branches\" machinery.  It is\nnot \"hard\" to migrate in the sense that there is a way to (1) find\nthe short-name you gave to a remote from a part of URL etc., (2)\nfind the exact attributes of the repository a short-name refers to,\n(3) update an existing or add a new short-name and (4) remove an\nexisting one.  The remotes.*.{url,fetch} configuration are expressive\nenough to represent these operations.  It however is more work and I\ncouldn't think of alternatives.\n\n>\n>> We simply cannot beat the above with anything like \n>> \n>>     $ git config remote.$name.fetch refs/heads/$branch\n>> \n>> even though the config based remote definition may be infinitely\n>> more powerful.\n>\n> Then maybe we need to teach, say, `git remote` to be that powerful?\n\nAh, after all, you weren't confused utterly.  \n\nNot necessarily \"that powerful\", but yes, if we had something that\nis quick and easy to use as a replacement, I do agree we can plan\n.git/{branches,remotes}'s removal.  The point of \"branches\" thing to\nexisting users, I think, is not its expressive power (it is much\nmuch simpler and can do only one thing) but its simplicity.\n\nThanks.\n"},{"id":"319610","messageId":"xmqqinl53w08.fsf@gitster.mtv.corp.google.com","threadId":"45931","inReplyTo":"20170512173846.GA27400@aiede.svl.corp.google.com","subject":"Re: [PATCH 00/11] Start retiring .git/remotes/ and .git/branches/ for good","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2017-05-13T10:13:11Z","receivedAt":"2017-05-13T10:13:19Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jonathan Nieder <jrnieder@gmail.com> writes:\n\n> Johannes Schindelin wrote:\n>> On Fri, 12 May 2017, Junio C Hamano wrote:\n>\n>>> And this one is also important.  I do not think we had to touch any\n>>> code that handles .git/remotes/ or .git/branches when we extended\n>>> the .git/config based configuration for remotes, simply because the\n>>> old data source are pretty much frozen read-only places these days.\n>>\n>> Okay. But by the same reasoning, I want to hear nothing from you anymore\n>> about the sort of maintenance burden you talked about in the ssh_variant\n>> patches. That burden was ridiculously small compared to what you tell me\n>> you want to keep (and for a single user that may have moved on). Not one\n>> word.\n>\n> I don't understand this argument at all.  There are costs and benefits\n> to removing an existing feature, just like there are costs and benefits\n> to adding a feature.  If I understand the two examples you're comparing\n> correctly, then the same principle is at play in both: when it is much\n> more expensive to remove a feature than to not add it in the first\n> place, a maintainer has to push back on both addition and removal of\n> features.\n\nFWIW, I do not understand Dscho's argument, either.\n\nAnd I do agree with you about additions and removals.  While these\nare a bit of apples and oranges comparison, the same principle\nindeed sits behind them.  Incompatible changes, including removal,\nare costly to existing users, so we want to avoid them or when we\ncannot avoid them, we try to find a way to alleviate the pain.  When\nadding something new, we try to make sure that the addition will not\nintroduce the need to make incompatible changes in the future.\n\n\n\n"},{"id":"319764","messageId":"alpine.DEB.2.21.1.1705151022160.146734@virtualbox","threadId":"45931","inReplyTo":"xmqq7f1l6as6.fsf@gitster.mtv.corp.google.com","subject":"Re: [PATCH 00/11] Start retiring .git/remotes/ and .git/branches/ for good","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2017-05-15T08:42:25Z","receivedAt":"2017-05-15T08:42:37Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Junio,\n\nOn Sat, 13 May 2017, Junio C Hamano wrote:\n\n> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n> \n> > On Fri, 12 May 2017, Junio C Hamano wrote:\n> >>  ...\n> >> FWIW, I do not think there is any reason for people to be using\n> >> .git/remotes/, but for .git/branches/, I do not think I can offer a\n> >> more efficient and easier to use alternative based on .git/config to\n> >> do these things:\n> >> \n> >>  $ grep <substring> .git/branches/* ;# what did I call that remote?\n> >>  $ cat .git/branches/$name ;# where do I get that from?\n> >>  $ echo \"$URL#$branch\" >.git/branches/$name ;# I just learned a new src\n> >>  $ rm .git/branch/$name ;# I no longer need it\n> >> \n> >> without having to learn things experienced CLI/UNIX person already\n> >> knows.\n> >\n> > I do not understand what you want to tell me with that example. It is\n> > confusing me utterly.\n> \n> They show how it helps a user, whose primary use of Git is to fetch\n> from many places, to keep the the old \"branches\" machinery.\n\nM'kay. Not quite sure how that differs from my use case, which works quite\nwell with the \"config\" way. My `git remote | wc -l` says 21.\n\nLet me re-format what you said next.\n\n> It is not \"hard\" to migrate in the sense that there is a way to\n>\n> (1) find the short-name you gave to a remote from a part of URL etc.,\n>\n> (2) find the exact attributes of the repository a short-name refers to,\n>\n> (3) update an existing or add a new short-name and\n>\n> (4) remove an existing one.\n>\n> The remotes.*.{url,fetch} configuration are expressive enough to\n> represent these operations.  It however is more work and I couldn't\n> think of alternatives.\n\nSo if I understand correctly, you want to do\n\n(1) `git remote -v | grep <part-of-the-url>`\n\n(2) `git remote show <shortname>`\n\n(3) if (1) did not find it:\n\t`git remote add -f <short-name> <URL>`,\n    otherwise:\n\t`git fetch <shortname>`\n\n(4) `git remove rm <shortname>`\n\nI have to admit that I used `git remote -v | grep ^<shortname>` for (2)\nall the time, until I had a quick look at builtin/remote.c so I would not\nmake a complete fool out of myself in this reply, and I will use `git -p\nremote show <shortname>` henceforth.\n\nAs to (1), I really do not use this myself, as my remotes pretty much\nalways have names that I remember very well. And if I don't, neither do I\nremember the URL, so I have to sift through the output of `git -p remote\n-v` manually anyway.\n\n> >> We simply cannot beat the above with anything like \n> >> \n> >>     $ git config remote.$name.fetch refs/heads/$branch\n> >> \n> >> even though the config based remote definition may be infinitely\n> >> more powerful.\n> >\n> > Then maybe we need to teach, say, `git remote` to be that powerful?\n> \n> Ah, after all, you weren't confused utterly.\n\nNo, I was, and I am still at least partially confused. I just read your\n\"We simply cannot beat ...\" as a round-about way to say \"I wish we had an\neasy way to do XYZ\" without stating the XYZ in a way that even dimwits\nsuch as myself can understand.\n\n> Not necessarily \"that powerful\", but yes, if we had something that\n> is quick and easy to use as a replacement, I do agree we can plan\n> .git/{branches,remotes}'s removal.  The point of \"branches\" thing to\n> existing users, I think, is not its expressive power (it is much\n> much simpler and can do only one thing) but its simplicity.\n\nOkay, so my quest at removing maintenance burden is not entirely pointless\nan exercise and a waste of my time.\n\nGood. I will continue to work on that front, then, among other things.\n\nCiao,\nDscho\n"},{"id":"319855","messageId":"xmqq7f1h63h9.fsf@gitster.mtv.corp.google.com","threadId":"45931","inReplyTo":"alpine.DEB.2.21.1.1705121216290.146734@virtualbox","subject":"Re: [PATCH 00/11] Start retiring .git/remotes/ and .git/branches/ for good","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2017-05-16T00:37:54Z","receivedAt":"2017-05-16T00:38:02Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n\n> On Fri, 12 May 2017, Junio C Hamano wrote:\n>\n>> Is it really hurting us having to support these old information\n>> sources we treat as read-only?\n>\n> Well, you frequently complain about my patches, claiming that they place\n> unnecessary maintenance burden on you.\n>\n> I would say that the .git/remotes/ and .git/branches/ code is a lot more\n> maintenance burden than most of my patches.\n\nI wasn't going to respond to this thread anymore, because I didn't\nfeel like the discussion was going anywhere, and you already said\nyou won't listen to me.\n\nYou seem to be confused between \"maintenance burden\" and \"burden on\nthe maintainer\". I felt that it needs to be corrected for other\npeople reading this exchange from the sideline.\n\n    When we worked to add feature X in the remotes subsystem, we\n    were slowed down because we had to adjust the code also for\n    .git/branches.  The same story for feature Y.  The same for\n    feature Z.  This is getting ridiculous/cumbersome, especially\n    given that we know .git/branches is not used by anybody.\n\nThat's a maintenance burden, and the \"we\" refers to the Git\ndevelopment community as a whole, not the maintainer.  It is not a\nburden on _me_.\n\nAlso important to notice is I do not know what X, Y and Z are with\nrespect to .git/branches feature.  That is where \"Is it really\nhurting?\" question comes from, but it hasn't been answered so far.\n\nWhat's burden on the maintainer is having to engage in a discussion\nlike this one, to reject an attempt to remove something that is not\ndemonstratably a maintenance burden, because the maintainer has to\nact as the last-resort champion for the end-users, when others on\nthe list do not speak up X-<.\n\nYes, I know that proving that something we currently support is not\nused by anybody is HARD [*1*].  That is why removal is costly.  And\nthat in turn is why we need to be careful when adding new things and\nmaking changes in general.\n\n\n[Footnotes]\n\n*1* Removal of \"rsync\" transport we did recently was a happy but\n    rare case.  It has been broken for a few years without anybody\n    complaining.\n"},{"id":"319907","messageId":"CACBZZX5EXxsB3TWiiB0TH-ZpOsadcAPAe4chrQBe7py9VAMY+Q@mail.gmail.com","threadId":"45931","inReplyTo":"xmqq7f1h63h9.fsf@gitster.mtv.corp.google.com","subject":"Re: [PATCH 00/11] Start retiring .git/remotes/ and .git/branches/ for good","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2017-05-16T08:05:09Z","receivedAt":"2017-05-16T08:05:41Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"On Tue, May 16, 2017 at 2:37 AM, Junio C Hamano <gitster@pobox.com> wrote:\n> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n>\n>> On Fri, 12 May 2017, Junio C Hamano wrote:\n>>\n>>> Is it really hurting us having to support these old information\n>>> sources we treat as read-only?\n>>\n>> Well, you frequently complain about my patches, claiming that they place\n>> unnecessary maintenance burden on you.\n>>\n>> I would say that the .git/remotes/ and .git/branches/ code is a lot more\n>> maintenance burden than most of my patches.\n>\n> I wasn't going to respond to this thread anymore, because I didn't\n> feel like the discussion was going anywhere, and you already said\n> you won't listen to me.\n>\n> You seem to be confused between \"maintenance burden\" and \"burden on\n> the maintainer\". I felt that it needs to be corrected for other\n> people reading this exchange from the sideline.\n>\n>     When we worked to add feature X in the remotes subsystem, we\n>     were slowed down because we had to adjust the code also for\n>     .git/branches.  The same story for feature Y.  The same for\n>     feature Z.  This is getting ridiculous/cumbersome, especially\n>     given that we know .git/branches is not used by anybody.\n>\n> That's a maintenance burden, and the \"we\" refers to the Git\n> development community as a whole, not the maintainer.  It is not a\n> burden on _me_.\n>\n> Also important to notice is I do not know what X, Y and Z are with\n> respect to .git/branches feature.  That is where \"Is it really\n> hurting?\" question comes from, but it hasn't been answered so far.\n>\n> What's burden on the maintainer is having to engage in a discussion\n> like this one, to reject an attempt to remove something that is not\n> demonstratably a maintenance burden, because the maintainer has to\n> act as the last-resort champion for the end-users, when others on\n> the list do not speak up X-<.\n\nThis and many other discussions on-list basically come down to:\n\n1. Someone wants to change X.\n2. This would have user impact Y.\n3. We have no way to quantify Y.\n4. X doesn't happen out of fear of unquantifiable Y.\n\nIt seems to me that a way out of this that would make everyone happy\nis to go through some deprecation cycle through several releases with\nX where:\n\n1. We detect that you're using X, and warn that it's a candidate for deprecation\n2. In another release, we turn off the feature by default, threatening\nthat it's going to go away forever unless someone pipes up (this is\nwhat we did with rsync:// accidentally)\n3. In another release, If you turned on the feature after #2 we emit a\nnoisy warning every time it's used, saying \"it'll really be removed in\n$release+1\"\n\nAnother open source community I'm involved in, the Perl language, used\nto have the same issue. Every time something like\nadding/changing/removing X came up we'd have the same discussion all\nover again from scratch.\n\nA lot of that was solved by having some written down guide for how\ndeprecations are done:\nhttp://perldoc.perl.org/perlpolicy.html#BACKWARD-COMPATIBILITY-AND-DEPRECATION\n\nOf course that's not a perfect solution, nothing is, but it makes it\nmuch easier to get patches like this on some sort of well-defined\ntrack towards deprecation.\n\n> Yes, I know that proving that something we currently support is not\n> used by anybody is HARD [*1*].  That is why removal is costly.  And\n> that in turn is why we need to be careful when adding new things and\n> making changes in general.\n\nFrom my reading of this series we already have a solution to that. We\nstart warning and then we find out who's using it.\n\nTo the extent that that causes issues I think it's better to peel that\ndiscussion off this specific topic, i.e. the pain that causes users is\nnot specific to this proposed update, but has to do with how we want\nto do deprecations in general, and the trade-offs involved with doing\nthat.\n\n> [Footnotes]\n>\n> *1* Removal of \"rsync\" transport we did recently was a happy but\n>     rare case.  It has been broken for a few years without anybody\n>     complaining.\n"},{"id":"319910","messageId":"xmqqh90l188a.fsf@gitster.mtv.corp.google.com","threadId":"45931","inReplyTo":"CACBZZX5EXxsB3TWiiB0TH-ZpOsadcAPAe4chrQBe7py9VAMY+Q@mail.gmail.com","subject":"Re: [PATCH 00/11] Start retiring .git/remotes/ and .git/branches/ for good","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2017-05-16T09:06:29Z","receivedAt":"2017-05-16T09:06:39Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:\n\n> This and many other discussions on-list basically come down to:\n>\n> 1. Someone wants to change X.\n> 2. This would have user impact Y.\n> 3. We have no way to quantify Y.\n> 4. X doesn't happen out of fear of unquantifiable Y.\n\nYou forgot the step 0. You need to answer two questions: \"Is\nchanging X necessary?\" and \"Does that necessity outweigh the\ninconvenience caused to existing users by the deprecation flow?\"\n\nYou need to answer yes to both before you even consider going into\nthe later steps.  Once that happens,...\n\n\n> It seems to me that a way out of this that would make everyone happy\n> is to go through some deprecation cycle through several releases with\n> X where:\n> \n> 1. We detect that you're using X, and warn that it's a candidate for deprecation\n> 2. In another release, we turn off the feature by default, threatening\n> that it's going to go away forever unless someone pipes up (this is\n> what we did with rsync:// accidentally)\n> 3. In another release, If you turned on the feature after #2 we emit a\n> noisy warning every time it's used, saying \"it'll really be removed in\n> $release+1\"\n\n... the deprecation practice is very well established around here.\n\nIn this case, however, we haven't even seen the first question \"Is\nit needed?\"  answered \"yes\", let alone \"Is it needed enough?\".\n"},{"id":"319911","messageId":"CACBZZX5oVKGZLKgS4aF0=XXtHO67ynS+zxSopDN9ErJGzV9n-A@mail.gmail.com","threadId":"45931","inReplyTo":"xmqqh90l188a.fsf@gitster.mtv.corp.google.com","subject":"Re: [PATCH 00/11] Start retiring .git/remotes/ and .git/branches/ for good","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2017-05-16T10:02:53Z","receivedAt":"2017-05-16T10:03:23Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"On Tue, May 16, 2017 at 11:06 AM, Junio C Hamano <gitster@pobox.com> wrote:\n> Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:\n>\n>> This and many other discussions on-list basically come down to:\n>>\n>> 1. Someone wants to change X.\n>> 2. This would have user impact Y.\n>> 3. We have no way to quantify Y.\n>> 4. X doesn't happen out of fear of unquantifiable Y.\n>\n> You forgot the step 0. You need to answer two questions: \"Is\n> changing X necessary?\" and \"Does that necessity outweigh the\n> inconvenience caused to existing users by the deprecation flow?\"\n>\n> You need to answer yes to both before you even consider going into\n> the later steps.  Once that happens,...\n\nLeaving this change aside, because I'm not interested in this change,\nbut the process in general. That seems to be a recipe for leaving\ncertain types of changes in deprecation limbo.\n\nI.e. we say \"don't use this\", but can't follow through because users\nmay be inconvenienced, and we can't get any data on how users may be\ninconvenienced because of the chicken & egg problem of not being able\nto push those deprecations in any way to users.\n\nOne way to bridge that gap would be to e.g. have something similar to\n\"use <VERSION>\" in Perl, where users can opt-in to new features & hard\ndeprecations.\n\nPlenty of us package up git for other users, and various downstream\ndistributors (particularly more \"bleeding edge\" distros, like Arch,\nGentoo, Debian unstable) might be convinced to turn such a switch.\n\nWouldn't that go a long way to bridging the gap we have between\n\"surely nobody needs this anymore, let's remove it\" and \"we don't know\nif someone really needs this, so let's keep it forever\"?\n\n>> It seems to me that a way out of this that would make everyone happy\n>> is to go through some deprecation cycle through several releases with\n>> X where:\n>>\n>> 1. We detect that you're using X, and warn that it's a candidate for deprecation\n>> 2. In another release, we turn off the feature by default, threatening\n>> that it's going to go away forever unless someone pipes up (this is\n>> what we did with rsync:// accidentally)\n>> 3. In another release, If you turned on the feature after #2 we emit a\n>> noisy warning every time it's used, saying \"it'll really be removed in\n>> $release+1\"\n>\n> ... the deprecation practice is very well established around here.\n\nIt seems pretty haphazard to me, is it even documented somewhere?\n\nI'm talking about an establish process backed up by code, where for\nexample I can add an experimental feature in v2.14.0, it'll be subject\nto change & warn unless you configure core.use_experimental=true or\nwhatever until v2.16.0, then it'll be considered stable, and changing\nthe semantics of any stable feature will require opt-in configuration\nthat'll only become default after N more release cycles where N is\nsome well-defined number.\n\nGit's deprecation cycles, such as they are, seem to be better\ndescribed as: it'll be noted in the release notes or docs, then left\nfor some indeterminate amount of time until we have the argument on a\ncase-by-case basis of if/when/how to deal with that specific case.\n\nThis causes issues for devs wanting to deprecate things, but more\nimportantly doesn't at close the loop on deprecations by bringing\nusers into the loop. What am I to conclude as a user from various\nmentions of deprecations in our docs? Some of which have been there\nfor 5-10  years.\n"},{"id":"319979","messageId":"xmqqwp9gz4nm.fsf@gitster.mtv.corp.google.com","threadId":"45931","inReplyTo":"CACBZZX5oVKGZLKgS4aF0=XXtHO67ynS+zxSopDN9ErJGzV9n-A@mail.gmail.com","subject":"Re: [PATCH 00/11] Start retiring .git/remotes/ and .git/branches/ for good","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2017-05-17T00:51:57Z","receivedAt":"2017-05-17T00:52:04Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:\n\n> It seems pretty haphazard to me, is it even documented somewhere?\n>\n> I'm talking about an establish process backed up by code, where for\n> example I can add an experimental feature in v2.14.0, it'll be subject\n> to change & warn unless you configure core.use_experimental=true or\n> whatever until v2.16.0, then it'll be considered stable, and changing\n> the semantics of any stable feature will require opt-in configuration\n> that'll only become default after N more release cycles where N is\n> some well-defined number.\n>\n> Git's deprecation cycles, such as they are, seem to be better\n> described as: it'll be noted in the release notes or docs, then left\n> for some indeterminate amount of time until we have the argument on a\n> case-by-case basis of if/when/how to deal with that specific case.\n\nI do not think we have any \"Statutory law\" about how to make a\nbackward-incompatible change in Documentation/; I do not terribly\nmind if we see some write-up on the topic there.\n\nHaving said that, after getting burned by \"git-foo no longer is on\nyour $PATH\" change in 1.6 era [*1*], I think we have been pretty\ngood at following the same pattern to ease the pain to the users\nduring transition each time we had to introduce a change that forces\nexisting users to adjust to the new world order.  Recall how any of\nthe following (not exhaustive samples) were done: introducing and\nmaking the default value of push.default from \"matching\" to\n\"simple\"; removal of \"git tar-tree\"; \"git add -u\" working on the\nwhole tree even when run from a subdirectory.  We start by issuing\nwarning message when a deprecated feature is used or a feature that\nwill change its default is used, wait for a few releases (depending\non how entrenched its use is), and then finally flip the switch and\nremove the message.\n\nYou are right to point out that we tend to refrain from setting the\ntimetable from the beginning of the deprecation dance, and it might\nbe a good idea to set the exact cut-off date upfront.  I have no\nstrong opinion.\n\n\n[References]\n\n*1* https://public-inbox.org/git/?q=gmane:93813\n"},{"id":"409626","messageId":"20201111151754.31527-1-avarab@gmail.com","threadId":"45931","inReplyTo":"CAGZ79kb57HzJQ4VLFD_NMKvEnriPVXoAAPimg6BG_Z+PPjJ4aQ@mail.gmail.com","subject":"[PATCH 0/5] Remove now-unused git-parse-remote","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2020-11-11T15:17:49Z","receivedAt":"2020-11-11T15:18:17Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"I started poking at removing .git/branches from the default template,\nwhich I had a patch for until I noticed Johannes's old[1] series.\n\nIn any case, this is one thing that came out of that\ninvestigation. The code we're keeping by moving it to git-submodule.sh\ncan also be replaced by some C code we have, but I wanted to leave\nthat to another submission (if I'll get to it), and make this simply a\ncode removal.\n\n1. https://public-inbox.org/git/cover.1494509599.git.johannes.schindelin@gmx.de/\n\nÆvar Arnfjörð Bjarmason (5):\n  parse-remote: remove unused GIT_DIR variable\n  parse-remote: remove long-dead rebase code\n  parse-remote: remove long-dead git-pull.sh code\n  parse-remote: move used code to git-submodule.sh\n  parse-remote: remove this now-unused library\n\n .gitignore                         |  1 -\n Documentation/git-parse-remote.txt | 23 -------\n Makefile                           |  2 -\n command-list.txt                   |  1 -\n git-parse-remote.sh                | 98 ------------------------------\n git-submodule.sh                   |  8 ++-\n 6 files changed, 7 insertions(+), 126 deletions(-)\n delete mode 100644 Documentation/git-parse-remote.txt\n\n-- \n2.29.2.222.g5d2a92d10f8\n\n"},{"id":"409627","messageId":"20201111151754.31527-2-avarab@gmail.com","threadId":"45931","inReplyTo":"CAGZ79kb57HzJQ4VLFD_NMKvEnriPVXoAAPimg6BG_Z+PPjJ4aQ@mail.gmail.com","subject":"[PATCH 1/5] parse-remote: remove unused GIT_DIR variable","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2020-11-11T15:17:50Z","receivedAt":"2020-11-11T15:18:18Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"This variable was last used in code removed way back in\n45781adb9a (\"get_remote_url(): use the same data source as ls-remote\nto get remote urls\", 2011-03-01).\n\nSince it's only used in git-submodule.sh it could have been the case\nthat the code there relied on us setting $GIT_DIR, but that's not the\ncase. The only use of $GIT_DIR in git-submodule.sh involves a $GIT_DIR\nvariable that the code there sets by itself.\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n---\n git-parse-remote.sh | 4 ----\n 1 file changed, 4 deletions(-)\n\ndiff --git a/git-parse-remote.sh b/git-parse-remote.sh\nindex d3c39980f3..6b743cda17 100644\n--- a/git-parse-remote.sh\n+++ b/git-parse-remote.sh\n@@ -2,10 +2,6 @@\n # upstream branch that should be pulled by \"git pull\" from the current\n # branch.\n \n-# git-ls-remote could be called from outside a git managed repository;\n-# this would fail in that case and would issue an error message.\n-GIT_DIR=$(git rev-parse -q --git-dir) || :;\n-\n get_default_remote () {\n \tcurr_branch=$(git symbolic-ref -q HEAD)\n \tcurr_branch=\"${curr_branch#refs/heads/}\"\n-- \n2.29.2.222.g5d2a92d10f8\n\n"},{"id":"409628","messageId":"20201111151754.31527-3-avarab@gmail.com","threadId":"45931","inReplyTo":"CAGZ79kb57HzJQ4VLFD_NMKvEnriPVXoAAPimg6BG_Z+PPjJ4aQ@mail.gmail.com","subject":"[PATCH 2/5] parse-remote: remove long-dead rebase code","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2020-11-11T15:17:51Z","receivedAt":"2020-11-11T15:18:19Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"Remove code that was last used in the now-removed rebase.useBuiltin\nsetting. See d03ebd411c (\"rebase: remove the rebase.useBuiltin\nsetting\", 2019-03-18) for the removal of its last user.\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n---\n git-parse-remote.sh | 47 ---------------------------------------------\n 1 file changed, 47 deletions(-)\n\ndiff --git a/git-parse-remote.sh b/git-parse-remote.sh\nindex 6b743cda17..e3f6195281 100644\n--- a/git-parse-remote.sh\n+++ b/git-parse-remote.sh\n@@ -48,50 +48,3 @@ get_remote_merge_branch () {\n \t    esac\n \tesac\n }\n-\n-error_on_missing_default_upstream () {\n-\tcmd=\"$1\"\n-\top_type=\"$2\"\n-\top_prep=\"$3\" # FIXME: op_prep is no longer used\n-\texample=\"$4\"\n-\tbranch_name=$(git symbolic-ref -q HEAD)\n-\tdisplay_branch_name=\"${branch_name#refs/heads/}\"\n-\t# If there's only one remote, use that in the suggestion\n-\tremote=\"$(gettext \"<remote>\")\"\n-\tbranch=\"$(gettext \"<branch>\")\"\n-\tif test $(git remote | wc -l) = 1\n-\tthen\n-\t\tremote=$(git remote)\n-\tfi\n-\n-\tif test -z \"$branch_name\"\n-\tthen\n-\t\tgettextln \"You are not currently on a branch.\"\n-\telse\n-\t\tgettextln \"There is no tracking information for the current branch.\"\n-\tfi\n-\tcase \"$op_type\" in\n-\trebase)\n-\t\tgettextln \"Please specify which branch you want to rebase against.\"\n-\t\t;;\n-\tmerge)\n-\t\tgettextln \"Please specify which branch you want to merge with.\"\n-\t\t;;\n-\t*)\n-\t\techo >&2 \"BUG: unknown operation type: $op_type\"\n-\t\texit 1\n-\t\t;;\n-\tesac\n-\teval_gettextln \"See git-\\${cmd}(1) for details.\"\n-\techo\n-\techo \"    $example\"\n-\techo\n-\tif test -n \"$branch_name\"\n-\tthen\n-\t\tgettextln \"If you wish to set tracking information for this branch you can do so with:\"\n-\t\techo\n-\t\techo \"    git branch --set-upstream-to=$remote/$branch $display_branch_name\"\n-\t\techo\n-\tfi\n-\texit 1\n-}\n-- \n2.29.2.222.g5d2a92d10f8\n\n"},{"id":"409629","messageId":"20201111151754.31527-5-avarab@gmail.com","threadId":"45931","inReplyTo":"CAGZ79kb57HzJQ4VLFD_NMKvEnriPVXoAAPimg6BG_Z+PPjJ4aQ@mail.gmail.com","subject":"[PATCH 4/5] parse-remote: move used code to git-submodule.sh","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2020-11-11T15:17:53Z","receivedAt":"2020-11-11T15:18:22Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"Move the only code in git-parse-remote.sh that was actually used to\ngit-submodule.sh.\n\nThis leaves just a comment in git-parse-remote.sh for ease of review,\na later commit will remove it and its build system configuration.\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n---\n git-parse-remote.sh | 7 -------\n git-submodule.sh    | 7 +++++++\n 2 files changed, 7 insertions(+), 7 deletions(-)\n\ndiff --git a/git-parse-remote.sh b/git-parse-remote.sh\nindex 864519eecf..b8d6a215e6 100644\n--- a/git-parse-remote.sh\n+++ b/git-parse-remote.sh\n@@ -1,10 +1,3 @@\n # This is a shell library to calculate the remote repository and\n # upstream branch that should be pulled by \"git pull\" from the current\n # branch.\n-\n-get_default_remote () {\n-\tcurr_branch=$(git symbolic-ref -q HEAD)\n-\tcurr_branch=\"${curr_branch#refs/heads/}\"\n-\torigin=$(git config --get \"branch.$curr_branch.remote\")\n-\techo ${origin:-origin}\n-}\ndiff --git a/git-submodule.sh b/git-submodule.sh\nindex 7ce52872b7..a6219c34e2 100755\n--- a/git-submodule.sh\n+++ b/git-submodule.sh\n@@ -413,6 +413,13 @@ is_tip_reachable () (\n \ttest -z \"$rev\"\n )\n \n+get_default_remote () {\n+\tcurr_branch=$(git symbolic-ref -q HEAD)\n+\tcurr_branch=\"${curr_branch#refs/heads/}\"\n+\torigin=$(git config --get \"branch.$curr_branch.remote\")\n+\techo ${origin:-origin}\n+}\n+\n fetch_in_submodule () (\n \tsanitize_submodule_env &&\n \tcd \"$1\" &&\n-- \n2.29.2.222.g5d2a92d10f8\n\n"},{"id":"409630","messageId":"20201111151754.31527-6-avarab@gmail.com","threadId":"45931","inReplyTo":"CAGZ79kb57HzJQ4VLFD_NMKvEnriPVXoAAPimg6BG_Z+PPjJ4aQ@mail.gmail.com","subject":"[PATCH 5/5] parse-remote: remove this now-unused library","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2020-11-11T15:17:54Z","receivedAt":"2020-11-11T15:18:23Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"Completely remove the git-parse-remote shellscript library.\n\nSince e9460a66e0 (\"parse-remote: support default reflist in\nget_remote_merge_branch\", 2009-06-12) when there were around 300 lines\nof code here used by various core code everything in it has become\nunsued, and that unused code was removed in preceding commits. Almost\nall of its previous functionality has now been rewritten in C.\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n---\n .gitignore                         |  1 -\n Documentation/git-parse-remote.txt | 23 -----------------------\n Makefile                           |  2 --\n command-list.txt                   |  1 -\n git-submodule.sh                   |  1 -\n 5 files changed, 28 deletions(-)\n delete mode 100644 Documentation/git-parse-remote.txt\n\ndiff --git a/.gitignore b/.gitignore\nindex 6232d33924..9da275e4e8 100644\n--- a/.gitignore\n+++ b/.gitignore\n@@ -114,7 +114,6 @@\n /git-pack-redundant\n /git-pack-objects\n /git-pack-refs\n-/git-parse-remote\n /git-patch-id\n /git-prune\n /git-prune-packed\ndiff --git a/Documentation/git-parse-remote.txt b/Documentation/git-parse-remote.txt\ndeleted file mode 100644\nindex a45ea1ece8..0000000000\n--- a/Documentation/git-parse-remote.txt\n+++ /dev/null\n@@ -1,23 +0,0 @@\n-git-parse-remote(1)\n-===================\n-\n-NAME\n-----\n-git-parse-remote - Routines to help parsing remote repository access parameters\n-\n-\n-SYNOPSIS\n---------\n-[verse]\n-'. \"$(git --exec-path)/git-parse-remote\"'\n-\n-DESCRIPTION\n------------\n-This script is included in various scripts to supply\n-routines to parse files under $GIT_DIR/remotes/ and\n-$GIT_DIR/branches/ and configuration variables that are related\n-to fetching, pulling and pushing.\n-\n-GIT\n----\n-Part of the linkgit:git[1] suite\ndiff --git a/Makefile b/Makefile\nindex 790a883932..c874dff9b8 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -613,7 +613,6 @@ SCRIPT_SH += git-submodule.sh\n SCRIPT_SH += git-web--browse.sh\n \n SCRIPT_LIB += git-mergetool--lib\n-SCRIPT_LIB += git-parse-remote\n SCRIPT_LIB += git-rebase--preserve-merges\n SCRIPT_LIB += git-sh-i18n\n SCRIPT_LIB += git-sh-setup\n@@ -2577,7 +2576,6 @@ XGETTEXT_FLAGS_PERL = $(XGETTEXT_FLAGS) --language=Perl \\\n \t--keyword=__ --keyword=N__ --keyword=\"__n:1,2\"\n LOCALIZED_C = $(C_OBJ:o=c) $(LIB_H) $(GENERATED_H)\n LOCALIZED_SH = $(SCRIPT_SH)\n-LOCALIZED_SH += git-parse-remote.sh\n LOCALIZED_SH += git-rebase--preserve-merges.sh\n LOCALIZED_SH += git-sh-setup.sh\n LOCALIZED_PERL = $(SCRIPT_PERL)\ndiff --git a/command-list.txt b/command-list.txt\nindex 0e3204e7d1..c19c8a94fe 100644\n--- a/command-list.txt\n+++ b/command-list.txt\n@@ -135,7 +135,6 @@ git-p4                                  foreignscminterface\n git-pack-objects                        plumbingmanipulators\n git-pack-redundant                      plumbinginterrogators\n git-pack-refs                           ancillarymanipulators\n-git-parse-remote                        synchelpers\n git-patch-id                            purehelpers\n git-prune                               ancillarymanipulators   complete\n git-prune-packed                        plumbingmanipulators\ndiff --git a/git-submodule.sh b/git-submodule.sh\nindex a6219c34e2..e7962e1a45 100755\n--- a/git-submodule.sh\n+++ b/git-submodule.sh\n@@ -20,7 +20,6 @@ USAGE=\"[--quiet] [--cached]\n OPTIONS_SPEC=\n SUBDIRECTORY_OK=Yes\n . git-sh-setup\n-. git-parse-remote\n require_work_tree\n wt_prefix=$(git rev-parse --show-prefix)\n cd_to_toplevel\n-- \n2.29.2.222.g5d2a92d10f8\n\n"},{"id":"409631","messageId":"20201111151754.31527-4-avarab@gmail.com","threadId":"45931","inReplyTo":"CAGZ79kb57HzJQ4VLFD_NMKvEnriPVXoAAPimg6BG_Z+PPjJ4aQ@mail.gmail.com","subject":"[PATCH 3/5] parse-remote: remove long-dead git-pull.sh code","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2020-11-11T15:17:52Z","receivedAt":"2020-11-11T15:18:25Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"Remove long-dead code that used to be used by git-pull.sh before\n49eb8d39c7 (\"Remove contrib/examples/*\", 2018-03-25).\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n---\n git-parse-remote.sh | 40 ----------------------------------------\n 1 file changed, 40 deletions(-)\n\ndiff --git a/git-parse-remote.sh b/git-parse-remote.sh\nindex e3f6195281..864519eecf 100644\n--- a/git-parse-remote.sh\n+++ b/git-parse-remote.sh\n@@ -8,43 +8,3 @@ get_default_remote () {\n \torigin=$(git config --get \"branch.$curr_branch.remote\")\n \techo ${origin:-origin}\n }\n-\n-get_remote_merge_branch () {\n-\tcase \"$#\" in\n-\t0|1)\n-\t    origin=\"$1\"\n-\t    default=$(get_default_remote)\n-\t    test -z \"$origin\" && origin=$default\n-\t    curr_branch=$(git symbolic-ref -q HEAD) &&\n-\t    [ \"$origin\" = \"$default\" ] &&\n-\t    echo $(git for-each-ref --format='%(upstream)' $curr_branch)\n-\t    ;;\n-\t*)\n-\t    repo=$1\n-\t    shift\n-\t    ref=$1\n-\t    # FIXME: It should return the tracking branch\n-\t    #        Currently only works with the default mapping\n-\t    case \"$ref\" in\n-\t    +*)\n-\t\tref=$(expr \"z$ref\" : 'z+\\(.*\\)')\n-\t\t;;\n-\t    esac\n-\t    expr \"z$ref\" : 'z.*:' >/dev/null || ref=\"${ref}:\"\n-\t    remote=$(expr \"z$ref\" : 'z\\([^:]*\\):')\n-\t    case \"$remote\" in\n-\t    '' | HEAD ) remote=HEAD ;;\n-\t    heads/*) remote=${remote#heads/} ;;\n-\t    refs/heads/*) remote=${remote#refs/heads/} ;;\n-\t    refs/* | tags/* | remotes/* ) remote=\n-\t    esac\n-\t    [ -n \"$remote\" ] && case \"$repo\" in\n-\t\t.)\n-\t\t    echo \"refs/heads/$remote\"\n-\t\t    ;;\n-\t\t*)\n-\t\t    echo \"refs/remotes/$repo/$remote\"\n-\t\t    ;;\n-\t    esac\n-\tesac\n-}\n-- \n2.29.2.222.g5d2a92d10f8\n\n"},{"id":"409643","messageId":"xmqqwnyr4zv8.fsf@gitster.c.googlers.com","threadId":"45931","inReplyTo":"20201111151754.31527-6-avarab@gmail.com","subject":"Re: [PATCH 5/5] parse-remote: remove this now-unused library","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-11-11T16:33:47Z","receivedAt":"2020-11-11T16:33:52Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Ævar Arnfjörð Bjarmason  <avarab@gmail.com> writes:\n\n> Completely remove the git-parse-remote shellscript library.\n>\n> Since e9460a66e0 (\"parse-remote: support default reflist in\n> get_remote_merge_branch\", 2009-06-12) when there were around 300 lines\n> of code here used by various core code everything in it has become\n> unsued, and that unused code was removed in preceding commits. Almost\n> all of its previous functionality has now been rewritten in C.\n\nVery pleasing to see this.\n\nI would imagine that an equally easy to understand and more compact\npresentation of this series would have been to\n\n - copy minimally needed code to git-submodule.sh verbatim, while\n   dropping the dot-source from git-submodule.sh (patch 1)\n\n - just say \"nobody now dot-sources this shell library\" and do what\n   this step does.\n\nEspecially 1/5 confused me more than it helped me to understand the\nend result ;-)  It does not matter in the endgame that GIT_DIR was\ndefined there, as long as we know nobody other than git-submodule.sh\ndot-sources the shell library and git-submodule.sh uses its own setup.\n\nBut that can only be said with perfect hindsight after seeing all\nyour efforts in these five patches.\n\nThanks.\n\n\n"},{"id":"409658","messageId":"20201111173738.GB9902@coredump.intra.peff.net","threadId":"45931","inReplyTo":"20201111151754.31527-1-avarab@gmail.com","subject":"Re: [PATCH 0/5] Remove now-unused git-parse-remote","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2020-11-11T17:37:38Z","receivedAt":"2020-11-11T17:37:44Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Wed, Nov 11, 2020 at 04:17:49PM +0100, Ævar Arnfjörð Bjarmason wrote:\n\n> I started poking at removing .git/branches from the default template,\n> which I had a patch for until I noticed Johannes's old[1] series.\n> \n> In any case, this is one thing that came out of that\n> investigation. The code we're keeping by moving it to git-submodule.sh\n> can also be replaced by some C code we have, but I wanted to leave\n> that to another submission (if I'll get to it), and make this simply a\n> code removal.\n\nI'm happy to see unused code go away in general, but this raises a\nquestion: what promises have we made to end-user scripts about this\nlibrary being available?\n\nWe do install it, including a manpage which claims you can do:\n\n  . \"$(git --exec-path)/git-parse-remote\"\n\nthough it does not actually document any particular functions being\navailable. It looks like we've removed functions before without warning\n(e.g., 1a92777504 (git-request-pull: open-code the only invocation of\nget_remote_url, 2011-03-01)).\n\nI'm just wondering if we need to have any kind of warning or deprecation\nperiod.\n\nTo be clear, I find it pretty unlikely that anybody is using the rather\nesoteric functions in this file, but that's usually when I get most\nsurprised. :)\n\n>  .gitignore                         |  1 -\n>  Documentation/git-parse-remote.txt | 23 -------\n>  Makefile                           |  2 -\n>  command-list.txt                   |  1 -\n>  git-parse-remote.sh                | 98 ------------------------------\n>  git-submodule.sh                   |  8 ++-\n>  6 files changed, 7 insertions(+), 126 deletions(-)\n>  delete mode 100644 Documentation/git-parse-remote.txt\n\nI expected to see a \"delete\" line for git-parse-remote.sh here. I\nthought at first maybe you were leaving the empty shell so that people\ncould continue to source it (keeping the promise in the manpage, but not\nproviding any actual functions). But it looks like the final patch stops\nbuilding it at all, leaving the now-useless source file.\n\n-Peff\n"},{"id":"409669","messageId":"xmqqa6vn4rpu.fsf@gitster.c.googlers.com","threadId":"45931","inReplyTo":"20201111173738.GB9902@coredump.intra.peff.net","subject":"Re: [PATCH 0/5] Remove now-unused git-parse-remote","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-11-11T19:29:49Z","receivedAt":"2020-11-11T19:29:57Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jeff King <peff@peff.net> writes:\n\n> To be clear, I find it pretty unlikely that anybody is using the rather\n> esoteric functions in this file, but that's usually when I get most\n> surprised. :)\n\nI had the same thought when we removed unused functions the last\ntime, but then stopped worrying about it for this particular shell\nlibrary ;-)\n\n> I expected to see a \"delete\" line for git-parse-remote.sh here. I\n> thought at first maybe you were leaving the empty shell so that people\n> could continue to source it (keeping the promise in the manpage, but not\n> providing any actual functions). But it looks like the final patch stops\n> building it at all, leaving the now-useless source file.\n\nA good point.  I do not mind to see a reroll to remove it at the\nend.\n"},{"id":"409761","messageId":"87a6vmhdka.fsf@evledraar.gmail.com","threadId":"45931","inReplyTo":"20201111173738.GB9902@coredump.intra.peff.net","subject":"Re: [PATCH 0/5] Remove now-unused git-parse-remote","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2020-11-12T14:09:25Z","receivedAt":"2020-11-12T14:09:30Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Wed, Nov 11 2020, Jeff King wrote:\n\n> On Wed, Nov 11, 2020 at 04:17:49PM +0100, Ævar Arnfjörð Bjarmason wrote:\n>\n>> I started poking at removing .git/branches from the default template,\n>> which I had a patch for until I noticed Johannes's old[1] series.\n>> \n>> In any case, this is one thing that came out of that\n>> investigation. The code we're keeping by moving it to git-submodule.sh\n>> can also be replaced by some C code we have, but I wanted to leave\n>> that to another submission (if I'll get to it), and make this simply a\n>> code removal.\n>\n> I'm happy to see unused code go away in general, but this raises a\n> question: what promises have we made to end-user scripts about this\n> library being available?\n>\n> We do install it, including a manpage which claims you can do:\n>\n>   . \"$(git --exec-path)/git-parse-remote\"\n>\n> though it does not actually document any particular functions being\n> available. It looks like we've removed functions before without warning\n> (e.g., 1a92777504 (git-request-pull: open-code the only invocation of\n> get_remote_url, 2011-03-01)).\n>\n> I'm just wondering if we need to have any kind of warning or deprecation\n> period.\n>\n> To be clear, I find it pretty unlikely that anybody is using the rather\n> esoteric functions in this file, but that's usually when I get most\n> surprised. :)\n\nI think it's fine to just remove it, I'll note that in a v2 commit\nmessage. I.e. the convention at the time was just to create these *.sh\nlibraries as documented, but I don't think anyone used them outside of\ngit.git.\n\nIf they did maybe we should move them to contrib and ... create the same\nbitrot as with the *.sh builtins :)\n\nSo I think it's better just to \"git rm\" it, if it breaks things for\nanyone they can just get the last version and maintain it themselves.\n\n>>  .gitignore                         |  1 -\n>>  Documentation/git-parse-remote.txt | 23 -------\n>>  Makefile                           |  2 -\n>>  command-list.txt                   |  1 -\n>>  git-parse-remote.sh                | 98 ------------------------------\n>>  git-submodule.sh                   |  8 ++-\n>>  6 files changed, 7 insertions(+), 126 deletions(-)\n>>  delete mode 100644 Documentation/git-parse-remote.txt\n>\n> I expected to see a \"delete\" line for git-parse-remote.sh here. I\n> thought at first maybe you were leaving the empty shell so that people\n> could continue to source it (keeping the promise in the manpage, but not\n> providing any actual functions). But it looks like the final patch stops\n> building it at all, leaving the now-useless source file.\n\nThat was just a mistake on my part, I meant to \"git rm\" it but\nforgot. Will fix it v2.\n"},{"id":"409762","messageId":"877dqqhd3s.fsf@evledraar.gmail.com","threadId":"45931","inReplyTo":"20201111151754.31527-1-avarab@gmail.com","subject":"How do I \"git fetch\" with a custom <refspec> but a default remote?","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2020-11-12T14:19:19Z","receivedAt":"2020-11-12T14:19:27Z","isPatch":false,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Wed, Nov 11 2020, Ævar Arnfjörð Bjarmason wrote:\n\n> In any case, this is one thing that came out of that\n> investigation. The code we're keeping by moving it to git-submodule.sh\n> can also be replaced by some C code we have, but I wanted to leave\n> that to another submission (if I'll get to it), and make this simply a\n> code removal.\n\nI may have missed a way to do $subject, but I don't think it's\npossible. The reason I want it is because git-submodule.sh does this:\n\n    git fetch $(get_default_remote) \"$@\" ;;\n\nWhere that shellscript function gets the name of the remote configured\nfor the current branch. If you do just a:\n\n    git fetch\n\nThen it will do the right thing, per its documentation:\n\n     When no remote is specified, by default the origin remote will be\n     used, unless there’s an upstream branch configured for the current\n     branch.\n\nBut git-submodule.sh wants to do:\n\n    git fetch <default-remote> <some-sha1>\n\nSo the caller is forced to find out what that is.\n\nI came up with this patch:\n    \n    diff --git a/builtin/fetch.c b/builtin/fetch.c\n    index f9c3c49f14..f110ac8d08 100644\n    --- a/builtin/fetch.c\n    +++ b/builtin/fetch.c\n    @@ -56,6 +56,7 @@ static int prune_tags = -1; /* unspecified */\n     #define PRUNE_TAGS_BY_DEFAULT 0 /* do we prune tags by default? */\n     \n     static int all, append, dry_run, force, keep, multiple, update_head_ok;\n    +static int default_remote;\n     static int write_fetch_head = 1;\n     static int verbosity, deepen_relative, set_upstream;\n     static int progress = -1;\n    @@ -140,6 +141,8 @@ static struct option builtin_fetch_options[] = {\n            OPT__VERBOSITY(&verbosity),\n            OPT_BOOL(0, \"all\", &all,\n                     N_(\"fetch from all remotes\")),\n    +       OPT_BOOL(0, \"default-remote\", &default_remote,\n    +                N_(\"fetch from default remote\")),\n            OPT_BOOL(0, \"set-upstream\", &set_upstream,\n                     N_(\"set upstream for git pull/fetch\")),\n            OPT_BOOL('a', \"append\", &append,\n    @@ -1852,7 +1855,7 @@ int cmd_fetch(int argc, const char **argv, const char *prefix)\n                    else if (argc > 1)\n                            die(_(\"fetch --all does not make sense with refspecs\"));\n                    (void) for_each_remote(get_one_remote_for_fetch, &list);\n    -       } else if (argc == 0) {\n    +       } else if (argc == 0 || default_remote) {\n                    /* No arguments -- use default remote */\n                    remote = remote_get(NULL);\n            } else if (multiple) {\n\nWhich allows me to do:\n\n    -               git fetch $(get_default_remote) \"$@\" ;;\n    +               git fetch --default-remote \"$@\" ;;\n\n\nSo it works, but what do we think about this calling convention? Do we\nhave any prior art for commands that take positional arguments like\n<remote> and <refspec> where you'd like to use a default for an earlier\nargument to provide a subsequent one?\n\nTo make it more general and consistent we'de probably like a --remote=*\nand --refspec arguments, so the invocation would be:\n\n    git fetch ([--remote=]<name> | --default-remote) [([--refspec=]<refspec> | --default-refspec)]\n\nBut maybe I'm overthinking it...\n\n"},{"id":"409785","messageId":"20201112184230.GC701197@coredump.intra.peff.net","threadId":"45931","inReplyTo":"87a6vmhdka.fsf@evledraar.gmail.com","subject":"Re: [PATCH 0/5] Remove now-unused git-parse-remote","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2020-11-12T18:42:30Z","receivedAt":"2020-11-12T18:42:33Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Thu, Nov 12, 2020 at 03:09:25PM +0100, Ævar Arnfjörð Bjarmason wrote:\n\n> > To be clear, I find it pretty unlikely that anybody is using the rather\n> > esoteric functions in this file, but that's usually when I get most\n> > surprised. :)\n> \n> I think it's fine to just remove it, I'll note that in a v2 commit\n> message. I.e. the convention at the time was just to create these *.sh\n> libraries as documented, but I don't think anyone used them outside of\n> git.git.\n\nOK. I'm fine with that interpretation as long as we are doing it\nconsciously. It might be worth noting in the release notes (not only the\nremoval here, but our general attitude towards these shell libraries).\n\n> If they did maybe we should move them to contrib and ... create the same\n> bitrot as with the *.sh builtins :)\n\nPlease no. :)\n\n> > I expected to see a \"delete\" line for git-parse-remote.sh here. I\n> > thought at first maybe you were leaving the empty shell so that people\n> > could continue to source it (keeping the promise in the manpage, but not\n> > providing any actual functions). But it looks like the final patch stops\n> > building it at all, leaving the now-useless source file.\n> \n> That was just a mistake on my part, I meant to \"git rm\" it but\n> forgot. Will fix it v2.\n\nMakes sense.\n\n-Peff\n"},{"id":"409786","messageId":"20201112185146.GD701197@coredump.intra.peff.net","threadId":"45931","inReplyTo":"877dqqhd3s.fsf@evledraar.gmail.com","subject":"Re: How do I \"git fetch\" with a custom <refspec> but a default remote?","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2020-11-12T18:51:46Z","receivedAt":"2020-11-12T18:51:49Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Thu, Nov 12, 2020 at 03:19:19PM +0100, Ævar Arnfjörð Bjarmason wrote:\n\n> On Wed, Nov 11 2020, Ævar Arnfjörð Bjarmason wrote:\n> \n> > In any case, this is one thing that came out of that\n> > investigation. The code we're keeping by moving it to git-submodule.sh\n> > can also be replaced by some C code we have, but I wanted to leave\n> > that to another submission (if I'll get to it), and make this simply a\n> > code removal.\n> \n> I may have missed a way to do $subject, but I don't think it's\n> possible.\n\nI'm pretty certain it's not. I've run into this before and looked for a\nsolution without finding one (in my case I was not scripting, but was\njust too lazy to type \"origin\").\n\n> I came up with this patch:\n> [...]\n> So it works, but what do we think about this calling convention? Do we\n> have any prior art for commands that take positional arguments like\n> <remote> and <refspec> where you'd like to use a default for an earlier\n> argument to provide a subsequent one?\n\nIt seems perfectly reasonable to me. The logic for parsing (that users\nmust understand) is: if --default-remote is specified, act as if the\ndefault remote was specified as the first argument.\n\nI can't think offhand of a case exactly like this, but certainly options\nlike \"git tag -d\" influences how the non-option arguments are parsed.\n\n> To make it more general and consistent we'de probably like a --remote=*\n> and --refspec arguments, so the invocation would be:\n> \n>     git fetch ([--remote=]<name> | --default-remote) [([--refspec=]<refspec> | --default-refspec)]\n> \n> But maybe I'm overthinking it...\n\nIf we were starting from scratch, then I think that might have been\nnicer, because --default-remote would be implied if there is no\n\"--remote\" option. And then my lazy-to-type:\n\n  git fetch topic\n\nwould just work. But given that we have the positional <remote>\nparameter already, I don't think adding --remote gives much value. And\nit raises the question of what \"git fetch --remote=foo --remote=bar\"\nmeans (I think the answer is last-one-wins).\n\nSlightly orthogonal, but I've occasionally also wished for:\n\n  git fetch @{upstream}\n\nor\n\n  git fetch @{push}\n\nto grab the latest copy of related branches. Those are a _bit_ funny in\nthat we usually resolve those names to the local tracking branch. But I\nthink the semantics are clear (we get to that tracking branch by\napplying fetch refspecs to a particular remote).\n\nI mention it only in case it gives you any bright ideas on how the\ncommand-line parsing would work there.\n\n-Peff\n"},{"id":"409788","messageId":"CAPx1Gvckixj2hj5wL8EPpJbnp4rsV7-qnVUCG1d-UAqVtp-H-Q@mail.gmail.com","threadId":"45931","inReplyTo":"20201112185146.GD701197@coredump.intra.peff.net","subject":"Re: How do I \"git fetch\" with a custom <refspec> but a default remote?","fromName":"Chris Torek","fromEmail":"chris.torek@gmail.com","sentAt":"2020-11-12T19:26:25Z","receivedAt":"2020-11-12T19:26:40Z","isPatch":false,"sender":{"key":"chris.torek@gmail.com","avatar":"https://avatars.githubusercontent.com/u/16826774?v=4"},"body":"On Thu, Nov 12, 2020 at 10:52 AM Jeff King <peff@peff.net> wrote:\n> If we were starting from scratch, then I think that might have been\n> nicer, because --default-remote would be implied if there is no\n> \"--remote\" option. And then my lazy-to-type:\n>\n>   git fetch topic\n>\n> would just work. But given that we have the positional <remote>\n> parameter already, I don't think adding --remote gives much value. And\n> it raises the question of what \"git fetch --remote=foo --remote=bar\"\n> means (I think the answer is last-one-wins).\n\nSince `git fetch` can fetch from more than one remote, it seems to me\nto make more sense to mean \"fetch from each\".\n\n(This isn't necessarily an argument in favor of adding these options,\njust my suggestion for what multiple `--remote=` settings would mean.)\n\nChris\n"},{"id":"409792","messageId":"20201112203155.3342586-1-gitster@pobox.com","threadId":"45931","inReplyTo":"xmqqwnyr4zv8.fsf@gitster.c.googlers.com","subject":"[PATCH v2 0/2] Retire git-parse-remote","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-11-12T20:31:53Z","receivedAt":"2020-11-12T20:32:06Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"This is based on Ævar's 5-patch series, which removed unused bits\nfrom git-parse-remote one by one, before finally moving the remnant\nto the only user to remove the file.\n\nEarlier I suggested an alternative arrangement of the series to just\nlift what is still in use and then discard the rest without even\nsplitting them out into separate commits---it is easy to see what's\nnot used by grepping for names of the helper functions.\n\nThe only difference in the end result is that git-parse-remote.sh file\nitself is also removed.\n\nÆvar Arnfjörð Bjarmason (2):\n  parse-remote: move used code to git-submodule.sh\n  parse-remote: remove this now-unused library\n\n .gitignore                         |   1 -\n Documentation/git-parse-remote.txt |  23 -------\n Makefile                           |   2 -\n command-list.txt                   |   1 -\n git-parse-remote.sh                | 101 -----------------------------\n git-submodule.sh                   |   8 ++-\n 6 files changed, 7 insertions(+), 129 deletions(-)\n delete mode 100644 Documentation/git-parse-remote.txt\n delete mode 100644 git-parse-remote.sh\n\nRange-diff against v1:\n1:  f8c1396d68 < -:  ---------- parse-remote: remove unused GIT_DIR variable\n2:  5f2dac99b8 < -:  ---------- parse-remote: remove long-dead rebase code\n3:  871a40c7e0 < -:  ---------- parse-remote: remove long-dead git-pull.sh code\n4:  17b0d43b65 ! 1:  8d8de925ea parse-remote: move used code to git-submodule.sh\n    @@ Metadata\n      ## Commit message ##\n         parse-remote: move used code to git-submodule.sh\n     \n    -    Move the only code in git-parse-remote.sh that was actually used to\n    -    git-submodule.sh.\n    +    Move the get_default_remote () helper from git-parse-remote.sh to\n    +    git-submodule.sh, as the latter is the only user.\n     \n    -    This leaves just a comment in git-parse-remote.sh for ease of review,\n    -    a later commit will remove it and its build system configuration.\n    +    There are two more helper functions, get_remote_merge_branch() and\n    +    error_on_missing_default_upstream(), in the git-parse-remote shell\n    +    function library, but they are not referenced by git-submodule.sh;\n    +    stop dot-sourcing the git-parse-remote.\n     \n         Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n         Signed-off-by: Junio C Hamano <gitster@pobox.com>\n     \n      ## git-parse-remote.sh ##\n     @@\n    - # This is a shell library to calculate the remote repository and\n    - # upstream branch that should be pulled by \"git pull\" from the current\n    - # branch.\n    --\n    + # this would fail in that case and would issue an error message.\n    + GIT_DIR=$(git rev-parse -q --git-dir) || :;\n    + \n     -get_default_remote () {\n     -\tcurr_branch=$(git symbolic-ref -q HEAD)\n     -\tcurr_branch=\"${curr_branch#refs/heads/}\"\n     -\torigin=$(git config --get \"branch.$curr_branch.remote\")\n     -\techo ${origin:-origin}\n     -}\n    +-\n    + get_remote_merge_branch () {\n    + \tcase \"$#\" in\n    + \t0|1)\n     \n      ## git-submodule.sh ##\n    +@@ git-submodule.sh: USAGE=\"[--quiet] [--cached]\n    + OPTIONS_SPEC=\n    + SUBDIRECTORY_OK=Yes\n    + . git-sh-setup\n    +-. git-parse-remote\n    + require_work_tree\n    + wt_prefix=$(git rev-parse --show-prefix)\n    + cd_to_toplevel\n     @@ git-submodule.sh: is_tip_reachable () (\n      \ttest -z \"$rev\"\n      )\n5:  1bda9e4479 ! 2:  a7520d32df parse-remote: remove this now-unused library\n    @@ Metadata\n      ## Commit message ##\n         parse-remote: remove this now-unused library\n     \n    -    Completely remove the git-parse-remote shellscript library.\n    -\n    -    Since e9460a66e0 (\"parse-remote: support default reflist in\n    -    get_remote_merge_branch\", 2009-06-12) when there were around 300 lines\n    -    of code here used by various core code everything in it has become\n    -    unsued, and that unused code was removed in preceding commits. Almost\n    -    all of its previous functionality has now been rewritten in C.\n    +    Since the previous step stopped dot-sourcing it from\n    +    git-submodule.sh, nothing uses git-parse-remote, which\n    +    still has two unused functions.  Remove the dead code\n    +    together with the file itself and documentation.\n     \n         Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n         Signed-off-by: Junio C Hamano <gitster@pobox.com>\n    @@ command-list.txt: git-p4                                  foreignscminterface\n      git-prune                               ancillarymanipulators   complete\n      git-prune-packed                        plumbingmanipulators\n     \n    - ## git-submodule.sh ##\n    -@@ git-submodule.sh: USAGE=\"[--quiet] [--cached]\n    - OPTIONS_SPEC=\n    - SUBDIRECTORY_OK=Yes\n    - . git-sh-setup\n    --. git-parse-remote\n    - require_work_tree\n    - wt_prefix=$(git rev-parse --show-prefix)\n    - cd_to_toplevel\n    + ## git-parse-remote.sh (deleted) ##\n    +@@\n    +-# This is a shell library to calculate the remote repository and\n    +-# upstream branch that should be pulled by \"git pull\" from the current\n    +-# branch.\n    +-\n    +-# git-ls-remote could be called from outside a git managed repository;\n    +-# this would fail in that case and would issue an error message.\n    +-GIT_DIR=$(git rev-parse -q --git-dir) || :;\n    +-\n    +-get_remote_merge_branch () {\n    +-\tcase \"$#\" in\n    +-\t0|1)\n    +-\t    origin=\"$1\"\n    +-\t    default=$(get_default_remote)\n    +-\t    test -z \"$origin\" && origin=$default\n    +-\t    curr_branch=$(git symbolic-ref -q HEAD) &&\n    +-\t    [ \"$origin\" = \"$default\" ] &&\n    +-\t    echo $(git for-each-ref --format='%(upstream)' $curr_branch)\n    +-\t    ;;\n    +-\t*)\n    +-\t    repo=$1\n    +-\t    shift\n    +-\t    ref=$1\n    +-\t    # FIXME: It should return the tracking branch\n    +-\t    #        Currently only works with the default mapping\n    +-\t    case \"$ref\" in\n    +-\t    +*)\n    +-\t\tref=$(expr \"z$ref\" : 'z+\\(.*\\)')\n    +-\t\t;;\n    +-\t    esac\n    +-\t    expr \"z$ref\" : 'z.*:' >/dev/null || ref=\"${ref}:\"\n    +-\t    remote=$(expr \"z$ref\" : 'z\\([^:]*\\):')\n    +-\t    case \"$remote\" in\n    +-\t    '' | HEAD ) remote=HEAD ;;\n    +-\t    heads/*) remote=${remote#heads/} ;;\n    +-\t    refs/heads/*) remote=${remote#refs/heads/} ;;\n    +-\t    refs/* | tags/* | remotes/* ) remote=\n    +-\t    esac\n    +-\t    [ -n \"$remote\" ] && case \"$repo\" in\n    +-\t\t.)\n    +-\t\t    echo \"refs/heads/$remote\"\n    +-\t\t    ;;\n    +-\t\t*)\n    +-\t\t    echo \"refs/remotes/$repo/$remote\"\n    +-\t\t    ;;\n    +-\t    esac\n    +-\tesac\n    +-}\n    +-\n    +-error_on_missing_default_upstream () {\n    +-\tcmd=\"$1\"\n    +-\top_type=\"$2\"\n    +-\top_prep=\"$3\" # FIXME: op_prep is no longer used\n    +-\texample=\"$4\"\n    +-\tbranch_name=$(git symbolic-ref -q HEAD)\n    +-\tdisplay_branch_name=\"${branch_name#refs/heads/}\"\n    +-\t# If there's only one remote, use that in the suggestion\n    +-\tremote=\"$(gettext \"<remote>\")\"\n    +-\tbranch=\"$(gettext \"<branch>\")\"\n    +-\tif test $(git remote | wc -l) = 1\n    +-\tthen\n    +-\t\tremote=$(git remote)\n    +-\tfi\n    +-\n    +-\tif test -z \"$branch_name\"\n    +-\tthen\n    +-\t\tgettextln \"You are not currently on a branch.\"\n    +-\telse\n    +-\t\tgettextln \"There is no tracking information for the current branch.\"\n    +-\tfi\n    +-\tcase \"$op_type\" in\n    +-\trebase)\n    +-\t\tgettextln \"Please specify which branch you want to rebase against.\"\n    +-\t\t;;\n    +-\tmerge)\n    +-\t\tgettextln \"Please specify which branch you want to merge with.\"\n    +-\t\t;;\n    +-\t*)\n    +-\t\techo >&2 \"BUG: unknown operation type: $op_type\"\n    +-\t\texit 1\n    +-\t\t;;\n    +-\tesac\n    +-\teval_gettextln \"See git-\\${cmd}(1) for details.\"\n    +-\techo\n    +-\techo \"    $example\"\n    +-\techo\n    +-\tif test -n \"$branch_name\"\n    +-\tthen\n    +-\t\tgettextln \"If you wish to set tracking information for this branch you can do so with:\"\n    +-\t\techo\n    +-\t\techo \"    git branch --set-upstream-to=$remote/$branch $display_branch_name\"\n    +-\t\techo\n    +-\tfi\n    +-\texit 1\n    +-}\n-- \n2.29.2-442-ga30192deef\n\n"},{"id":"409793","messageId":"20201112203155.3342586-2-gitster@pobox.com","threadId":"45931","inReplyTo":"20201112203155.3342586-1-gitster@pobox.com","subject":"[PATCH v2 1/2] parse-remote: move used code to git-submodule.sh","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-11-12T20:31:54Z","receivedAt":"2020-11-12T20:32:08Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"From: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n\nMove the get_default_remote () helper from git-parse-remote.sh to\ngit-submodule.sh, as the latter is the only user.\n\nThere are two more helper functions, get_remote_merge_branch() and\nerror_on_missing_default_upstream(), in the git-parse-remote shell\nfunction library, but they are not referenced by git-submodule.sh;\nstop dot-sourcing the git-parse-remote.\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>\n---\n git-parse-remote.sh | 7 -------\n git-submodule.sh    | 8 +++++++-\n 2 files changed, 7 insertions(+), 8 deletions(-)\n\ndiff --git a/git-parse-remote.sh b/git-parse-remote.sh\nindex d3c39980f3..0c2a5ef6c4 100644\n--- a/git-parse-remote.sh\n+++ b/git-parse-remote.sh\n@@ -6,13 +6,6 @@\n # this would fail in that case and would issue an error message.\n GIT_DIR=$(git rev-parse -q --git-dir) || :;\n \n-get_default_remote () {\n-\tcurr_branch=$(git symbolic-ref -q HEAD)\n-\tcurr_branch=\"${curr_branch#refs/heads/}\"\n-\torigin=$(git config --get \"branch.$curr_branch.remote\")\n-\techo ${origin:-origin}\n-}\n-\n get_remote_merge_branch () {\n \tcase \"$#\" in\n \t0|1)\ndiff --git a/git-submodule.sh b/git-submodule.sh\nindex 7ce52872b7..e7962e1a45 100755\n--- a/git-submodule.sh\n+++ b/git-submodule.sh\n@@ -20,7 +20,6 @@ USAGE=\"[--quiet] [--cached]\n OPTIONS_SPEC=\n SUBDIRECTORY_OK=Yes\n . git-sh-setup\n-. git-parse-remote\n require_work_tree\n wt_prefix=$(git rev-parse --show-prefix)\n cd_to_toplevel\n@@ -413,6 +412,13 @@ is_tip_reachable () (\n \ttest -z \"$rev\"\n )\n \n+get_default_remote () {\n+\tcurr_branch=$(git symbolic-ref -q HEAD)\n+\tcurr_branch=\"${curr_branch#refs/heads/}\"\n+\torigin=$(git config --get \"branch.$curr_branch.remote\")\n+\techo ${origin:-origin}\n+}\n+\n fetch_in_submodule () (\n \tsanitize_submodule_env &&\n \tcd \"$1\" &&\n-- \n2.29.2-442-ga30192deef\n\n"},{"id":"409794","messageId":"20201112203155.3342586-3-gitster@pobox.com","threadId":"45931","inReplyTo":"20201112203155.3342586-1-gitster@pobox.com","subject":"[PATCH v2 2/2] parse-remote: remove this now-unused library","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-11-12T20:31:55Z","receivedAt":"2020-11-12T20:32:14Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"From: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n\nSince the previous step stopped dot-sourcing it from\ngit-submodule.sh, nothing uses git-parse-remote, which\nstill has two unused functions.  Remove the dead code\ntogether with the file itself and documentation.\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>\n---\n .gitignore                         |  1 -\n Documentation/git-parse-remote.txt | 23 --------\n Makefile                           |  2 -\n command-list.txt                   |  1 -\n git-parse-remote.sh                | 94 ------------------------------\n 5 files changed, 121 deletions(-)\n delete mode 100644 Documentation/git-parse-remote.txt\n delete mode 100644 git-parse-remote.sh\n\ndiff --git a/.gitignore b/.gitignore\nindex 6232d33924..9da275e4e8 100644\n--- a/.gitignore\n+++ b/.gitignore\n@@ -114,7 +114,6 @@\n /git-pack-redundant\n /git-pack-objects\n /git-pack-refs\n-/git-parse-remote\n /git-patch-id\n /git-prune\n /git-prune-packed\ndiff --git a/Documentation/git-parse-remote.txt b/Documentation/git-parse-remote.txt\ndeleted file mode 100644\nindex a45ea1ece8..0000000000\n--- a/Documentation/git-parse-remote.txt\n+++ /dev/null\n@@ -1,23 +0,0 @@\n-git-parse-remote(1)\n-===================\n-\n-NAME\n-----\n-git-parse-remote - Routines to help parsing remote repository access parameters\n-\n-\n-SYNOPSIS\n---------\n-[verse]\n-'. \"$(git --exec-path)/git-parse-remote\"'\n-\n-DESCRIPTION\n------------\n-This script is included in various scripts to supply\n-routines to parse files under $GIT_DIR/remotes/ and\n-$GIT_DIR/branches/ and configuration variables that are related\n-to fetching, pulling and pushing.\n-\n-GIT\n----\n-Part of the linkgit:git[1] suite\ndiff --git a/Makefile b/Makefile\nindex 1fb0ec1705..9c154a2666 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -613,7 +613,6 @@ SCRIPT_SH += git-submodule.sh\n SCRIPT_SH += git-web--browse.sh\n \n SCRIPT_LIB += git-mergetool--lib\n-SCRIPT_LIB += git-parse-remote\n SCRIPT_LIB += git-rebase--preserve-merges\n SCRIPT_LIB += git-sh-i18n\n SCRIPT_LIB += git-sh-setup\n@@ -2577,7 +2576,6 @@ XGETTEXT_FLAGS_PERL = $(XGETTEXT_FLAGS) --language=Perl \\\n \t--keyword=__ --keyword=N__ --keyword=\"__n:1,2\"\n LOCALIZED_C = $(C_OBJ:o=c) $(LIB_H) $(GENERATED_H)\n LOCALIZED_SH = $(SCRIPT_SH)\n-LOCALIZED_SH += git-parse-remote.sh\n LOCALIZED_SH += git-rebase--preserve-merges.sh\n LOCALIZED_SH += git-sh-setup.sh\n LOCALIZED_PERL = $(SCRIPT_PERL)\ndiff --git a/command-list.txt b/command-list.txt\nindex 0e3204e7d1..c19c8a94fe 100644\n--- a/command-list.txt\n+++ b/command-list.txt\n@@ -135,7 +135,6 @@ git-p4                                  foreignscminterface\n git-pack-objects                        plumbingmanipulators\n git-pack-redundant                      plumbinginterrogators\n git-pack-refs                           ancillarymanipulators\n-git-parse-remote                        synchelpers\n git-patch-id                            purehelpers\n git-prune                               ancillarymanipulators   complete\n git-prune-packed                        plumbingmanipulators\ndiff --git a/git-parse-remote.sh b/git-parse-remote.sh\ndeleted file mode 100644\nindex 0c2a5ef6c4..0000000000\n--- a/git-parse-remote.sh\n+++ /dev/null\n@@ -1,94 +0,0 @@\n-# This is a shell library to calculate the remote repository and\n-# upstream branch that should be pulled by \"git pull\" from the current\n-# branch.\n-\n-# git-ls-remote could be called from outside a git managed repository;\n-# this would fail in that case and would issue an error message.\n-GIT_DIR=$(git rev-parse -q --git-dir) || :;\n-\n-get_remote_merge_branch () {\n-\tcase \"$#\" in\n-\t0|1)\n-\t    origin=\"$1\"\n-\t    default=$(get_default_remote)\n-\t    test -z \"$origin\" && origin=$default\n-\t    curr_branch=$(git symbolic-ref -q HEAD) &&\n-\t    [ \"$origin\" = \"$default\" ] &&\n-\t    echo $(git for-each-ref --format='%(upstream)' $curr_branch)\n-\t    ;;\n-\t*)\n-\t    repo=$1\n-\t    shift\n-\t    ref=$1\n-\t    # FIXME: It should return the tracking branch\n-\t    #        Currently only works with the default mapping\n-\t    case \"$ref\" in\n-\t    +*)\n-\t\tref=$(expr \"z$ref\" : 'z+\\(.*\\)')\n-\t\t;;\n-\t    esac\n-\t    expr \"z$ref\" : 'z.*:' >/dev/null || ref=\"${ref}:\"\n-\t    remote=$(expr \"z$ref\" : 'z\\([^:]*\\):')\n-\t    case \"$remote\" in\n-\t    '' | HEAD ) remote=HEAD ;;\n-\t    heads/*) remote=${remote#heads/} ;;\n-\t    refs/heads/*) remote=${remote#refs/heads/} ;;\n-\t    refs/* | tags/* | remotes/* ) remote=\n-\t    esac\n-\t    [ -n \"$remote\" ] && case \"$repo\" in\n-\t\t.)\n-\t\t    echo \"refs/heads/$remote\"\n-\t\t    ;;\n-\t\t*)\n-\t\t    echo \"refs/remotes/$repo/$remote\"\n-\t\t    ;;\n-\t    esac\n-\tesac\n-}\n-\n-error_on_missing_default_upstream () {\n-\tcmd=\"$1\"\n-\top_type=\"$2\"\n-\top_prep=\"$3\" # FIXME: op_prep is no longer used\n-\texample=\"$4\"\n-\tbranch_name=$(git symbolic-ref -q HEAD)\n-\tdisplay_branch_name=\"${branch_name#refs/heads/}\"\n-\t# If there's only one remote, use that in the suggestion\n-\tremote=\"$(gettext \"<remote>\")\"\n-\tbranch=\"$(gettext \"<branch>\")\"\n-\tif test $(git remote | wc -l) = 1\n-\tthen\n-\t\tremote=$(git remote)\n-\tfi\n-\n-\tif test -z \"$branch_name\"\n-\tthen\n-\t\tgettextln \"You are not currently on a branch.\"\n-\telse\n-\t\tgettextln \"There is no tracking information for the current branch.\"\n-\tfi\n-\tcase \"$op_type\" in\n-\trebase)\n-\t\tgettextln \"Please specify which branch you want to rebase against.\"\n-\t\t;;\n-\tmerge)\n-\t\tgettextln \"Please specify which branch you want to merge with.\"\n-\t\t;;\n-\t*)\n-\t\techo >&2 \"BUG: unknown operation type: $op_type\"\n-\t\texit 1\n-\t\t;;\n-\tesac\n-\teval_gettextln \"See git-\\${cmd}(1) for details.\"\n-\techo\n-\techo \"    $example\"\n-\techo\n-\tif test -n \"$branch_name\"\n-\tthen\n-\t\tgettextln \"If you wish to set tracking information for this branch you can do so with:\"\n-\t\techo\n-\t\techo \"    git branch --set-upstream-to=$remote/$branch $display_branch_name\"\n-\t\techo\n-\tfi\n-\texit 1\n-}\n-- \n2.29.2-442-ga30192deef\n\n"},{"id":"409796","messageId":"20201112204802.GA707750@coredump.intra.peff.net","threadId":"45931","inReplyTo":"CAPx1Gvckixj2hj5wL8EPpJbnp4rsV7-qnVUCG1d-UAqVtp-H-Q@mail.gmail.com","subject":"Re: How do I \"git fetch\" with a custom <refspec> but a default remote?","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2020-11-12T20:48:02Z","receivedAt":"2020-11-12T20:48:05Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Thu, Nov 12, 2020 at 11:26:25AM -0800, Chris Torek wrote:\n\n> On Thu, Nov 12, 2020 at 10:52 AM Jeff King <peff@peff.net> wrote:\n> > If we were starting from scratch, then I think that might have been\n> > nicer, because --default-remote would be implied if there is no\n> > \"--remote\" option. And then my lazy-to-type:\n> >\n> >   git fetch topic\n> >\n> > would just work. But given that we have the positional <remote>\n> > parameter already, I don't think adding --remote gives much value. And\n> > it raises the question of what \"git fetch --remote=foo --remote=bar\"\n> > means (I think the answer is last-one-wins).\n> \n> Since `git fetch` can fetch from more than one remote, it seems to me\n> to make more sense to mean \"fetch from each\".\n\nAh, right, I forgot that --multiple existed. Without it, specifying\nmultiple remotes makes no sense at all. But perhaps giving multiple\n--remote would implicitly specify \"--multiple\". That makes sense to me.\n\n> (This isn't necessarily an argument in favor of adding these options,\n> just my suggestion for what multiple `--remote=` settings would mean.)\n\nLikewise. \"makes sense\" above mostly means I would not object to it, but\nI am not advocating for it. :)\n\n-Peff\n"},{"id":"409797","messageId":"20201112204937.GB707750@coredump.intra.peff.net","threadId":"45931","inReplyTo":"20201112203155.3342586-1-gitster@pobox.com","subject":"Re: [PATCH v2 0/2] Retire git-parse-remote","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2020-11-12T20:49:37Z","receivedAt":"2020-11-12T20:49:40Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Thu, Nov 12, 2020 at 12:31:53PM -0800, Junio C Hamano wrote:\n\n> This is based on Ævar's 5-patch series, which removed unused bits\n> from git-parse-remote one by one, before finally moving the remnant\n> to the only user to remove the file.\n> \n> Earlier I suggested an alternative arrangement of the series to just\n> lift what is still in use and then discard the rest without even\n> splitting them out into separate commits---it is easy to see what's\n> not used by grepping for names of the helper functions.\n\nFWIW, this arrangement makes much more sense to me. But I am happy with\neither (as long as the file is fully deleted in the end ;) ).\n\n-Peff\n"},{"id":"409799","messageId":"xmqqeekycltx.fsf@gitster.c.googlers.com","threadId":"45931","inReplyTo":"20201112204802.GA707750@coredump.intra.peff.net","subject":"Re: How do I \"git fetch\" with a custom <refspec> but a default remote?","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-11-12T21:22:02Z","receivedAt":"2020-11-12T21:22:11Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jeff King <peff@peff.net> writes:\n\n> On Thu, Nov 12, 2020 at 11:26:25AM -0800, Chris Torek wrote:\n>\n>> On Thu, Nov 12, 2020 at 10:52 AM Jeff King <peff@peff.net> wrote:\n>> > If we were starting from scratch, then I think that might have been\n>> > nicer, because --default-remote would be implied if there is no\n>> > \"--remote\" option. And then my lazy-to-type:\n>> >\n>> >   git fetch topic\n>> >\n>> > would just work. But given that we have the positional <remote>\n>> > parameter already, I don't think adding --remote gives much value. And\n>> > it raises the question of what \"git fetch --remote=foo --remote=bar\"\n>> > means (I think the answer is last-one-wins).\n>> \n>> Since `git fetch` can fetch from more than one remote, it seems to me\n>> to make more sense to mean \"fetch from each\".\n>\n> Ah, right, I forgot that --multiple existed. Without it, specifying\n> multiple remotes makes no sense at all. But perhaps giving multiple\n> --remote would implicitly specify \"--multiple\". That makes sense to me.\n>\n>> (This isn't necessarily an argument in favor of adding these options,\n>> just my suggestion for what multiple `--remote=` settings would mean.)\n>\n> Likewise. \"makes sense\" above mostly means I would not object to it, but\n> I am not advocating for it. :)\n\nI am not sure if it makes much sense, though.\n\nThe \"--multiple\" mode of \"fetch\" is about running the default fetch\nagainst each of the named remotes and the idea does not mesh very\nwell with using (possibly different) fetch refspec per each of these\nfetch operations.\n\nWe could come up with the maximally flexible and orthogonal syntax\nthat gives the command one or more (remote, fetch refspec) tuples\nand give a way to say \"use the default remote\" for the first\ncomponent of the tuple, and a way to say \"use the configured way for\nthe remote\" for the second component of the tuple.  But at that\npoint, there would just be a single syntax that can be used to drive\nfetches from multiple repositories, so...\n\n\n\n"},{"id":"409800","messageId":"xmqqa6vmclne.fsf@gitster.c.googlers.com","threadId":"45931","inReplyTo":"20201112204937.GB707750@coredump.intra.peff.net","subject":"Re: [PATCH v2 0/2] Retire git-parse-remote","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-11-12T21:25:57Z","receivedAt":"2020-11-12T21:26:05Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jeff King <peff@peff.net> writes:\n\n> On Thu, Nov 12, 2020 at 12:31:53PM -0800, Junio C Hamano wrote:\n>\n>> This is based on Ævar's 5-patch series, which removed unused bits\n>> from git-parse-remote one by one, before finally moving the remnant\n>> to the only user to remove the file.\n>> \n>> Earlier I suggested an alternative arrangement of the series to just\n>> lift what is still in use and then discard the rest without even\n>> splitting them out into separate commits---it is easy to see what's\n>> not used by grepping for names of the helper functions.\n>\n> FWIW, this arrangement makes much more sense to me. But I am happy with\n> either (as long as the file is fully deleted in the end ;) ).\n\nYeah, one thing I screwed up was that I moved and not copied the\nstill-used helper in [1/2].  For that to be a sensible change, we\nmust know nobody uses the helper from git-parse-remote but the\nexplanation for it would say that nothing dot-sources it and at that\npoint there is no point to have these changes in two patches ;-)\n\nBut as long as the endgame state is sensible, it does not make too\nmuch of a difference.\n"},{"id":"409861","messageId":"87y2j5fv8k.fsf@evledraar.gmail.com","threadId":"45931","inReplyTo":"20201112203155.3342586-1-gitster@pobox.com","subject":"Re: [PATCH v2 0/2] Retire git-parse-remote","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2020-11-13T09:42:51Z","receivedAt":"2020-11-13T09:42:58Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Thu, Nov 12 2020, Junio C Hamano wrote:\n\n> This is based on Ævar's 5-patch series, which removed unused bits\n> from git-parse-remote one by one, before finally moving the remnant\n> to the only user to remove the file.\n\nI was planning to re-roll this myself today, but I see you beat me to\nit. This version looks good to me.\n\n"},{"id":"409949","messageId":"87eekwf87n.fsf@evledraar.gmail.com","threadId":"45931","inReplyTo":"877dqqhd3s.fsf@evledraar.gmail.com","subject":"Re: How do I \"git fetch\" with a custom <refspec> but a default remote?","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2020-11-14T12:12:28Z","receivedAt":"2020-11-14T12:12:57Z","isPatch":false,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Thu, Nov 12 2020, Ævar Arnfjörð Bjarmason wrote:\n\n> On Wed, Nov 11 2020, Ævar Arnfjörð Bjarmason wrote:\n>\n>> In any case, this is one thing that came out of that\n>> investigation. The code we're keeping by moving it to git-submodule.sh\n>> can also be replaced by some C code we have, but I wanted to leave\n>> that to another submission (if I'll get to it), and make this simply a\n>> code removal.\n>\n> I may have missed a way to do $subject, but I don't think it's\n> possible. The reason I want it is because git-submodule.sh does this:\n>\n>     git fetch $(get_default_remote) \"$@\" ;;\n>\n> Where that shellscript function gets the name of the remote configured\n> for the current branch. If you do just a:\n>\n>     git fetch\n>\n> Then it will do the right thing, per its documentation:\n>\n>      When no remote is specified, by default the origin remote will be\n>      used, unless there’s an upstream branch configured for the current\n>      branch.\n>\n> But git-submodule.sh wants to do:\n>\n>     git fetch <default-remote> <some-sha1>\n>\n> So the caller is forced to find out what that is.\n>\n> I came up with this patch:\n>     \n>     diff --git a/builtin/fetch.c b/builtin/fetch.c\n>     index f9c3c49f14..f110ac8d08 100644\n>     --- a/builtin/fetch.c\n>     +++ b/builtin/fetch.c\n>     @@ -56,6 +56,7 @@ static int prune_tags = -1; /* unspecified */\n>      #define PRUNE_TAGS_BY_DEFAULT 0 /* do we prune tags by default? */\n>      \n>      static int all, append, dry_run, force, keep, multiple, update_head_ok;\n>     +static int default_remote;\n>      static int write_fetch_head = 1;\n>      static int verbosity, deepen_relative, set_upstream;\n>      static int progress = -1;\n>     @@ -140,6 +141,8 @@ static struct option builtin_fetch_options[] = {\n>             OPT__VERBOSITY(&verbosity),\n>             OPT_BOOL(0, \"all\", &all,\n>                      N_(\"fetch from all remotes\")),\n>     +       OPT_BOOL(0, \"default-remote\", &default_remote,\n>     +                N_(\"fetch from default remote\")),\n>             OPT_BOOL(0, \"set-upstream\", &set_upstream,\n>                      N_(\"set upstream for git pull/fetch\")),\n>             OPT_BOOL('a', \"append\", &append,\n>     @@ -1852,7 +1855,7 @@ int cmd_fetch(int argc, const char **argv, const char *prefix)\n>                     else if (argc > 1)\n>                             die(_(\"fetch --all does not make sense with refspecs\"));\n>                     (void) for_each_remote(get_one_remote_for_fetch, &list);\n>     -       } else if (argc == 0) {\n>     +       } else if (argc == 0 || default_remote) {\n>                     /* No arguments -- use default remote */\n>                     remote = remote_get(NULL);\n>             } else if (multiple) {\n>\n> Which allows me to do:\n>\n>     -               git fetch $(get_default_remote) \"$@\" ;;\n>     +               git fetch --default-remote \"$@\" ;;\n>\n>\n> So it works, but what do we think about this calling convention? Do we\n> have any prior art for commands that take positional arguments like\n> <remote> and <refspec> where you'd like to use a default for an earlier\n> argument to provide a subsequent one?\n>\n> To make it more general and consistent we'de probably like a --remote=*\n> and --refspec arguments, so the invocation would be:\n>\n>     git fetch ([--remote=]<name> | --default-remote) [([--refspec=]<refspec> | --default-refspec)]\n>\n> But maybe I'm overthinking it...\n\nTo reply to my own question, this is possible with the --stdin option:\n\n    echo <refpec> | git fetch --stdin\n\nSee 2b713c272c (\"fetch: allow refspecs specified through stdin\",\n2020-08-17)[1].\n\n1. https://lore.kernel.org/git/9f277f1631a37785dcd72a552dd86738d639ea59.1597722942.git.jonathantanmy@google.com/\n"},{"id":"409950","messageId":"20201114122132.4344-1-avarab@gmail.com","threadId":"45931","inReplyTo":"20201112203155.3342586-1-gitster@pobox.com","subject":"[PATCH v3 0/3] submodule sh->C & retire parse-remote","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2020-11-14T12:21:29Z","receivedAt":"2020-11-14T12:22:14Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"From my 5 commits to remove it in v1, to Junio's 2 commits in v2, to\njust one in this series :)\n\nThe removal is now simplified by changing the submodule code to invoke\nC helpers instead of this old shellscript code. As a result 3/3 is\njust a plain removal without needing to move any code to\ngit-submodule.sh.\n\nÆvar Arnfjörð Bjarmason (3):\n  submodule: use \"fetch\" logic instead of custom remote discovery\n  submodule: remove sh function in favor of helper\n  parse-remote: remove this now-unused library\n\n .gitignore                         |   1 -\n Documentation/git-parse-remote.txt |  23 -------\n Makefile                           |   2 -\n command-list.txt                   |   1 -\n git-parse-remote.sh                | 101 -----------------------------\n git-submodule.sh                   |  19 +++---\n 6 files changed, 10 insertions(+), 137 deletions(-)\n delete mode 100644 Documentation/git-parse-remote.txt\n delete mode 100644 git-parse-remote.sh\n\n-- \n2.29.2.222.g5d2a92d10f8\n\n"},{"id":"409951","messageId":"20201114122132.4344-2-avarab@gmail.com","threadId":"45931","inReplyTo":"20201112203155.3342586-1-gitster@pobox.com","subject":"[PATCH v3 1/3] submodule: use \"fetch\" logic instead of custom remote discovery","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2020-11-14T12:21:30Z","receivedAt":"2020-11-14T12:22:14Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"Replace a use of the get_default_remote() function with an invocation\nof \"git fetch\"\n\nThe \"fetch\" command already has logic to discover the remote for the\ncurrent branch. However, before it learned to accept a custom\nrefspec *and* use its idea of the default remote, it wasn't possible\nto get rid of some equivalent of the \"get_default_remote\" invocation\nhere.\n\nAs it turns out the recently added \"--stdin\" option to fetch[1] gives\nus a way to do that. Let's use it instead.\n\nWhile I'm at it simplify the \"fetch_in_submodule\" function. It wasn't\nnecessary to pass \"$@\" to \"fetch\" since we'd only ever provide one\nSHA-1 as an argument in the previous \"*\" codepath (in addition to\n\"--depth=N\"). Rewrite the function to more narrowly reflect its\nuse-case.\n\n1. https://lore.kernel.org/git/87eekwf87n.fsf@evledraar.gmail.com/\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n---\n git-submodule.sh | 16 +++++++++-------\n 1 file changed, 9 insertions(+), 7 deletions(-)\n\ndiff --git a/git-submodule.sh b/git-submodule.sh\nindex 7ce52872b7..d39fd226d8 100755\n--- a/git-submodule.sh\n+++ b/git-submodule.sh\n@@ -416,13 +416,15 @@ is_tip_reachable () (\n fetch_in_submodule () (\n \tsanitize_submodule_env &&\n \tcd \"$1\" &&\n-\tcase \"$2\" in\n-\t'')\n-\t\tgit fetch ;;\n-\t*)\n-\t\tshift\n-\t\tgit fetch $(get_default_remote) \"$@\" ;;\n-\tesac\n+\tif test $# -eq 3\n+\tthen\n+\t\techo \"$3\" | git fetch --stdin \"$2\"\n+\telif test \"$2\" -ne \"\"\n+\tthen\n+\t\tgit fetch \"$2\"\n+\telse\n+\t\tgit fetch\n+\tfi\n )\n \n #\n-- \n2.29.2.222.g5d2a92d10f8\n\n"},{"id":"409952","messageId":"20201114122132.4344-4-avarab@gmail.com","threadId":"45931","inReplyTo":"20201112203155.3342586-1-gitster@pobox.com","subject":"[PATCH v3 3/3] parse-remote: remove this now-unused library","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2020-11-14T12:21:32Z","receivedAt":"2020-11-14T12:22:14Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"The previous two commits removed the last use of a function in this\nlibrary, but most of it had been dead code for a while[1][2]. Only the\n\"get_default_remote\" function was still being used.\n\nEven though we had a manual page for this library it was never\nintended (or I expect, actually) used outside of git.git. Let's just\nremove it, if anyone still cares about a function here they can pull\nthem into their own project[3].\n\n1. Last use of error_on_missing_default_upstream():\n   d03ebd411c (\"rebase: remove the rebase.useBuiltin setting\",\n   2019-03-18)\n\n2. Last use of get_remote_merge_branch(): 49eb8d39c7 (\"Remove\n   contrib/examples/*\", 2018-03-25)\n\n3. https://lore.kernel.org/git/87a6vmhdka.fsf@evledraar.gmail.com/\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>\n---\n .gitignore                         |   1 -\n Documentation/git-parse-remote.txt |  23 -------\n Makefile                           |   2 -\n command-list.txt                   |   1 -\n git-parse-remote.sh                | 101 -----------------------------\n git-submodule.sh                   |   1 -\n 6 files changed, 129 deletions(-)\n delete mode 100644 Documentation/git-parse-remote.txt\n delete mode 100644 git-parse-remote.sh\n\ndiff --git a/.gitignore b/.gitignore\nindex 6232d33924..9da275e4e8 100644\n--- a/.gitignore\n+++ b/.gitignore\n@@ -114,7 +114,6 @@\n /git-pack-redundant\n /git-pack-objects\n /git-pack-refs\n-/git-parse-remote\n /git-patch-id\n /git-prune\n /git-prune-packed\ndiff --git a/Documentation/git-parse-remote.txt b/Documentation/git-parse-remote.txt\ndeleted file mode 100644\nindex a45ea1ece8..0000000000\n--- a/Documentation/git-parse-remote.txt\n+++ /dev/null\n@@ -1,23 +0,0 @@\n-git-parse-remote(1)\n-===================\n-\n-NAME\n-----\n-git-parse-remote - Routines to help parsing remote repository access parameters\n-\n-\n-SYNOPSIS\n---------\n-[verse]\n-'. \"$(git --exec-path)/git-parse-remote\"'\n-\n-DESCRIPTION\n------------\n-This script is included in various scripts to supply\n-routines to parse files under $GIT_DIR/remotes/ and\n-$GIT_DIR/branches/ and configuration variables that are related\n-to fetching, pulling and pushing.\n-\n-GIT\n----\n-Part of the linkgit:git[1] suite\ndiff --git a/Makefile b/Makefile\nindex 790a883932..c874dff9b8 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -613,7 +613,6 @@ SCRIPT_SH += git-submodule.sh\n SCRIPT_SH += git-web--browse.sh\n \n SCRIPT_LIB += git-mergetool--lib\n-SCRIPT_LIB += git-parse-remote\n SCRIPT_LIB += git-rebase--preserve-merges\n SCRIPT_LIB += git-sh-i18n\n SCRIPT_LIB += git-sh-setup\n@@ -2577,7 +2576,6 @@ XGETTEXT_FLAGS_PERL = $(XGETTEXT_FLAGS) --language=Perl \\\n \t--keyword=__ --keyword=N__ --keyword=\"__n:1,2\"\n LOCALIZED_C = $(C_OBJ:o=c) $(LIB_H) $(GENERATED_H)\n LOCALIZED_SH = $(SCRIPT_SH)\n-LOCALIZED_SH += git-parse-remote.sh\n LOCALIZED_SH += git-rebase--preserve-merges.sh\n LOCALIZED_SH += git-sh-setup.sh\n LOCALIZED_PERL = $(SCRIPT_PERL)\ndiff --git a/command-list.txt b/command-list.txt\nindex 0e3204e7d1..c19c8a94fe 100644\n--- a/command-list.txt\n+++ b/command-list.txt\n@@ -135,7 +135,6 @@ git-p4                                  foreignscminterface\n git-pack-objects                        plumbingmanipulators\n git-pack-redundant                      plumbinginterrogators\n git-pack-refs                           ancillarymanipulators\n-git-parse-remote                        synchelpers\n git-patch-id                            purehelpers\n git-prune                               ancillarymanipulators   complete\n git-prune-packed                        plumbingmanipulators\ndiff --git a/git-parse-remote.sh b/git-parse-remote.sh\ndeleted file mode 100644\nindex d3c39980f3..0000000000\n--- a/git-parse-remote.sh\n+++ /dev/null\n@@ -1,101 +0,0 @@\n-# This is a shell library to calculate the remote repository and\n-# upstream branch that should be pulled by \"git pull\" from the current\n-# branch.\n-\n-# git-ls-remote could be called from outside a git managed repository;\n-# this would fail in that case and would issue an error message.\n-GIT_DIR=$(git rev-parse -q --git-dir) || :;\n-\n-get_default_remote () {\n-\tcurr_branch=$(git symbolic-ref -q HEAD)\n-\tcurr_branch=\"${curr_branch#refs/heads/}\"\n-\torigin=$(git config --get \"branch.$curr_branch.remote\")\n-\techo ${origin:-origin}\n-}\n-\n-get_remote_merge_branch () {\n-\tcase \"$#\" in\n-\t0|1)\n-\t    origin=\"$1\"\n-\t    default=$(get_default_remote)\n-\t    test -z \"$origin\" && origin=$default\n-\t    curr_branch=$(git symbolic-ref -q HEAD) &&\n-\t    [ \"$origin\" = \"$default\" ] &&\n-\t    echo $(git for-each-ref --format='%(upstream)' $curr_branch)\n-\t    ;;\n-\t*)\n-\t    repo=$1\n-\t    shift\n-\t    ref=$1\n-\t    # FIXME: It should return the tracking branch\n-\t    #        Currently only works with the default mapping\n-\t    case \"$ref\" in\n-\t    +*)\n-\t\tref=$(expr \"z$ref\" : 'z+\\(.*\\)')\n-\t\t;;\n-\t    esac\n-\t    expr \"z$ref\" : 'z.*:' >/dev/null || ref=\"${ref}:\"\n-\t    remote=$(expr \"z$ref\" : 'z\\([^:]*\\):')\n-\t    case \"$remote\" in\n-\t    '' | HEAD ) remote=HEAD ;;\n-\t    heads/*) remote=${remote#heads/} ;;\n-\t    refs/heads/*) remote=${remote#refs/heads/} ;;\n-\t    refs/* | tags/* | remotes/* ) remote=\n-\t    esac\n-\t    [ -n \"$remote\" ] && case \"$repo\" in\n-\t\t.)\n-\t\t    echo \"refs/heads/$remote\"\n-\t\t    ;;\n-\t\t*)\n-\t\t    echo \"refs/remotes/$repo/$remote\"\n-\t\t    ;;\n-\t    esac\n-\tesac\n-}\n-\n-error_on_missing_default_upstream () {\n-\tcmd=\"$1\"\n-\top_type=\"$2\"\n-\top_prep=\"$3\" # FIXME: op_prep is no longer used\n-\texample=\"$4\"\n-\tbranch_name=$(git symbolic-ref -q HEAD)\n-\tdisplay_branch_name=\"${branch_name#refs/heads/}\"\n-\t# If there's only one remote, use that in the suggestion\n-\tremote=\"$(gettext \"<remote>\")\"\n-\tbranch=\"$(gettext \"<branch>\")\"\n-\tif test $(git remote | wc -l) = 1\n-\tthen\n-\t\tremote=$(git remote)\n-\tfi\n-\n-\tif test -z \"$branch_name\"\n-\tthen\n-\t\tgettextln \"You are not currently on a branch.\"\n-\telse\n-\t\tgettextln \"There is no tracking information for the current branch.\"\n-\tfi\n-\tcase \"$op_type\" in\n-\trebase)\n-\t\tgettextln \"Please specify which branch you want to rebase against.\"\n-\t\t;;\n-\tmerge)\n-\t\tgettextln \"Please specify which branch you want to merge with.\"\n-\t\t;;\n-\t*)\n-\t\techo >&2 \"BUG: unknown operation type: $op_type\"\n-\t\texit 1\n-\t\t;;\n-\tesac\n-\teval_gettextln \"See git-\\${cmd}(1) for details.\"\n-\techo\n-\techo \"    $example\"\n-\techo\n-\tif test -n \"$branch_name\"\n-\tthen\n-\t\tgettextln \"If you wish to set tracking information for this branch you can do so with:\"\n-\t\techo\n-\t\techo \"    git branch --set-upstream-to=$remote/$branch $display_branch_name\"\n-\t\techo\n-\tfi\n-\texit 1\n-}\ndiff --git a/git-submodule.sh b/git-submodule.sh\nindex d39a28215c..86ad60c05c 100755\n--- a/git-submodule.sh\n+++ b/git-submodule.sh\n@@ -20,7 +20,6 @@ USAGE=\"[--quiet] [--cached]\n OPTIONS_SPEC=\n SUBDIRECTORY_OK=Yes\n . git-sh-setup\n-. git-parse-remote\n require_work_tree\n wt_prefix=$(git rev-parse --show-prefix)\n cd_to_toplevel\n-- \n2.29.2.222.g5d2a92d10f8\n\n"},{"id":"409953","messageId":"20201114122132.4344-3-avarab@gmail.com","threadId":"45931","inReplyTo":"20201112203155.3342586-1-gitster@pobox.com","subject":"[PATCH v3 2/3] submodule: remove sh function in favor of helper","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2020-11-14T12:21:31Z","receivedAt":"2020-11-14T12:22:14Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"Remove the now-redundant \"get_default_remote\" function by converting\nits last user to the \"print-default-remote\" helper.\n\nAs can be seen in 13424764db (\"submodule: port submodule subcommand\n'sync' from shell to C\", 2018-01-15) this helper is already used\ninternally by the C code for submodule remote name discovery.\n\nThe \"get_default_remote\" function in \"git-parse-remote.sh\" will be\nremoved in a follow-up change.\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n---\n git-submodule.sh | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/git-submodule.sh b/git-submodule.sh\nindex d39fd226d8..d39a28215c 100755\n--- a/git-submodule.sh\n+++ b/git-submodule.sh\n@@ -578,7 +578,7 @@ cmd_update()\n \t\t\t\tfetch_in_submodule \"$sm_path\" $depth ||\n \t\t\t\tdie \"$(eval_gettext \"Unable to fetch in submodule path '\\$sm_path'\")\"\n \t\t\tfi\n-\t\t\tremote_name=$(sanitize_submodule_env; cd \"$sm_path\" && get_default_remote)\n+\t\t\tremote_name=$(sanitize_submodule_env; cd \"$sm_path\" && git submodule--helper print-default-remote)\n \t\t\tsha1=$(sanitize_submodule_env; cd \"$sm_path\" &&\n \t\t\t\tgit rev-parse --verify \"${remote_name}/${branch}\") ||\n \t\t\tdie \"$(eval_gettext \"Unable to find current \\${remote_name}/\\${branch} revision in submodule path '\\$sm_path'\")\"\n-- \n2.29.2.222.g5d2a92d10f8\n\n"},{"id":"410042","messageId":"xmqqa6vh80pq.fsf@gitster.c.googlers.com","threadId":"45931","inReplyTo":"20201114122132.4344-2-avarab@gmail.com","subject":"Re: [PATCH v3 1/3] submodule: use \"fetch\" logic instead of custom remote discovery","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-11-16T21:13:05Z","receivedAt":"2020-11-16T21:13:34Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Ævar Arnfjörð Bjarmason  <avarab@gmail.com> writes:\n\n> Replace a use of the get_default_remote() function with an invocation\n> of \"git fetch\"\n>\n> The \"fetch\" command already has logic to discover the remote for the\n> current branch. However, before it learned to accept a custom\n> refspec *and* use its idea of the default remote, it wasn't possible\n> to get rid of some equivalent of the \"get_default_remote\" invocation\n> here.\n>\n> As it turns out the recently added \"--stdin\" option to fetch[1] gives\n> us a way to do that. Let's use it instead.\n\nAh, that was what your earlier question was about.\n\nThe hits from \"git grep fetch_in_submodule\" says that $1 is the path\nto the submodule, $2 is the $depth and $3 (when exists) is the\nobject name of what we are fetching:\n\ngit-submodule.sh:578:\tfetch_in_submodule \"$sm_path\" $depth ||\ngit-submodule.sh:601:\tfetch_in_submodule \"$sm_path\" $depth ||\ngit-submodule.sh:607:\tfetch_in_submodule \"$sm_path\" $depth \"$sha1\" ||\n\n> While I'm at it simplify the \"fetch_in_submodule\" function. It wasn't\n> necessary to pass \"$@\" to \"fetch\" since we'd only ever provide one\n> SHA-1 as an argument in the previous \"*\" codepath (in addition to\n> \"--depth=N\"). Rewrite the function to more narrowly reflect its\n> use-case.\n\n>  \tcd \"$1\" &&\n> -\tcase \"$2\" in\n> -\t'')\n> -\t\tgit fetch ;;\n> -\t*)\n> -\t\tshift\n> -\t\tgit fetch $(get_default_remote) \"$@\" ;;\n> -\tesac\n\nSo when $2 (i.e. --depth=N) is empty, we just did the default \"git\nfetch\".  Otherwise, \"git fetch <remote> --depth=N [<sha1>]\" was run.\n\n> +\tif test $# -eq 3\n> +\tthen\n> +\t\techo \"$3\" | git fetch --stdin \"$2\"\n\nThis is not quite equivalent in that an empty depth would have\nresulted in the default \"git fetch\" in the original code, with or\nwithout \"$3\", totally ignoring \"$sha1\".  Is this a bugfix snuck in\n\"while we are at it\", or is this an unintended regression?\n\n> +\telif test \"$2\" -ne \"\"\n> +\tthen\n> +\t\tgit fetch \"$2\"\n> +\telse\n> +\t\tgit fetch\n> +\tfi\n\nEven if it is an unintended regression, fixing it should be trivial;\nwe just need to flip the order of conditions, like so:\n\n\tif test -z \"$2\"\n\tthen\n\t\tgit fetch\n\telif test $# = 3\n\tthen\n\t\techo \"$3\" | git fetch --stdin \"$2\"\n\telse\n\t\tgit fetch \"$2\"\n\tfi\n\n"},{"id":"410043","messageId":"xmqq4klp80ff.fsf@gitster.c.googlers.com","threadId":"45931","inReplyTo":"20201114122132.4344-4-avarab@gmail.com","subject":"Re: [PATCH v3 3/3] parse-remote: remove this now-unused library","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-11-16T21:19:16Z","receivedAt":"2020-11-16T21:19:45Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Ævar Arnfjörð Bjarmason  <avarab@gmail.com> writes:\n\n> The previous two commits removed the last use of a function in this\n> library, but most of it had been dead code for a while[1][2]. Only the\n> \"get_default_remote\" function was still being used.\n\nYup.  ... still being used, but now it is gone.\n\n> Even though we had a manual page for this library it was never\n> intended (or I expect, actually) used outside of git.git. Let's just\n> remove it, if anyone still cares about a function here they can pull\n> them into their own project[3].\n>\n> 1. Last use of error_on_missing_default_upstream():\n>    d03ebd411c (\"rebase: remove the rebase.useBuiltin setting\",\n>    2019-03-18)\n>\n> 2. Last use of get_remote_merge_branch(): 49eb8d39c7 (\"Remove\n>    contrib/examples/*\", 2018-03-25)\n>\n> 3. https://lore.kernel.org/git/87a6vmhdka.fsf@evledraar.gmail.com/\n\nI am not sure why we even need reference [3] here.  \n\nIsn't it another mailing list article where you express your opinion\n\"they can dig our old version and copy it to their project\", which\nis the same statement you are making in this proposed log message?\n\nAre we saying \"we said the same thing on the list before, which is\nstronger truth than the claim in this proposed log message\"?\n\nThe removal of unused file is quite welcome.\n\nThanks.\n"},{"id":"410082","messageId":"87zh3gdps6.fsf@evledraar.gmail.com","threadId":"45931","inReplyTo":"xmqq4klp80ff.fsf@gitster.c.googlers.com","subject":"Re: [PATCH v3 3/3] parse-remote: remove this now-unused library","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2020-11-17T14:24:57Z","receivedAt":"2020-11-17T14:25:02Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Mon, Nov 16 2020, Junio C Hamano wrote:\n\n> Ævar Arnfjörð Bjarmason  <avarab@gmail.com> writes:\n>\n>> The previous two commits removed the last use of a function in this\n>> library, but most of it had been dead code for a while[1][2]. Only the\n>> \"get_default_remote\" function was still being used.\n>\n> Yup.  ... still being used, but now it is gone.\n>\n>> Even though we had a manual page for this library it was never\n>> intended (or I expect, actually) used outside of git.git. Let's just\n>> remove it, if anyone still cares about a function here they can pull\n>> them into their own project[3].\n>>\n>> 1. Last use of error_on_missing_default_upstream():\n>>    d03ebd411c (\"rebase: remove the rebase.useBuiltin setting\",\n>>    2019-03-18)\n>>\n>> 2. Last use of get_remote_merge_branch(): 49eb8d39c7 (\"Remove\n>>    contrib/examples/*\", 2018-03-25)\n>>\n>> 3. https://lore.kernel.org/git/87a6vmhdka.fsf@evledraar.gmail.com/\n>\n> I am not sure why we even need reference [3] here.  \n>\n> Isn't it another mailing list article where you express your opinion\n> \"they can dig our old version and copy it to their project\", which\n> is the same statement you are making in this proposed log message?\n>\n> Are we saying \"we said the same thing on the list before, which is\n> stronger truth than the claim in this proposed log message\"?\n\nI was aiming for answering the question of \"why didn't he just move it\nto contrib/?\" by adding an (it seems too much of an indirect) reference\nto contrib/examples/, without going into that whole saga again in the\ncommit message itself.\n"}]}