From: Patrick Steinhardt Date: Wed, 22 Jan 2025 11:31:28 GMT Subject: [PATCH v4 0/5] remote: announce removal of "branches/" and "remotes/" Message-ID: <20250122-pks-remote-branches-deprecation-v4-0-5cbf5b28afd5@pks.im> In-Reply-To: <20241211-pks-remote-branches-deprecation-v1-0-1431e2369135@pks.im> Hi, back when Git was in its infancy, remotes were configured via separate files in "branches/" (back in 2005). Later that year we introduced a more powerful mechanism with the "remotes/" directory. These mechanism have eventually been superseded by config-based remotes, and it is very unlikely that anybody still uses these directories to configure their remotes. Both of these directories have been marked as deprecated, one in 2005 and the other one in 2011. This patch series follows through with the deprecation of these and announces them for removal in Git 3.0. Furthermore, it creates the infra to compile Git with such breaking changes enabled and wires up a CI job both for GitHub and GitLab to test those breaking changes. The series is based on top caacdb5dfd (The fifteenth batch, 2024-12-10) with ps/build at 904339edbd (Introduce support for the Meson build system, 2024-12-06) merged into it. Changes in v2: - Some small fixes to the deprecation notice of "branches/" and "remotes/". - Some small fixes to commit messages. - Link to v1: https://lore.kernel.org/r/20241211-pks-remote-branches-deprecation-v1-0-1431e2369135@pks.im Changes in v3: - Print warnings when reading remotes from "remotes/" or "branches/". - A couple of commit mesasge improvements. - Link to v2: https://lore.kernel.org/r/20250106-pks-remote-branches-deprecation-v2-0-2ce87c053536@pks.im Changes in v4: - Add migration instructions to the warning when reading deprecated remote types. - Clarify the deprecation text a bit. - Link to v3: https://lore.kernel.org/r/20250120-pks-remote-branches-deprecation-v3-0-c7e539b6a84f@pks.im Thanks! Patrick --- Patrick Steinhardt (5): Makefile: wire up build option for deprecated features ci: merge linux-gcc-default into linux-gcc ci: repurpose "linux-gcc" job for deprecations builtin/pack-redundant: remove subcommand with breaking changes remote: announce removal of "branches/" and "remotes/" .github/workflows/main.yml | 6 +---- .gitlab-ci.yml | 6 +---- Documentation/BreakingChanges.txt | 25 ++++++++++++++++++ Documentation/gitrepository-layout.txt | 7 +++-- GIT-BUILD-OPTIONS.in | 1 + Makefile | 7 +++++ builtin/remote.c | 2 ++ ci/lib.sh | 5 ---- ci/run-build-and-tests.sh | 3 ++- contrib/buildsystems/CMakeLists.txt | 1 + git.c | 2 ++ meson.build | 6 +++++ meson_options.txt | 2 ++ remote.c | 26 +++++++++++++++++++ remote.h | 2 ++ t/t5323-pack-redundant.sh | 6 +++++ t/t5505-remote.sh | 6 ++--- t/t5510-fetch.sh | 13 ++++------ t/t5515-fetch-merge-logic.sh | 47 ++++++++++++++++++---------------- t/t5516-fetch-push.sh | 14 +++++----- t/test-lib.sh | 4 +++ 21 files changed, 132 insertions(+), 59 deletions(-) Range-diff versus v3: 1: c9ab464545 = 1: b72e562c5a Makefile: wire up build option for deprecated features 2: 992c55543e = 2: a6c0aa40f0 ci: merge linux-gcc-default into linux-gcc 3: e9d9721fbf = 3: c4aa9d092b ci: repurpose "linux-gcc" job for deprecations 4: 2588dff0f8 = 4: 7977a853ef builtin/pack-redundant: remove subcommand with breaking changes 5: 671a527782 ! 5: c607948f6a remote: announce removal of "branches/" and "remotes/" @@ Documentation/BreakingChanges.txt: Cf. ."), ++ type, remote->name, remote->name, remote->name); ++} ++ + static void read_remotes_file(struct remote_state *remote_state, + struct remote *remote) + { @@ remote.c: static void read_remotes_file(struct remote_state *remote_state, if (!f) return; + -+ warning(_("Reading remote from \"remotes/%s\", which is nominated\n" -+ "for removal. If you still use the \"remotes/\" directory\n" -+ "it is recommended to migrate to config-based remotes. If\n" -+ "you cannot, please let us know you still use it by sending\n" -+ "an e-mail to ."), remote->name); ++ warn_about_deprecated_remote_type("remotes", remote); + remote->configured_in_repo = 1; remote->origin = REMOTE_REMOTES; @@ remote.c: static void read_branches_file(struct remote_state *remote_state, if (!f) return; -+ warning(_("Reading remote from \"branches/%s\", which is nominated\n" -+ "for removal. If you still use the \"branches/\" directory\n" -+ "it is recommended to migrate to config-based remotes. If\n" -+ "you cannot, please let us know you still use it by sending\n" -+ "an e-mail to ."), remote->name); ++ warn_about_deprecated_remote_type("branches", remote); + strbuf_getline_lf(&buf, f); fclose(f); --- base-commit: 713ec79a9091cec60b110d605b418904759982ab change-id: 20241205-pks-remote-branches-deprecation-037a4389a377