]> git.ipfire.org Git - thirdparty/git.git/commitdiff
Merge branch 'ps/3.0-remote-deprecation'
authorJunio C Hamano <gitster@pobox.com>
Mon, 3 Feb 2025 18:23:33 +0000 (10:23 -0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 3 Feb 2025 18:23:33 +0000 (10:23 -0800)
Following the procedure we established to introduce breaking
changes for Git 3.0, allow an early opt-in for removing support of
$GIT_DIR/branches/ and $GIT_DIR/remotes/ directories to configure
remotes.

* ps/3.0-remote-deprecation:
  remote: announce removal of "branches/" and "remotes/"
  builtin/pack-redundant: remove subcommand with breaking changes
  ci: repurpose "linux-gcc" job for deprecations
  ci: merge linux-gcc-default into linux-gcc
  Makefile: wire up build option for deprecated features

17 files changed:
1  2 
.github/workflows/main.yml
.gitlab-ci.yml
GIT-BUILD-OPTIONS.in
Makefile
builtin/remote.c
ci/lib.sh
ci/run-build-and-tests.sh
contrib/buildsystems/CMakeLists.txt
git.c
meson.build
meson_options.txt
remote.c
remote.h
t/t5505-remote.sh
t/t5510-fetch.sh
t/t5516-fetch-push.sh
t/test-lib.sh

index 900be9957a23fcaa64e1aefd0c8638c5f84b7997,46b96fb96cc6e2659fe0b4b640f7e671587d059a..686855bb5ebba671ac07e650f8dace09d04a2c58
@@@ -282,12 -285,6 +281,9 @@@ jobs
            - jobname: osx-gcc
              cc: gcc-13
              pool: macos-13
-           - jobname: linux-gcc-default
-             cc: gcc
-             pool: ubuntu-latest
 +          - jobname: osx-meson
 +            cc: clang
 +            pool: macos-13
            - jobname: linux-leaks
              cc: gcc
              pool: ubuntu-latest
diff --cc .gitlab-ci.yml
Simple merge
index edff75ae16be90e21a0e9fc5df16a6605439f907,f1d0ecf123031dd13232cc63e100da528bfea16a..ada575fbcb761f7d273a5685188c45f141668145
@@@ -33,16 -16,33 +33,17 @@@ NO_PYTHON=@NO_PYTHON
  NO_REGEX=@NO_REGEX@
  NO_UNIX_SOCKETS=@NO_UNIX_SOCKETS@
  PAGER_ENV=@PAGER_ENV@
 -SANITIZE_LEAK=@SANITIZE_LEAK@
 +PERL_LOCALEDIR=@PERL_LOCALEDIR@
 +PERL_PATH=@PERL_PATH@
 +PYTHON_PATH=@PYTHON_PATH@
 +RUNTIME_PREFIX=@RUNTIME_PREFIX@
  SANITIZE_ADDRESS=@SANITIZE_ADDRESS@
 -X=@X@
 -FSMONITOR_DAEMON_BACKEND=@FSMONITOR_DAEMON_BACKEND@
 -FSMONITOR_OS_SETTINGS=@FSMONITOR_OS_SETTINGS@
 +SANITIZE_LEAK=@SANITIZE_LEAK@
 +SHELL_PATH=@SHELL_PATH@
 +TAR=@TAR@
  TEST_OUTPUT_DIRECTORY=@TEST_OUTPUT_DIRECTORY@
 -GIT_TEST_OPTS=@GIT_TEST_OPTS@
 -GIT_TEST_CMP=@GIT_TEST_CMP@
 -GIT_TEST_CMP_USE_COPIED_CONTEXT=@GIT_TEST_CMP_USE_COPIED_CONTEXT@
 -GIT_TEST_UTF8_LOCALE=@GIT_TEST_UTF8_LOCALE@
 -NO_GETTEXT=@NO_GETTEXT@
 -GIT_PERF_REPEAT_COUNT=@GIT_PERF_REPEAT_COUNT@
 -GIT_PERF_REPO=@GIT_PERF_REPO@
 -GIT_PERF_LARGE_REPO=@GIT_PERF_LARGE_REPO@
 -GIT_PERF_MAKE_OPTS=@GIT_PERF_MAKE_OPTS@
 -GIT_PERF_MAKE_COMMAND=@GIT_PERF_MAKE_COMMAND@
 -GIT_INTEROP_MAKE_OPTS=@GIT_INTEROP_MAKE_OPTS@
 -GIT_TEST_INDEX_VERSION=@GIT_TEST_INDEX_VERSION@
 -GIT_TEST_PERL_FATAL_WARNINGS=@GIT_TEST_PERL_FATAL_WARNINGS@
 -GIT_TEST_TEXTDOMAINDIR=@GIT_TEST_TEXTDOMAINDIR@
 -GIT_TEST_POPATH=@GIT_TEST_POPATH@
 -GIT_TEST_TEMPLATE_DIR=@GIT_TEST_TEMPLATE_DIR@
 -GIT_TEST_GITPERLLIB=@GIT_TEST_GITPERLLIB@
 -GIT_TEST_MERGE_TOOLS_DIR=@GIT_TEST_MERGE_TOOLS_DIR@
 -RUNTIME_PREFIX=@RUNTIME_PREFIX@
 -GITWEBDIR=@GITWEBDIR@
 +TEST_SHELL_PATH=@TEST_SHELL_PATH@
  USE_GETTEXT_SCHEME=@USE_GETTEXT_SCHEME@
 -LOCALEDIR=@LOCALEDIR@
 -BROKEN_PATH_FIX=@BROKEN_PATH_FIX@
 +USE_LIBPCRE2=@USE_LIBPCRE2@
+ WITH_BREAKING_CHANGES=@WITH_BREAKING_CHANGES@
 +X=@X@
diff --cc Makefile
index 2f6e2d5295583b7e5f19896d889ae5440c93efc9,e6b0d859803ac4d53079ec2a39143441a5662203..0739c5c1c019144a794110c1503e8ee8dde31ce5
+++ b/Makefile
@@@ -3182,19 -3164,36 +3188,20 @@@ GIT-BUILD-OPTIONS: FORC
                -e "s|@NO_REGEX@|\'$(NO_REGEX)\'|" \
                -e "s|@NO_UNIX_SOCKETS@|\'$(NO_UNIX_SOCKETS)\'|" \
                -e "s|@PAGER_ENV@|\'$(PAGER_ENV)\'|" \
 -              -e "s|@SANITIZE_LEAK@|\'$(SANITIZE_LEAK)\'|" \
 +              -e "s|@PERL_LOCALEDIR@|\'$(perl_localedir_SQ)\'|" \
 +              -e "s|@PERL_PATH@|\'$(PERL_PATH_SQ)\'|" \
 +              -e "s|@PYTHON_PATH@|\'$(PYTHON_PATH_SQ)\'|" \
 +              -e "s|@RUNTIME_PREFIX@|\'$(RUNTIME_PREFIX_OPTION)\'|" \
                -e "s|@SANITIZE_ADDRESS@|\'$(SANITIZE_ADDRESS)\'|" \
 -              -e "s|@X@|\'$(X)\'|" \
 -              -e "s|@FSMONITOR_DAEMON_BACKEND@|\'$(FSMONITOR_DAEMON_BACKEND)\'|" \
 -              -e "s|@FSMONITOR_OS_SETTINGS@|\'$(FSMONITOR_OS_SETTINGS)\'|" \
 +              -e "s|@SANITIZE_LEAK@|\'$(SANITIZE_LEAK)\'|" \
 +              -e "s|@SHELL_PATH@|\'$(SHELL_PATH_SQ)\'|" \
 +              -e "s|@TAR@|\'$(TAR)\'|" \
                -e "s|@TEST_OUTPUT_DIRECTORY@|\'$(TEST_OUTPUT_DIRECTORY)\'|" \
 -              -e "s|@GIT_TEST_OPTS@|\'$(GIT_TEST_OPTS)\'|" \
 -              -e "s|@GIT_TEST_CMP@|\'$(GIT_TEST_CMP)\'|" \
 -              -e "s|@GIT_TEST_CMP_USE_COPIED_CONTEXT@|\'$(GIT_TEST_CMP_USE_COPIED_CONTEXT)\'|" \
 -              -e "s|@GIT_TEST_UTF8_LOCALE@|\'$(GIT_TEST_UTF8_LOCALE)\'|" \
 -              -e "s|@NO_GETTEXT@|\'$(NO_GETTEXT)\'|" \
 -              -e "s|@GIT_PERF_REPEAT_COUNT@|\'$(GIT_PERF_REPEAT_COUNT)\'|" \
 -              -e "s|@GIT_PERF_REPO@|\'$(GIT_PERF_REPO)\'|" \
 -              -e "s|@GIT_PERF_LARGE_REPO@|\'$(GIT_PERF_LARGE_REPO)\'|" \
 -              -e "s|@GIT_PERF_MAKE_OPTS@|\'$(GIT_PERF_MAKE_OPTS)\'|" \
 -              -e "s|@GIT_PERF_MAKE_COMMAND@|\'$(GIT_PERF_MAKE_COMMAND)\'|" \
 -              -e "s|@GIT_INTEROP_MAKE_OPTS@|\'$(GIT_INTEROP_MAKE_OPTS)\'|" \
 -              -e "s|@GIT_TEST_INDEX_VERSION@|\'$(GIT_TEST_INDEX_VERSION)\'|" \
 -              -e "s|@GIT_TEST_PERL_FATAL_WARNINGS@|\'$(GIT_TEST_PERL_FATAL_WARNINGS)\'|" \
 -              -e "s|@GIT_TEST_TEXTDOMAINDIR@|\'$(shell pwd)/po/build/locale\'|" \
 -              -e "s|@GIT_TEST_POPATH@|\'$(shell pwd)/po\'|" \
 -              -e "s|@GIT_TEST_TEMPLATE_DIR@|\'$(shell pwd)/templates/blt\'|" \
 -              -e "s|@GIT_TEST_GITPERLLIB@|\'$(shell pwd)/perl/build/lib\'|" \
 -              -e "s|@GIT_TEST_MERGE_TOOLS_DIR@|\'$(shell pwd)/mergetools\'|" \
 -              -e "s|@RUNTIME_PREFIX@|\'$(RUNTIME_PREFIX_OPTION)\'|" \
 -              -e "s|@GITWEBDIR@|\'$(gitwebdir_SQ)\'|" \
 +              -e "s|@TEST_SHELL_PATH@|\'$(TEST_SHELL_PATH_SQ)\'|" \
                -e "s|@USE_GETTEXT_SCHEME@|\'$(USE_GETTEXT_SCHEME)\'|" \
 -              -e "s|@LOCALEDIR@|\'$(localedir_SQ)\'|" \
 -              -e "s!@BROKEN_PATH_FIX@!\'$(BROKEN_PATH_FIX)\'!" \
 +              -e "s|@USE_LIBPCRE2@|\'$(USE_LIBPCRE2)\'|" \
+               -e "s|@WITH_BREAKING_CHANGES@|\'$(WITH_BREAKING_CHANGES)\'|" \
 +              -e "s|@X@|\'$(X)\'|" \
                GIT-BUILD-OPTIONS.in >$@+
        @if grep -q '^[A-Z][A-Z_]*=@.*@$$' $@+; then echo "Unsubstituted build options in $@" >&2 && exit 1; fi
        @if cmp $@+ $@ >/dev/null 2>&1; then $(RM) $@+; else mv $@+ $@; fi
Simple merge
diff --cc ci/lib.sh
Simple merge
index 76667a1277720d74e09e8da227b5e0832003e0e2,2ccd812fb4e025be3b8e9ab2ec6ae44e92944ab0..599dc1c32c6a32062fbe3fb1801ea6fdde81db62
@@@ -13,11 -13,11 +13,12 @@@ esa
  run_tests=t
  
  case "$jobname" in
- linux-gcc)
+ linux-breaking-changes)
        export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
+       export WITH_BREAKING_CHANGES=YesPlease
        ;;
  linux-TEST-vars)
 +      export OPENSSL_SHA1_UNSAFE=YesPlease
        export GIT_TEST_SPLIT_INDEX=yes
        export GIT_TEST_MERGE_ALGORITHM=recursive
        export GIT_TEST_FULL_IN_PACK_ARRAY=true
index 10dc54fdcb647bbeeffb4eff6f18d10337b49873,63d008892848c20d5937d9a624a480f700b19498..3179e7ff7a3593b41ababfe5f4f4f3c1d3088983
@@@ -1193,19 -1169,36 +1193,20 @@@ string(REPLACE "@NO_PYTHON@" "${NO_PYTH
  string(REPLACE "@NO_REGEX@" "" git_build_options "${git_build_options}")
  string(REPLACE "@NO_UNIX_SOCKETS@" "${NO_UNIX_SOCKETS}" git_build_options "${git_build_options}")
  string(REPLACE "@PAGER_ENV@" "'${PAGER_ENV}'" git_build_options "${git_build_options}")
 -string(REPLACE "@SANITIZE_LEAK@" "" git_build_options "${git_build_options}")
 +string(REPLACE "@PERL_LOCALEDIR@" "'${LOCALEDIR}'" git_build_options "${git_build_options}")
 +string(REPLACE "@PERL_PATH@" "'${PERL_PATH}'" git_build_options "${git_build_options}")
 +string(REPLACE "@PYTHON_PATH@" "'${PYTHON_PATH}'" git_build_options "${git_build_options}")
 +string(REPLACE "@RUNTIME_PREFIX@" "'${RUNTIME_PREFIX}'" git_build_options "${git_build_options}")
  string(REPLACE "@SANITIZE_ADDRESS@" "" git_build_options "${git_build_options}")
 -string(REPLACE "@X@" "${EXE_EXTENSION}" git_build_options "${git_build_options}")
 -string(REPLACE "@FSMONITOR_DAEMON_BACKEND@" "win32" git_build_options "${git_build_options}")
 -string(REPLACE "@FSMONITOR_OS_SETTINGS@" "win32" git_build_options "${git_build_options}")
 +string(REPLACE "@SANITIZE_LEAK@" "" git_build_options "${git_build_options}")
 +string(REPLACE "@SHELL_PATH@" "'${SHELL_PATH}'" git_build_options "${git_build_options}")
 +string(REPLACE "@TAR@" "'${TAR}'" git_build_options "${git_build_options}")
  string(REPLACE "@TEST_OUTPUT_DIRECTORY@" "" git_build_options "${git_build_options}")
 -string(REPLACE "@GIT_TEST_OPTS@" "" git_build_options "${git_build_options}")
 -string(REPLACE "@GIT_TEST_CMP@" "" git_build_options "${git_build_options}")
 -string(REPLACE "@GIT_TEST_CMP_USE_COPIED_CONTEXT@" "" git_build_options "${git_build_options}")
 -string(REPLACE "@GIT_TEST_UTF8_LOCALE@" "" git_build_options "${git_build_options}")
 -string(REPLACE "@NO_GETTEXT@" "${NO_GETTEXT}" git_build_options "${git_build_options}")
 -string(REPLACE "@GIT_PERF_REPEAT_COUNT@" "" git_build_options "${git_build_options}")
 -string(REPLACE "@GIT_PERF_REPO@" "" git_build_options "${git_build_options}")
 -string(REPLACE "@GIT_PERF_LARGE_REPO@" "" git_build_options "${git_build_options}")
 -string(REPLACE "@GIT_PERF_MAKE_OPTS@" "" git_build_options "${git_build_options}")
 -string(REPLACE "@GIT_PERF_MAKE_COMMAND@" "" git_build_options "${git_build_options}")
 -string(REPLACE "@GIT_INTEROP_MAKE_OPTS@" "" git_build_options "${git_build_options}")
 -string(REPLACE "@GIT_TEST_INDEX_VERSION@" "" git_build_options "${git_build_options}")
 -string(REPLACE "@GIT_TEST_PERL_FATAL_WARNINGS@" "" git_build_options "${git_build_options}")
 -string(REPLACE "@GIT_TEST_TEXTDOMAINDIR@" "'${CMAKE_BINARY_DIR}/po/build/locale'" git_build_options "${git_build_options}")
 -string(REPLACE "@GIT_TEST_POPATH@" "'${CMAKE_BINARY_DIR}/po'" git_build_options "${git_build_options}")
 -string(REPLACE "@GIT_TEST_TEMPLATE_DIR@" "'${CMAKE_BINARY_DIR}/templates/blt'" git_build_options "${git_build_options}")
 -string(REPLACE "@GIT_TEST_GITPERLLIB@" "'${CMAKE_BINARY_DIR}/perl/build/lib'" git_build_options "${git_build_options}")
 -string(REPLACE "@GIT_TEST_MERGE_TOOLS_DIR@" "'${RUNTIME_PREFIX}'" git_build_options "${git_build_options}")
 -string(REPLACE "@RUNTIME_PREFIX@" "'${RUNTIME_PREFIX}'" git_build_options "${git_build_options}")
 -string(REPLACE "@GITWEBDIR@" "'${GITWEBDIR}'" git_build_options "${git_build_options}")
 +string(REPLACE "@TEST_SHELL_PATH@" "'${TEST_SHELL_PATH}'" git_build_options "${git_build_options}")
  string(REPLACE "@USE_GETTEXT_SCHEME@" "" git_build_options "${git_build_options}")
 -string(REPLACE "@LOCALEDIR@" "'${LOCALEDIR}'" git_build_options "${git_build_options}")
 -string(REPLACE "@BROKEN_PATH_FIX@" "" git_build_options "${git_build_options}")
 +string(REPLACE "@USE_LIBPCRE2@" "" git_build_options "${git_build_options}")
+ string(REPLACE "@WITH_BREAKING_CHANGES@" "" git_build_options "${git_build_options}")
 +string(REPLACE "@X@" "${EXE_EXTENSION}" git_build_options "${git_build_options}")
  if(USE_VCPKG)
        string(APPEND git_build_options "PATH=\"$PATH:$TEST_DIRECTORY/../compat/vcbuild/vcpkg/installed/x64-windows/bin\"\n")
  endif()
diff --cc git.c
Simple merge
diff --cc meson.build
Simple merge
index c0d72d85a39b0280801a10a96e93cb316df02db2,800e518d959c4143812f8840415b99a593667a8d..a0fe26f455067ddb9b0efcbc32125aab5212b4f4
@@@ -51,14 -37,14 +51,16 @@@ option('regex', type: 'feature', value
  # Backends.
  option('https_backend', type: 'combo', value: 'auto', choices: ['auto', 'openssl', 'CommonCrypto', 'none'],
    description: 'The HTTPS backend to use when connecting to remotes.')
 -option('sha1_backend', type: 'combo', choices: ['openssl', 'block', 'sha1dc', 'common-crypto'], value: 'sha1dc',
 -  description: 'The backend used for hashing objects with the SHA1 object format')
 +option('sha1_backend', type: 'combo', choices: ['openssl', 'block', 'sha1dc', 'CommonCrypto'], value: 'sha1dc',
 +  description: 'The backend used for hashing objects with the SHA1 object format.')
 +option('sha1_unsafe_backend', type: 'combo', choices: ['openssl', 'block', 'CommonCrypto', 'none'], value: 'none',
 +  description: 'The backend used for hashing data with the SHA1 object format in case no cryptographic security is needed.')
  option('sha256_backend', type: 'combo', choices: ['openssl', 'nettle', 'gcrypt', 'block'], value: 'block',
 -  description: 'The backend used for hashing objects with the SHA256 object format')
 +  description: 'The backend used for hashing objects with the SHA256 object format.')
  
  # Build tweaks.
+ option('breaking_changes', type: 'boolean', value: false,
+   description: 'Enable upcoming breaking changes.')
  option('macos_use_homebrew_gettext', type: 'boolean', value: true,
    description: 'Use gettext from Homebrew instead of the slightly-broken system-provided one.')
  
diff --cc remote.c
Simple merge
diff --cc remote.h
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc t/test-lib.sh
Simple merge