more than one main upstream tarballs listed.
There is 1 open security issue in buster.
commit bfdd0c8290187d5a21c65e3a8a6e0d519b246190 Merge: 95da7e4da9 325a9cefb0 Author: Jonathan Nieder <jrnieder@gmail.com> Date: Sat Mar 15 19:15:34 2025 +0100 Merge branch 'debian-sid' into debian-experimental * debian-sid: debian: Standards-Version: 4.7.0 debian: new upstream release NMU for CVE-2024-50349 and CVE-2024-52006 Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> commit 95da7e4da90e1284d554933a2839a59207d29da8 Author: Jonathan Nieder <jrnieder@gmail.com> Date: Sat Mar 15 19:10:00 2025 +0100 debian: new "next" snapshot Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> commit 325a9cefb0494055d370639d261b361199389ee8 Author: Jonathan Nieder <jrnieder@gmail.com> Date: Sat Mar 15 18:50:05 2025 +0100 debian: Standards-Version: 4.7.0 The main change this brings for us is that doc-base support is now optional (and hence we drop it). Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> commit 804061d051ef4795da621f5a57672457b317cfee Author: Jonathan Nieder <jrnieder@gmail.com> Date: Sat Mar 15 18:43:35 2025 +0100 debian: new upstream release Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> commit 9141f91f4445fbc1bc14a3a2f86d3cb0eb02a353 Merge: 4954718790 12beb8f557 Author: Jonathan Nieder <jrnieder@gmail.com> Date: Sat Mar 15 18:26:27 2025 +0100 Merge branch 'next' of https://kernel.googlesource.com/pub/scm/git/git into debian-experimental Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> commit 07ab309e7c63bf2e5f36698fe02c81f75c536161 Merge: 32a5e12354 683c54c999 Author: Jonathan Nieder <jrnieder@gmail.com> Date: Sat Mar 15 18:13:57 2025 +0100 Merge tag 'v2.49.0' into debian-sid Git 2.49 Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> commit 12beb8f557ceb4a6dcea497ea420e7576a3aeca0 Merge: d1b26642da 683c54c999 Author: Junio C Hamano <gitster@pobox.com> Date: Fri Mar 14 15:23:21 2025 -0700 Sync with Git 2.49 commit d1b26642dacc169ed6e4a1495e3fa114e8b27faa Merge: e278b902bb c9d3534de3 Author: Junio C Hamano <gitster@pobox.com> Date: Thu Mar 13 12:04:35 2025 -0700 Sync with 'master' commit e278b902bb770b75d0295eb776545312351efd36 Merge: 8d6641a77e 4b68faf6b9 Author: Junio C Hamano <gitster@pobox.com> Date: Wed Mar 12 12:08:23 2025 -0700 Sync with 'master' commit 8d6641a77e891bbd2c9283a0e589fe05e6231cfd Merge: 67ce5e4795 227c4f33a0 Author: Junio C Hamano <gitster@pobox.com> Date: Tue Mar 11 16:40:36 2025 -0700 Merge branch 'ja/doc-block-delimiter-markup-fix' into next Doc markup updates. * ja/doc-block-delimiter-markup-fix: doc: add a blank line around block delimiters commit 67ce5e479569658232f7da791d9da710e3dfca8e Merge: f6994c5077 0d03fda6a5 Author: Junio C Hamano <gitster@pobox.com> Date: Tue Mar 11 16:40:35 2025 -0700 Merge branch 'pb/doc-follow-remote-head' into next Doc updates. * pb/doc-follow-remote-head: config/remote.txt: improve wording for 'remote.<name>.followRemoteHEAD' config/remote.txt: reunite 'severOption' description paragraphs commit f6994c50774be5ae419733b56ded2b23fb85798a Merge: 29657bf057 83b278ef74 Author: Junio C Hamano <gitster@pobox.com> Date: Mon Mar 10 13:10:46 2025 -0700 Merge branch 'ma/clone-doc-markup-fix' into next * ma/clone-doc-markup-fix: git-clone doc: fix indentation commit 227c4f33a0351d12b04660a9f03ca96dbab1310a Author: Jean-Noël Avila <jn.avila@free.fr> Date: Sun Mar 9 19:45:11 2025 +0000 doc: add a blank line around block delimiters The documentation is using the historical mode for titles, which is a setext-style (i.e., two-line) section title. The issue with this mode is that starting block delimiters (e.g., `----`) can be confused with a section title when they are exactly the same length as the preceding line. In the original documentation, this is taken care of for English by the writer, but it is not the case for translations where these delimiters are hidden. A translator can generate a line that is exactly the same length as the following block delimiter, which leads to this line being considered as a title. To safeguard against this issue, add a blank line before and after block delimiters where block is at root level, else add a "+" line before block delimiters to link it to the preceding paragraph. Signed-off-by: Jean-Noël Avila <jn.avila@free.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit 29657bf05791b91f723daea0f035b33ae8ef21c3 Merge: c00cd54a64 87a0bdbf0f Author: Junio C Hamano <gitster@pobox.com> Date: Mon Mar 10 09:01:08 2025 -0700 Sync with Git 2.49-rc2 commit c00cd54a64c68bb7fc6417cdb91accf2eb89eb27 Author: Junio C Hamano <gitster@pobox.com> Date: Mon Mar 10 08:41:57 2025 -0700 Revert "Merge branch 'jk/use-wunreachable-code-for-devs' into next" This reverts commit b5c54fea6a6a4c2cba774466a76c40d0348f7a2b, reversing changes made to 4cd33545ba4fa82324b454aa5bf2748b40a572fb. Clang used on osx CI seems to be too clever and complains about a defensive programming like if (sigfillset(&all)) die_errno("sigfillset"); as it knows that the call would never fail on that platform. commit 01f2b845292a11ef1d0a77a705fb003137259cb0 Merge: 9432ccae14 09cbf1597e Author: Junio C Hamano <gitster@pobox.com> Date: Fri Mar 7 16:56:41 2025 -0800 Merge branch 'ua/some-builtins-wo-the-repository' into next A handful of built-in command implementations have been rewritten to use the repository instance supplied by git.c:run_builtin(), its caller. * ua/some-builtins-wo-the-repository: builtin/checkout-index: stop using `the_repository` builtin/for-each-ref: stop using `the_repository` builtin/ls-files: stop using `the_repository` builtin/pack-refs: stop using `the_repository` builtin/send-pack: stop using `the_repository` builtin/verify-commit: stop using `the_repository` builtin/verify-tag: stop using `the_repository` config: teach repo_config to allow `repo` to be NULL commit 9432ccae14b2e7d6f02ecab0f3d450d325e940e3 Merge: 7c075d304c bd52d9a058 Author: Junio C Hamano <gitster@pobox.com> Date: Fri Mar 7 16:56:40 2025 -0800 Merge branch 'tb/fetch-follow-tags-fix' into next * tb/fetch-follow-tags-fix: fetch: fix following tags when fetching specific OID commit 7c075d304c5a215465fa1962b95dd8b3ee6520cc Author: Junio C Hamano <gitster@pobox.com> Date: Fri Mar 7 16:56:28 2025 -0800 Revert "Merge branch 'ua/some-builtins-wo-the-repository' into next" This reverts commit b0520af5047038f5c257ad8ba5f74e981aaf07e4, reversing changes made to 50707f29dbb2fce94666d9fcd390d64079dbf547. commit 09cbf1597edde2b0200ecbf469c78689c4dcb12f Author: Usman Akinyemi <usmanakinyemi202@gmail.com> Date: Sat Mar 8 05:05:07 2025 +0530 builtin/checkout-index: stop using `the_repository` Remove the_repository global variable in favor of the repository argument that gets passed in "builtin/checkout-index.c". When `-h` is passed to the command outside a Git repository, the `run_builtin()` will call the `cmd_checkout_index()` function with `repo` set to NULL and then early in the function, `show_usage_with_options_if_asked()` call will give the options help and exit. Pass an instance of "struct index_state" available in the calling context to both `checkout_all()` and `checkout_file()` to remove their dependency on the global `the_repository` variable. Mentored-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Usman Akinyemi <usmanakinyemi202@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit d9dce89192504c63787b98961ee514937af88e61 Author: Usman Akinyemi <usmanakinyemi202@gmail.com> Date: Sat Mar 8 05:05:06 2025 +0530 builtin/for-each-ref: stop using `the_repository` Remove the_repository global variable in favor of the repository argument that gets passed in "builtin/for-each-ref.c". When `-h` is passed to the command outside a Git repository, the `run_builtin()` will call the `cmd_for_each_ref()` function with `repo` set to NULL and then early in the function, `parse_options()` call will give the options help and exit. Mentored-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Usman Akinyemi <usmanakinyemi202@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit d9c5cfb18f4dff87db7d28846bd754c009f6043d Author: Usman Akinyemi <usmanakinyemi202@gmail.com> Date: Sat Mar 8 05:05:05 2025 +0530 builtin/ls-files: stop using `the_repository` Remove the_repository global variable in favor of the repository argument that gets passed in "builtin/ls-files.c". When `-h` is passed to the command outside a Git repository, the `run_builtin()` will call the `cmd_ls_files()` function with `repo` set to NULL and then early in the function, `show_usage_with_options_if_asked()` call will give the options help and exit. Pass the repository available in the calling context to both `expand_objectsize()` and `show_ru_info()` to remove their dependency on the global `the_repository` variable. Mentored-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Usman Akinyemi <usmanakinyemi202@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit 72fe8bfac832a1f1b9b7cdc4efa793c48e13933e Author: Usman Akinyemi <usmanakinyemi202@gmail.com> Date: Sat Mar 8 05:05:04 2025 +0530 builtin/pack-refs: stop using `the_repository` Remove the_repository global variable in favor of the repository argument that gets passed in "builtin/pack-refs.c". When `-h` is passed to the command outside a Git repository, the `run_builtin()` will call the `cmd_pack_refs()` function with `repo` set to NULL and then early in the function, `parse_options()` call will give the options help and exit. Mentored-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Usman Akinyemi <usmanakinyemi202@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit 1c14b1aedec6e9307e0c73276b8c1c283413ea41 Author: Usman Akinyemi <usmanakinyemi202@gmail.com> Date: Sat Mar 8 05:05:03 2025 +0530 builtin/send-pack: stop using `the_repository` Remove the_repository global variable in favor of the repository argument that gets passed in "builtin/send-pack.c". When `-h` is passed to the command outside a Git repository, the `run_builtin()` will call the `cmd_send_pack()` function with `repo` set to NULL and then early in the function, `parse_options()` call will give the options help and exit. Mentored-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Usman Akinyemi <usmanakinyemi202@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit db58d5a351031ec51817c1a6566ec5672ba17138 Author: Usman Akinyemi <usmanakinyemi202@gmail.com> Date: Sat Mar 8 05:05:02 2025 +0530 builtin/verify-commit: stop using `the_repository` Remove the_repository global variable in favor of the repository argument that gets passed in "builtin/verify-commit.c". When `-h` is passed to the command outside a Git repository, the `run_builtin()` will call the `cmd_verify_commit()` function with `repo` set to NULL and then early in the function, `parse_options()` call will give the options help and exit. Pass the repository available in the calling context to `verify_commit()` to remove it's dependency on the global `the_repository` variable. Mentored-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Usman Akinyemi <usmanakinyemi202@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit 43a839197795a7f0582efd66bc249dac89f86b68 Author: Usman Akinyemi <usmanakinyemi202@gmail.com> Date: Sat Mar 8 05:05:01 2025 +0530 builtin/verify-tag: stop using `the_repository` Remove the_repository global variable in favor of the repository argument that gets passed in "builtin/verify-tag.c". When `-h` is passed to the command outside a Git repository, the `run_builtin()` will call the `cmd_verify_tag()` function with `repo` set to NULL and then early in the function, `parse_options()` call will give the options help and exit. Mentored-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Usman Akinyemi <usmanakinyemi202@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit f29f1990b5605f8dbed65324d8e92b67d4dd1713 Author: Usman Akinyemi <usmanakinyemi202@gmail.com> Date: Sat Mar 8 05:05:00 2025 +0530 config: teach repo_config to allow `repo` to be NULL The `repo` value can be NULL if a builtin command is run outside any repository. The current implementation of `repo_config()` will fail if `repo` is NULL. If the `repo` is NULL the `repo_config()` can ignore the repository configuration but it should read the other configuration sources like the system-side configuration instead of failing. Teach the `repo_config()` to allow `repo` to be NULL by calling the `read_very_early_config()` which read config but only enumerate system and global settings. This will be useful in the following commits. Suggested-by: Junio C Hamano <gitster@pobox.com> Mentored-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Usman Akinyemi <usmanakinyemi202@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit e13861b9f18e0a3644d159aba6621b29e0505143 Merge: b5c54fea6a 2b1e0f8cd5 Author: Junio C Hamano <gitster@pobox.com> Date: Fri Mar 7 15:33:43 2025 -0800 Merge branch 'tc/zlib-ng-fix' into next * tc/zlib-ng-fix: help: print zlib-ng version number help: include git-zlib.h to print zlib version commit b5c54fea6a6a4c2cba774466a76c40d0348f7a2b Merge: 4cd33545ba 38ca78d9da Author: Junio C Hamano <gitster@pobox.com> Date: Fri Mar 7 15:33:43 2025 -0800 Merge branch 'jk/use-wunreachable-code-for-devs' into next * jk/use-wunreachable-code-for-devs: config.mak.dev: enable -Wunreachable-code commit 38ca78d9da8179a7f5e1b69ec9f05ecd2000295e Author: Jeff King <peff@peff.net> Date: Fri Mar 7 17:54:44 2025 -0500 config.mak.dev: enable -Wunreachable-code Having the compiler point out unreachable code can help avoid bugs, like the one discussed in: https://lore.kernel.org/git/20250307195057.GA3675279@coredump.intra.peff.net/ In that case it was found by Coverity, but finding it earlier saves everybody time and effort. We can use -Wunreachable-code to get some help from the compiler here. Interestingly, this is a noop in gcc. It was a real warning up until gcc 4.x, when it was removed for being too flaky, but they left the command-line option to avoid breaking users. See: https://stackoverflow.com/questions/17249934/why-does-gcc-not-warn-for-unreachable-code However, clang does implement this option, and it finds the case mentioned above (and no other cases within the code base). And since we run clang in several of our CI jobs, that's enough to get an early warning of breakage. We could enable it only for clang, but since gcc is happy to ignore it, it's simpler to just turn it on for all developer builds. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit 4cd33545ba4fa82324b454aa5bf2748b40a572fb Merge: 8f38331e32 a36e024e98 Author: Junio C Hamano <gitster@pobox.com> Date: Thu Mar 6 14:10:39 2025 -0800 Sync with 'master' commit 8f38331e32f8ce20b45be4edef428dcecf6a768a Merge: b0520af504 3adba40858 Author: Junio C Hamano <gitster@pobox.com> Date: Thu Mar 6 14:10:30 2025 -0800 Merge branch 'en/merge-process-renames-crash-fix' into next The merge-recursive and merge-ort machinery crashed in corner cases when certain renames are involved. * en/merge-process-renames-crash-fix: merge-ort: fix slightly overzealous assertion for rename-to-self t6423: add a testcase causing a failed assertion in process_renames commit b0520af5047038f5c257ad8ba5f74e981aaf07e4 Merge: 50707f29db b6e37a70b0 Author: Junio C Hamano <gitster@pobox.com> Date: Thu Mar 6 14:10:29 2025 -0800 Merge branch 'ua/some-builtins-wo-the-repository' into next A handful of built-in command implementations have been rewritten to use the repository instance supplied by git.c:run_builtin(), its caller. * ua/some-builtins-wo-the-repository: builtin/checkout-index: stop using `the_repository` builtin/for-each-ref: stop using `the_repository` builtin/ls-files: stop using `the_repository` builtin/pack-refs: stop using `the_repository` builtin/send-pack: stop using `the_repository` builtin/verify-commit: stop using `the_repository` builtin/verify-tag: stop using `the_repository` config: teach repo_config to allow `repo` to be NULL commit 50707f29dbb2fce94666d9fcd390d64079dbf547 Merge: 7583a8b724 10e8a9352b Author: Junio C Hamano <gitster@pobox.com> Date: Thu Mar 6 14:10:29 2025 -0800 Merge branch 'tb/refs-exclude-fixes' into next The refname exclusion logic in the packed-ref backend has been broken for some time, which confused upload-pack to advertise different set of refs. This has been corrected. * tb/refs-exclude-fixes: refs.c: stop matching non-directory prefixes in exclude patterns refs.c: remove empty '--exclude' patterns commit 7583a8b724bd38889376a90fb593cadbd8a97e9c Merge: 2de1596002 9709163687 Author: Junio C Hamano <gitster@pobox.com> Date: Thu Mar 6 10:45:49 2025 -0800 Merge branch 'js/win-2.49-build-fixes' into next * js/win-2.49-build-fixes: cmake: generalize the handling of the `CLAR_TEST_OBJS` list meson: fix sorting ident: stop assuming that `gw_gecos` is writable commit 2de15960026972a7a1d933881dad8a3879471155 Merge: 551580e959 92f8da8de3 Author: Junio C Hamano <gitster@pobox.com> Date: Thu Mar 6 10:45:48 2025 -0800 Merge branch 'pw/repo-layout-doc-update' into next Some future breaking changes would remove certain parts of the default repository, which were still described even when the documents were built for the future with WITH_BREAKING_CHANGES. * pw/repo-layout-doc-update: docs: fix repository-layout when building with breaking changes commit b6e37a70b033824f389746e747eae4f8fdbcc5eb Author: Usman Akinyemi <usmanakinyemi202@gmail.com> Date: Thu Mar 6 20:05:52 2025 +0530 builtin/checkout-index: stop using `the_repository` Remove the_repository global variable in favor of the repository argument that gets passed in "builtin/checkout-index.c". When `-h` is passed to the command outside a Git repository, the `run_builtin()` will call the `cmd_checkout_index()` function with `repo` set to NULL and then early in the function, `show_usage_with_options_if_asked()` call will give the options help and exit. Pass the repository available in the calling context to both `checkout_all()` and `checkout_file()` to remove their dependency on the global `the_repository` variable. Mentored-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Usman Akinyemi <usmanakinyemi202@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit 31c747e0be7828de7d391fb927d069302b7f3816 Author: Usman Akinyemi <usmanakinyemi202@gmail.com> Date: Thu Mar 6 20:05:51 2025 +0530 builtin/for-each-ref: stop using `the_repository` Remove the_repository global variable in favor of the repository argument that gets passed in "builtin/for-each-ref.c". When `-h` is passed to the command outside a Git repository, the `run_builtin()` will call the `cmd_for_each_ref()` function with `repo` set to NULL and then early in the function, `parse_options()` call will give the options help and exit. Mentored-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Usman Akinyemi <usmanakinyemi202@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit 70bdbde0d8d43ac32506877ab3a45783cb38651f Author: Usman Akinyemi <usmanakinyemi202@gmail.com> Date: Thu Mar 6 20:05:50 2025 +0530 builtin/ls-files: stop using `the_repository` Remove the_repository global variable in favor of the repository argument that gets passed in "builtin/ls-files.c". When `-h` is passed to the command outside a Git repository, the `run_builtin()` will call the `cmd_ls_files()` function with `repo` set to NULL and then early in the function, `show_usage_with_options_if_asked()` call will give the options help and exit. Pass the repository available in the calling context to both `expand_objectsize()` and `show_ru_info()` to remove their dependency on the global `the_repository` variable. Mentored-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Usman Akinyemi <usmanakinyemi202@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit 3dc7f0777a17a184029228c661ca0a505b737aed Author: Usman Akinyemi <usmanakinyemi202@gmail.com> Date: Thu Mar 6 20:05:49 2025 +0530 builtin/pack-refs: stop using `the_repository` Remove the_repository global variable in favor of the repository argument that gets passed in "builtin/pack-refs.c". When `-h` is passed to the command outside a Git repository, the `run_builtin()` will call the `cmd_pack_refs()` function with `repo` set to NULL and then early in the function, `parse_options()` call will give the options help and exit. Mentored-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Usman Akinyemi <usmanakinyemi202@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit 8abf3ad23cb1008aeadaa2e1ed68a2649be74bb0 Author: Usman Akinyemi <usmanakinyemi202@gmail.com> Date: Thu Mar 6 20:05:48 2025 +0530 builtin/send-pack: stop using `the_repository` Remove the_repository global variable in favor of the repository argument that gets passed in "builtin/send-pack.c". When `-h` is passed to the command outside a Git repository, the `run_builtin()` will call the `cmd_send_pack()` function with `repo` set to NULL and then early in the function, `parse_options()` call will give the options help and exit. Mentored-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Usman Akinyemi <usmanakinyemi202@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit 2cf14d1bfd6cdf6629e56046dd30d1ef15175fc9 Author: Usman Akinyemi <usmanakinyemi202@gmail.com> Date: Thu Mar 6 20:05:47 2025 +0530 builtin/verify-commit: stop using `the_repository` Remove the_repository global variable in favor of the repository argument that gets passed in "builtin/verify-commit.c". When `-h` is passed to the command outside a Git repository, the `run_builtin()` will call the `cmd_verify_commit()` function with `repo` set to NULL and then early in the function, `parse_options()` call will give the options help and exit. Pass the repository available in the calling context to `verify_commit()` to remove it's dependency on the global `the_repository` variable. Mentored-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Usman Akinyemi <usmanakinyemi202@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit a7eb054c60a11246e86641152a4b8caf0723ef35 Author: Usman Akinyemi <usmanakinyemi202@gmail.com> Date: Thu Mar 6 20:05:46 2025 +0530 builtin/verify-tag: stop using `the_repository` Remove the_repository global variable in favor of the repository argument that gets passed in "builtin/verify-tag.c". When `-h` is passed to the command outside a Git repository, the `run_builtin()` will call the `cmd_verify_tag()` function with `repo` set to NULL and then early in the function, `parse_options()` call will give the options help and exit. Mentored-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Usman Akinyemi <usmanakinyemi202@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit 0d885f2101631a09ef10c11cdb9dc1227dfa96e6 Author: Usman Akinyemi <usmanakinyemi202@gmail.com> Date: Thu Mar 6 20:05:45 2025 +0530 config: teach repo_config to allow `repo` to be NULL The `repo` value can be NULL if a builtin command is run outside any repository. The current implementation of `repo_config()` will fail if `repo` is NULL. If the `repo` is NULL the `repo_config()` can ignore the repository configuration but it should read the other configuration sources like the system-side configuration instead of failing. Teach the `repo_config()` to allow `repo` to be NULL by calling the `read_very_early_config()` which read config but only enumerate system and global settings. This will be useful in the following commits. Suggested-by: Junio C Hamano <gitster@pobox.com> Mentored-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Usman Akinyemi <usmanakinyemi202@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit 3adba40858036a5a44f550aaab5287ad135f5f87 Author: Elijah Newren <newren@gmail.com> Date: Thu Mar 6 15:30:27 2025 +0000 merge-ort: fix slightly overzealous assertion for rename-to-self merge-ort has a number of sanity checks on the file it is processing in process_renames(). One of these sanity checks was slightly overzealous because it indirectly assumed that a renamed file always ended up at a different path than where it started. That is normally an entirely fair assumption, but directory rename detection can make things interesting. As a quick refresher, if one side of history renames directory A/ -> B/, and the other side of history adds new files to A/, then directory rename detection notices and suggests moving those new files to B/. A similar thing is done for paths renamed into A/, causing them to be transitively renamed into B/. But, if the file originally came from B/, then this can end up causing a file to be renamed back to itself. It turns out the rest of the code following this assertion handled the case fine; the assertion was just an extra sanity check, not a rigid precondition. Therefore, simply adjust the assertion to pass under this special case as well. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit 98a1a00d53018c7e664644d886466a820aa5e6d7 Author: Dmitry Goncharov <dgoncharov@users.sf.net> Date: Thu Mar 6 15:30:26 2025 +0000 t6423: add a testcase causing a failed assertion in process_renames If one side of history renames a directory A/ -> B/, and the other side of history adds new files to A/, then directory rename detection notices and moves or suggests moving those new files to B/. A similar thing is done for paths renamed into A/, causing them to be transitively renamed into B/. But, if the file originally came from B/, then this can end up causing a file to be renamed back to itself. merge-ort crashes under this special case, due to a slightly overzealous assertion: git: merge-ort.c:3051: process_renames: Assertion `source_deleted || oldinfo->filemask & old_sidemask' failed. Aborted (core dumped) Add a testcase demonstrating this. Signed-off-by: Dmitry Goncharov <dgoncharov@users.sf.net> [en: Instead of adding a new testsuite, place it near similar tests in t6423, adjusting to match the style of those tests. Tweak the commit message to not repeat the entire testcase, but just describe the bug. Also update the line number in the error message.] Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit 10e8a9352bcc7b21a64e0b321f302cf900ac8c77 Author: Taylor Blau <me@ttaylorr.com> Date: Thu Mar 6 10:34:53 2025 -0500 refs.c: stop matching non-directory prefixes in exclude patterns In the packed-refs backend, our implementation of '--exclude' (dating back to 59c35fac54 (refs/packed-backend.c: implement jump lists to avoid excluded pattern(s), 2023-07-10)) considers, for example: $ git for-each-ref --exclude=refs/heads/ba to exclude "refs/heads/bar", "refs/heads/baz", and so on. The files backend, which does not implement '--exclude' (and relies on the caller to cull out results that don't match) naturally will enumerate "refs/heads/bar" and so on. So in the above example, 'for-each-ref' will try and see if "refs/heads/ba" matches "refs/heads/bar" (since the files backend simply enumerated every loose reference), and, realizing that it does not match, output the reference as expected. (A caller that did want to exclude "refs/heads/bar" and "refs/heads/baz" might instead run "git for-each-ref --exclude='refs/heads/ba*'"). This can lead to strange behavior, like seeing a different set of references advertised via 'upload-pack' depending on what set of references were loose versus packed. So there is a subtle bug with '--exclude' which is that in the packed-refs backend we will consider "refs/heads/bar" to be a pattern match against "refs/heads/ba" when we shouldn't. Likewise, the reftable backend (which in this case is bug-compatible with the packed backend) exhibits the same broken behavior. There are a few ways to fix this. One is to tighten the rules in cmp_record_to_refname(), which is used to determine the start/end-points of the jump list used by the packed backend. In this new "strict" mode, the comparison function would handle the case where we've reached the end of the pattern by introducing a new check like so: while (1) { if (*r1 == '\n') return *r2 ? -1 : 0; if (!*r2) if (strict && *r1 != '/') /* <- here */ return 1; return start ? 1 : -1; if (*r1 != *r2) return (unsigned char)*r1 < (unsigned char)*r2 ? -1 : +1; r1++; r2++; } (eliding out the rest of cmp_record_to_refname()). Equivalently, we could teach refs/packed-backend::populate_excluded_jump_list() to append a trailing '/' if one does not already exist, forcing an exclude pattern like "refs/heads/ba" to only match "refs/heads/ba/abc" and so forth. But since the same problem exists in reftable, we can fix both at once by performing this pre-processing step one layer up in refs.c at the common entrypoint for the two, which is 'refs_ref_iterator_begin()'. Since that solution is both the simplest and only requires modification in one spot, let's normalize exclude patterns so that they end with a trailing slash. This causes us to unify the behavior between all three backends. There is some minor test fallout in the "overlapping excluded regions" test, which happens to use 'refs/ba' as an exclude pattern, and expects references under the "refs/heads/bar/*" and "refs/heads/baz/*" hierarchies to be excluded from the results. But that test fallout is expected, because the test was codifying the buggy behavior to begin with, and should have never been written that way. Split that into its own test (since the range is no longer overlapping under the stricter interpretation of --exclude patterns presented here). Create a new test which does have overlapping regions by using a refs/heads/bar/4/... hierarchy and excluding both "refs/heads/bar" and "refs/heads/bar/4". Reported-by: SURA <surak8806@gmail.com> Helped-by: Jeff King <peff@peff.net> Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit 27be76b230b07360b64aec06d6b0b9bc9e993603 Author: Taylor Blau <me@ttaylorr.com> Date: Thu Mar 6 10:34:48 2025 -0500 refs.c: remove empty '--exclude' patterns In 59c35fac54 (refs/packed-backend.c: implement jump lists to avoid excluded pattern(s), 2023-07-10), the packed-refs backend learned how to construct "jump lists" to avoid enumerating sections of the packed-refs file that we know the caller is going to throw out anyway. This process works by finding the start- and end-points (that is, where in the packed-refs file corresponds to the range we're going to ignore) for each exclude pattern, then constructing a jump list based on that. At enumeration time we'll consult the jump list to skip past everything in the range(s) found in the previous step, saving time when excluding a large portion of references. But when there is a --exclude pattern which is just the empty string, the behavior is a little funky. When we try and exclude the empty string, the matched range covers the entire packed-refs file, meaning that we won't output any packed references. But the empty pattern doesn't actually match any references to begin with! For example, on my copy of git.git I can do: $ git for-each-ref '' | wc -l 0 So "git for-each-ref --exclude=''" shouldn't actually remove anything from the output, and ought to be equivalent to "git for-each-ref". But it's not, and in fact: $ git for-each-ref | wc -l 2229 $ git for-each-ref --exclude='' | wc -l 480 But why does the '--exclude' version output only some of the references in the repository? Here's a hint: $ find .git/refs -type f | wc -l 480 Indeed, because the files backend doesn't implement[^1] the same jump list concept as the packed backend we get the correct result for the loose references, but none of the packed references. Since the empty string exclude pattern doesn't match anything, we can discard them before the packed-refs backend has a chance to even see it (and likewise for reftable, which also implements a similar concept since 1869525066 (refs/reftable: wire up support for exclude patterns, 2024-09-16)). This approach (copying only some of the patterns into a strvec at the refs.c layer) may seem heavy-handed, but it's setting us up to fix another bug in the following commit where the fix will involve modifying the incoming patterns. [^1]: As noted in 59c35fac54. We technically could avoid opening and enumerating the contents of, for e.g., "$GIT_DIR/refs/heads/foo/" if we knew that we were excluding anything under the 'refs/heads/foo' hierarchy. But the --exclude stuff is all best-effort anyway, since the caller is expected to cull out any results that they don't want. Noticed-by: Jeff King <peff@peff.net> Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit 551580e959894626c27474d35a73409be337b82a Merge: 6bea9376c4 e969bc8759 Author: Junio C Hamano <gitster@pobox.com> Date: Wed Mar 5 13:23:45 2025 -0800 Sync with 'master' commit 6bea9376c4351ec0c6672131cf3b8c30b520dea3 Merge: 72b47a15e9 c1cf918d3a Author: Junio C Hamano <gitster@pobox.com> Date: Wed Mar 5 13:23:26 2025 -0800 Merge branch 'sj/ref-consistency-checks-more' into next "git fsck" becomes more careful when checking the refs. * sj/ref-consistency-checks-more: builtin/fsck: add `git refs verify` child process packed-backend: check whether the "packed-refs" is sorted packed-backend: add "packed-refs" entry consistency check packed-backend: check whether the refname contains NUL characters packed-backend: add "packed-refs" header consistency check packed-backend: check if header starts with "# pack-refs with: " packed-backend: check whether the "packed-refs" is regular file builtin/refs: get worktrees without reading head information t0602: use subshell to ensure working directory unchanged commit 72b47a15e918065d3df5ff68594d3890697f3db6 Merge: 831296c557 bad7910399 Author: Junio C Hamano <gitster@pobox.com> Date: Tue Mar 4 10:53:18 2025 -0800 Merge branch 'rs/reftable-reader-new-leakfix' into next Leakfix. * rs/reftable-reader-new-leakfix: reftable: release name on reftable_reader_new() error commit 831296c55738229a56ac0eb4be6c0cdaafa821d5 Merge: 1bc1ab6ecc 61cd812130 Author: Junio C Hamano <gitster@pobox.com> Date: Tue Mar 4 10:53:17 2025 -0800 Merge branch 'tz/doc-txt-to-adoc-fixes' into next Fallouts from recent renaming of documentation files from .txt suffix to the new .adoc suffix have been corrected. * tz/doc-txt-to-adoc-fixes: (38 commits) xdiff: *.txt -> *.adoc fixes unpack-trees.c: *.txt -> *.adoc fixes transport.h: *.txt -> *.adoc fixes trace2/tr2_sysenv.c: *.txt -> *.adoc fixes trace2.h: *.txt -> *.adoc fixes t6434: *.txt -> *.adoc fixes t6012: *.txt -> *.adoc fixes t/helper/test-rot13-filter.c: *.txt -> *.adoc fixes simple-ipc.h: *.txt -> *.adoc fixes setup.c: *.txt -> *.adoc fixes refs.h: *.txt -> *.adoc fixes pseudo-merge.h: *.txt -> *.adoc fixes parse-options.h: *.txt -> *.adoc fixes object-name.c: *.txt -> *.adoc fixes list-objects-filter-options.h: *.txt -> *.adoc fixes fsck.h: *.txt -> *.adoc fixes diffcore.h: *.txt -> *.adoc fixes diff.h: *.txt -> *.adoc fixes contrib/long-running-filter: *.txt -> *.adoc fixes config.c: *.txt -> *.adoc fixes ... commit 1bc1ab6ecc2b71eecec0671746d85bf7036037e8 Merge: fd3038fefd 6a64ac7b01 Author: Junio C Hamano <gitster@pobox.com> Date: Tue Mar 4 08:21:01 2025 -0800 Sync with 'master' commit fd3038fefdd56ccacb01f807da193b6b6bbb9e7a Merge: 3444b4bf36 87eccc3a81 Author: Junio C Hamano <gitster@pobox.com> Date: Tue Mar 4 08:13:11 2025 -0800 Merge branch 'pw/build-meson-technical-and-howto-docs' into next Meson-based build procedure forgot to build some docs, which has been corrected. * pw/build-meson-technical-and-howto-docs: meson: fix building technical and howto docs commit 3444b4bf367e16f70d77ec0fc00e0cc3b587195e Merge: b0c5685768 6dff5de1da Author: Junio C Hamano <gitster@pobox.com> Date: Tue Mar 4 08:13:10 2025 -0800 Merge branch 'kn/ref-migrate-skip-reflog' into next Usage string of "git refs" has been corrected. * kn/ref-migrate-skip-reflog: refs: show --no-reflog in the help text commit b0c5685768ec6f326550dce42bbb3b6419ca2408 Author: Junio C Hamano <gitster@pobox.com> Date: Tue Mar 4 08:13:10 2025 -0800 Merge branch 'jc/breaking-changes-early-adopter-option' into next Doc update. * jc/breaking-changes-early-adopter-option: BreakingChanges: clarify the procedure commit c1cf918d3adbe832fdaf278a23151502be255bb2 Author: shejialuo <shejialuo@gmail.com> Date: Fri Feb 28 00:07:48 2025 +0800 builtin/fsck: add `git refs verify` child process At now, we have already implemented the ref consistency checks for both "files-backend" and "packed-backend". Although we would check some redundant things, it won't cause trouble. So, let's integrate it into the "git-fsck(1)" command to get feedback from the users. And also by calling "git refs verify" in "git-fsck(1)", we make sure that the new added checks don't break. Introduce a new function "fsck_refs" that initializes and runs a child process to execute the "git refs verify" command. In order to provide the user interface create a progress which makes the total task be 1. It's hard to know how many loose refs we will check now. We might improve this later. Then, introduce the option to allow the user to disable checking ref database consistency. Put this function in the very first execution sequence of "git-fsck(1)" due to that we don't want the existing code of "git-fsck(1)" which would implicitly check the consistency of refs to die the program. Last, update the test to exercise the code. Mentored-by: Patrick Steinhardt <ps@pks.im> Mentored-by: Karthik Nayak <karthik.188@gmail.com> Signed-off-by: shejialuo <shejialuo@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit e1c9548eae406a7aa7274685f8bdbc353827bf16 Author: shejialuo <shejialuo@gmail.com> Date: Fri Feb 28 00:07:40 2025 +0800 packed-backend: check whether the "packed-refs" is sorted When there is a "sorted" trait in the header of the "packed-refs" file, it means that each entry is sorted increasingly by comparing the refname. We should add checks to verify whether the "packed-refs" is sorted in this case. Update the "packed_fsck_ref_header" to know whether there is a "sorted" trail in the header. It may seem that we could record all refnames during the parsing process and then compare later. However, this is not a good design due to the following reasons: 1. Because we need to store the state across the whole checking lifetime, we would consume a lot of memory if there are many entries in the "packed-refs" file. 2. We cannot reuse the existing compare function "cmp_packed_ref_records" which cause repetition. Because "cmp_packed_ref_records" needs an extra parameter "struct snaphost", extract the common part into a new function "cmp_packed_ref_records" to reuse this function to compare. Then, create a new function "packed_fsck_ref_sorted" to parse the file again and user the new fsck message "packedRefUnsorted(ERROR)" to report to the user if the file is not sorted. Mentored-by: Patrick Steinhardt <ps@pks.im> Mentored-by: Karthik Nayak <karthik.188@gmail.com> Signed-off-by: shejialuo <shejialuo@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit e6ba4c07b85a0a8fee84b6ac7ab414d47a5351f2 Author: shejialuo <shejialuo@gmail.com> Date: Fri Feb 28 00:07:17 2025 +0800 packed-backend: add "packed-refs" entry consistency check "packed-backend.c::next_record" will parse the ref entry to check the consistency. This function has already checked the following things: 1. Parse the main line of the ref entry to inspect whether the oid is not correct. Then, check whether the next character is oid. Then check the refname. 2. If the next line starts with '^', it would continue to parse the peeled oid and check whether the last character is '\n'. As we decide to implement the ref consistency check for "packed-refs", let's port these two checks and update the test to exercise the code. Mentored-by: Patrick Steinhardt <ps@pks.im> Mentored-by: Karthik Nayak <karthik.188@gmail.com> Signed-off-by: shejialuo <shejialuo@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit 5637d5542021294e81cf0d8344fe140368117296 Author: shejialuo <shejialuo@gmail.com> Date: Fri Feb 28 00:07:00 2025 +0800 packed-backend: check whether the refname contains NUL characters "packed-backend.c::next_record" will use "check_refname_format" to check the consistency of the refname. If it is not OK, the program will die. However, it is reported in [1], we cannot catch some corruption. But we already have the code path and we must miss out something. We use the following code to get the refname: strbuf_add(&iter->refname_buf, p, eol - p); iter->base.refname = iter->refname_buf.buf In the above code, `p` is the start pointer of the refname and `eol` is the next newline pointer. We calculate the length of the refname by subtracting the two pointers. Then we add the memory range between `p` and `eol` to get the refname. However, if there are some NUL characters in the memory range between `p` and `eol`, we will see the refname as a valid ref name as long as the memory range between `p` and first occurred NUL character is valid. In order to catch above corruption, create a new function "refname_contains_nul" by searching the first NUL character. If it is not at the end of the string, there must be some NUL characters in the refname. Use this function in "next_record" function to die the program if "refname_contains_nul" returns true. [1] https://lore.kernel.org/git/6cfee0e4-3285-4f18-91ff-d097da9de737@rd10.de/ Reported-by: R. Diez <rdiez-temp3@rd10.de> Mentored-by: Patrick Steinhardt <ps@pks.im> Mentored-by: Karthik Nayak <karthik.188@gmail.com> Signed-off-by: shejialuo <shejialuo@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit c92e7e156e6b406e7555fb5df058d18758a0b3f0 Author: shejialuo <shejialuo@gmail.com> Date: Fri Feb 28 00:06:49 2025 +0800 packed-backend: add "packed-refs" header consistency check In "packed-backend.c::create_snapshot", if there is a header (the line which starts with '#'), we will check whether the line starts with "# pack-refs with: ". However, we need to consider other situations and discuss whether we need to add checks. 1. If the header does not exist, we should not report an error to the user. This is because in older Git version, we never write header in the "packed-refs" file. Also, we do allow no header in "packed-refs" in runtime. 2. If the header content does not start with "# packed-ref with: ", we should report an error just like what "create_snapshot" does. So, create a new fsck message "badPackedRefHeader(ERROR)" for this. 3. If the header content is not the same as the constant string "PACKED_REFS_HEADER". This is expected because we make it extensible intentionally and runtime "create_snapshot" won't complain about unknown traits. In order to align with the runtime behavior. There is no need to report. As we have analyzed, we only need to check the case 2 in the above. In order to do this, use "open_nofollow" function to get the file descriptor and then read the "packed-refs" file via "strbuf_read". Like what "create_snapshot" and other functions do, we could split the line by finding the next newline in the buffer. When we cannot find a newline, we could report an error. So, create a function "packed_fsck_ref_next_line" to find the next newline and if there is no such newline, use "packedRefEntryNotTerminated(ERROR)" to report an error to the user. Then, parse the first line to apply the checks. Update the test to exercise the code. Mentored-by: Patrick Steinhardt <ps@pks.im> Mentored-by: Karthik Nayak <karthik.188@gmail.com> Signed-off-by: shejialuo <shejialuo@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit 515579756c8d23ea2f3c6386a9333ecbe84d8a08 Author: shejialuo <shejialuo@gmail.com> Date: Fri Feb 28 00:06:40 2025 +0800 packed-backend: check if header starts with "# pack-refs with: " We always write a space after "# pack-refs with:" but we don't align with this rule in the "create_snapshot" method where we would check whether header starts with "# pack-refs with:". It might seem that we should undoubtedly tighten this rule, however, we don't have any technical documentation about this and there is a possibility that we would break the compatibility for other third-party libraries. By investigating influential third-party libraries, we could conclude how these libraries handle the header of "packed-refs" file: 1. libgit2 is fine and always writes the space. It also expects the whitespace to exist. 2. JGit does not expect th header to have a trailing space, but expects the "peeled" capability to have a leading space, which is mostly equivalent because that capability is typically the first one we write. It always writes the space. 3. gitoxide expects the space t exist and writes it. 4. go-git doesn't create the header by default. As many third-party libraries expect a single space after "# pack-refs with:", if we forget to write the space after the colon, "create_snapshot" won't catch this. And we would break other re-implementations. So, we'd better tighten the rule by checking whether the header starts with "# pack-refs with: ". Mentored-by: Patrick Steinhardt <ps@pks.im> Mentored-by: Karthik Nayak <karthik.188@gmail.com> Signed-off-by: shejialuo <shejialuo@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> commit 4954718790598c65424ba5e57584f337af3d524a Author: Josh Steadmon <steadmon@google.com> Date: Fri Feb 14 10:39:14 2025 -0800 debian: new "next" snapshot Change-Id: I48e8ac0f6c30d017a479833125054f983614d5e0 Signed-off-by: Josh Steadmon <steadmon@google.com> commit 70e232d442d4f6dfa1e347936fa9c1d9de2b862a Merge: cdd003511f 4767266eb4 Author: Josh Steadmon <steadmon@google.com> Date: Fri Feb 14 10:34:11 2025 -0800 Merge branch 'next' into debian-experimental Change-Id: I23c3b0e3fed049156da231b4d6b0c8d481d7f68f Signed-off-by: Josh Steadmon <steadmon@google.com> commit 4767266eb4cedeaf40e4bda87fb9c8b6ae1ef127 Merge: ab142d21e8 3eeed876a9 Author: Junio C Hamano <gitster@pobox.com> Date: Thu Feb 13 13:48:23 2025 -0800 Merge branch 'ac/doc-http-ssl-type-config' into next Two configuration variables about SSL authentication material that weren't mentioned in the documentations are now mentioned. * ac/doc-http-ssl-type-config: docs: indicate http.sslCertType and sslKeyType commit ab142d21e83327d8eb26a482349093f1609556ae Merge: 2069f4865c 832f56f06a Author: Junio C Hamano <gitster@pobox.com> Date: Thu Feb 13 13:48:23 2025 -0800 Merge branch 'jc/doc-boolean-synonyms' into next Doc updates. * jc/doc-boolean-synonyms: doc: centrally document various ways tospell `true` and `false` commit 2069f4865c39ed7017d66df693937600eaa8fa2b Merge: d4e8288c9b 45761988ac Author: Junio C Hamano <gitster@pobox.com> Date: Thu Feb 13 13:48:22 2025 -0800 Merge branch 'en/doc-renormalize' into next Doc updates. * en/doc-renormalize: doc: clarify the intent of the renormalize option in the merge machinery commit d4e8288c9b136a078a53c228b9fbad96f5850eea Merge: 5ffbd7fcf8 62898b8f5e Author: Junio C Hamano <gitster@pobox.com> Date: Thu Feb 13 13:48:22 2025 -0800 Merge branch 'ua/update-server-info-sans-the-repository' into next Code clean-up. * ua/update-server-info-sans-the-repository: builtin/update-server-info: remove the_repository global variable commit 5ffbd7fcf84b313bb07e91246eb9419ebd94a7e7 Merge: d13b5baf06 e2067b49ec Author: Junio C Hamano <gitster@pobox.com> Date: Wed Feb 12 10:11:08 2025 -0800 Sync with 'master' commit d13b5baf06b301c3b4297930003759edc1f2edc9 Merge: c4ad516cd7 59d26bd961 Author: Junio C Hamano <gitster@pobox.com> Date: Tue Feb 11 15:45:07 2025 -0800 Merge branch 'bc/contrib-thunderbird-patch-inline-fix' into next A thunderbird helper script lost its bashism. * bc/contrib-thunderbird-patch-inline-fix: thunderbird-patch-inline: avoid bashism commit c4ad516cd7fc4e722ab73f2fbbd245aaf181b2c9 Merge: 782243c538 f1cc562b77 Author: Junio C Hamano <gitster@pobox.com> Date: Tue Feb 11 15:45:07 2025 -0800 Merge branch 'lo/t7603-path-is-file-update' into next Test clean-up. * lo/t7603-path-is-file-update: t7603: replace test -f by test_path_is_file commit 782243c5383dd40d26d75dc97d7fc39900fb60a7 Merge: e22cc108b6 388218fac7 Author: Junio C Hamano <gitster@pobox.com> Date: Mon Feb 10 10:22:52 2025 -0800 Sync with 'master' commit e22cc108b684920a6e46f924893279c821135d13 Merge: 88955fe5b4 7c2f291943 Author: Junio C Hamano <gitster@pobox.com> Date: Mon Feb 10 10:22:34 2025 -0800 Merge branch 'da/difftool-sans-the-repository' into next "git difftool" code clean-up. * da/difftool-sans-the-repository: difftool: eliminate use of USE_THE_REPOSITORY_VARIABLE difftool: eliminate use of the_repository difftool: eliminate use of global variables commit 88955fe5b4b1dc7505854d9ee138915a27e8210d Merge: 7d93e5ad97 3295c35398 Author: Junio C Hamano <gitster@pobox.com> Date: Mon Feb 10 10:22:34 2025 -0800 Merge branch 'jt/rev-list-missing-print-info' into next "git rev-list --missing=" learned to accept "print-info" that gives known details expected of the missing objects, like path and type. * jt/rev-list-missing-print-info: rev-list: extend print-info to print missing object type rev-list: add print-info action to print missing object path commit 7d93e5ad978ba1d3fb88d5395bdf32201b3bdd36 Merge: d6348c9f60 b81f8c8dd3 Author: Junio C Hamano <gitster@pobox.com> Date: Mon Feb 10 10:22:33 2025 -0800 Merge branch 'ps/send-pack-unhide-error-in-atomic-push' into next "git push --atomic --porcelain" used to ignore failures from the other side, losing the error status from the child process, which has been corrected. * ps/send-pack-unhide-error-in-atomic-push: send-pack: gracefully close the connection for atomic push t5543: atomic push reports exit code failure send-pack: new return code "ERROR_SEND_PACK_BAD_REF_STATUS" t5548: add porcelain push test cases for dry-run mode t5548: add new porcelain test cases t5548: refactor test cases by resetting upstream t5548: refactor to reuse setup_upstream() function t5504: modernize test by moving heredocs into test bodies commit d6348c9f60fe5507e03be9a59896af2607e522a7 Merge: 30ceb7b040 85127bcdea Author: Junio C Hamano <gitster@pobox.com> Date: Mon Feb 10 10:22:33 2025 -0800 Merge branch 'ds/backfill' into next Lazy-loading missing files in a blobless clone on demand is costly as it tends to be one-blob-at-a-time. "git backfill" is introduced to help bulk-download necessary files beforehand. * ds/backfill: backfill: assume --sparse when sparse-checkout is enabled backfill: add --sparse option backfill: add --min-batch-size=<n> option backfill: basic functionality and tests backfill: add builtin boilerplate commit cdd003511f984a6f63dc3b21bec264e41212cbbb Author: Kyle Lippincott <spectral@google.com> Date: Thu Feb 6 17:25:10 2025 -0800 debian: fix links in doc-base files 1f010d6bdf (doc: use .adoc extension for AsciiDoc files, 2025-01-20) renamed Documentation/*.txt to Documentation/*.adoc. The debian/git-doc.doc-base files were not updated to point to these new files, so lintian was emitting warnings about non-existent files. Most of the files were compressed by the debian/rules file, producing files named `foo.adoc.gz` instead of just `foo.adoc`. That's been corrected as well, to no longer compress .adoc files. Change-Id: Ide9632932cef9ffdd818d96fab645ebc6ca9592f Signed-off-by: Kyle Lippincott <spectral@google.com> commit a4c29fae90cda94716fb5d671496213d6ccb5348 Author: Kyle Lippincott <spectral@google.com> Date: Fri Feb 7 12:18:39 2025 -0800 debian: new "next" snapshot Change-Id: I495c7bc36075494c2ef234758d6817672a7b497b Signed-off-by: Kyle Lippincott <spectral@google.com> commit 328fa03b1eeeeb40e27ff9e3c16a02668d03641f Merge: 62d2f3c6d3 30ceb7b040 Author: Kyle Lippincott <spectral@google.com> Date: Fri Feb 7 12:18:07 2025 -0800 Merge branch 'next' into debian-experimental Change-Id: I862fdcabb7b1d95b99550d82bcc055a46baab10e Signed-off-by: Kyle Lippincott <spectral@google.com> commit 30ceb7b040fb0d98a6c17a39c106f6eb9a112b24 Merge: dd19c245e9 9520f7d998 Author: Junio C Hamano <gitster@pobox.com> Date: Thu Feb 6 14:59:30 2025 -0800 Sync with 'master' commit dd19c245e9baf5d5c7bf7f6b54330a0689278283 Merge: 1b0fc3be42 dd1eb665ef Author: Junio C Hamano <gitster@pobox.com> Date: Thu Feb 6 14:59:17 2025 -0800 Merge branch 'ps/doc-http-upload-archive-service' into next Doc update. * ps/doc-http-upload-archive-service: doc: documentation for http.uploadarchive config option commit 1b0fc3be4253a69878b6ea6687cb867091bf59ae Merge: 9d20f0b55a 017bd89239 Author: Junio C Hamano <gitster@pobox.com> Date: Thu Feb 6 14:59:16 2025 -0800 Merge branch 'kn/reflog-migration-fix-followup' into next Code clean-up. * kn/reflog-migration-fix-followup: reftable: prevent 'update_index' changes after adding records refs: use 'uint64_t' for 'ref_update.index' refs: mark `ref_transaction_update_reflog()` as static commit 9d20f0b55aaaf584c236a64adfd377fbe357007e Merge: 25c618bf37 93dc16483a Author: Junio C Hamano <gitster@pobox.com> Date: Thu Feb 6 14:59:16 2025 -0800 Merge branch 'bf/fetch-set-head-fix' into next Fetching into a bare repository incorrectly assumed it always used a mirror layout when deciding to update remote-tracking HEAD, which has been corrected. * bf/fetch-set-head-fix: fetch set_head: fix non-mirror remotes in bare repositories fetch set_head: refactor to use remote directly commit 25c618bf37b6285c8beb0e7b6c9fa2aa4dbae5fb Merge: d67b50d35c 78a95e0d80 Author: Junio C Hamano <gitster@pobox.com> Date: Thu Feb 6 14:59:16 2025 -0800 Merge branch 'op/worktree-is-main-bare-fix' into next Going into a secondary worktree and asking "is the main worktree bare?" did not work correctly when per-worktree configuration option was in use, which has been corrected. * op/worktree-is-main-bare-fix: worktree: detect from secondary worktree if main worktree is bare commit d67b50d35cdbdf01c455d6c630128780fbe81b33 Merge: 74a3c43834 337855629f Author: Junio C Hamano <gitster@pobox.com> Date: Thu Feb 6 14:59:15 2025 -0800 Merge branch 'tc/clone-single-revision' into next "git clone" learned to make a shallow clone for a single commit that is not necessarily be at the tip of any branch. * tc/clone-single-revision: builtin/clone: teach git-clone(1) the --revision= option parse-options: introduce die_for_incompatible_opt2() clone: introduce struct clone_opts in builtin/clone.c clone: add tags refspec earlier to fetch refspec clone: refactor wanted_peer_refs() clone: make it possible to specify --tags clone: cut down on global variables in clone.c commit 74a3c43834882219aa12aa1815d441a1762ba558 Merge: 1ecb7c7c9c e4542d8b35 Author: Junio C Hamano <gitster@pobox.com> Date: Wed Feb 5 14:00:39 2025 -0800 Merge branch 'da/help-autocorrect-one-fix' into next "git -c help.autocorrect=0 psuh" shows the suggested typofix, unlike the previous attempt in the base topic. * da/help-autocorrect-one-fix: help: add "show" as a valid configuration value help: show the suggested command when help.autocorrect is false commit 1ecb7c7c9c817c334f4b39253cb1df8fd1d9523d Merge: 3d58d63932 4e3dd47c9d Author: Junio C Hamano <gitster@pobox.com> Date: Wed Feb 5 14:00:39 2025 -0800 Merge branch 'sc/help-autocorrect-one' into next "[help] autocorrect = 1" used to be a way to say "please wait for 0.1 second after suggesting a typofix of the command name before running that command"; now it means "yes, if there is a plausible typofix for the command name, please run it immediately". * sc/help-autocorrect-one: help: interpret boolean string values for help.autocorrect commit 3d58d63932c66a56b87671ef10eb01d40aae3afa Merge: 5b53c49215 f21ea69d94 Author: Junio C Hamano <gitster@pobox.com> Date: Wed Feb 5 14:00:39 2025 -0800 Merge branch 'ms/remote-valid-remote-name' into next Code shuffling. * ms/remote-valid-remote-name: remote: relocate valid_remote_name commit 5b53c492157b34c83e9e4f10661d7a8c6dc38f65 Merge: 7bbd51e504 d549b6c9ff Author: Junio C Hamano <gitster@pobox.com> Date: Wed Feb 5 14:00:38 2025 -0800 Merge branch 'ms/refspec-cleanup' into next Code clean-up. * ms/refspec-cleanup: refspec: relocate apply_refspecs and related funtions refspec: relocate matching related functions remote: rename query_refspecs functions refspec: relocate refname_matches_negative_refspec_item remote: rename function omit_name_by_refspec commit 7bbd51e504b715034afeea2e0d294224c516fb24 Merge: e075d609ae 6bba6f604b Author: Junio C Hamano <gitster@pobox.com> Date: Wed Feb 5 14:00:38 2025 -0800 Merge branch 'jp/doc-trailer-config' into next Documentaiton updates. * jp/doc-trailer-config: config.txt: add trailer.* variables commit e075d609ae7c11cefa915a4670c8743e06b5c828 Merge: ac1fefbba1 08032fa30f Author: Junio C Hamano <gitster@pobox.com> Date: Wed Feb 5 14:00:37 2025 -0800 Merge branch 'zh/gc-expire-to' into next "git gc" learned the "--expire-to" option and passes it down to underlying "git repack". * zh/gc-expire-to: gc: add `--expire-to` option commit ac1fefbba15ae94724da9af846d1c43a07092dd9 Merge: 6bd1c91b06 65c10aa8d5 Author: Junio C Hamano <gitster@pobox.com> Date: Wed Feb 5 14:00:36 2025 -0800 Merge branch 'js/libgit-rust' into next Foreign language interface for Rust into our code base has been added. * js/libgit-rust: libgit: add higher-level libgit crate libgit-sys: also export some config_set functions libgit-sys: introduce Rust wrapper for libgit.a common-main: split init and exit code into new files commit 6bd1c91b067bc73fdcedcc85aa2367f340cf3a2b Merge: 5290fb63c2 318f4c9827 Author: Junio C Hamano <gitster@pobox.com> Date: Tue Feb 4 12:10:34 2025 -0800 Merge branch 'ac/t5401-use-test-path-is-file' into next Test clean-up. * ac/t5401-use-test-path-is-file: t5401: prefer test_path_is_* helper function commit 5290fb63c276db44dd623457095bb82eb0775882 Merge: 96a862b6f8 7c1d34fe5d Author: Junio C Hamano <gitster@pobox.com> Date: Tue Feb 4 12:10:33 2025 -0800 Merge branch 'ac/t6423-unhide-git-exit-status' into next Test clean-up. * ac/t6423-unhide-git-exit-status: t6423: fix suppression of Git’s exit code in tests commit 96a862b6f88b0e3033180f76100016a687cf09a6 Merge: d83bc700a7 414c82300a Author: Junio C Hamano <gitster@pobox.com> Date: Tue Feb 4 12:10:33 2025 -0800 Merge branch 'ps/repack-keep-unreachable-in-unpacked-repo' into next "git repack --keep-unreachable" to send unreachable objects to the main pack "git repack -ad" produces did not work when there is no existing packs, which has been corrected. * ps/repack-keep-unreachable-in-unpacked-repo: builtin/repack: fix `--keep-unreachable` when there are no packs commit d83bc700a7f348931b07f668680dce2675ffff77 Merge: c4cfc42d60 b4cf68476a Author: Junio C Hamano <gitster@pobox.com> Date: Tue Feb 4 12:10:32 2025 -0800 Merge branch 'ds/name-hash-tweaks' into next "git pack-objects" and its wrapper "git repack" learned an option to use an alternative path-hash function to improve delta-base selection to produce a packfile with deeper history than window size. * ds/name-hash-tweaks: pack-objects: prevent name hash version change test-tool: add helper for name-hash values p5313: add size comparison test pack-objects: add GIT_TEST_NAME_HASH_VERSION repack: add --name-hash-version option pack-objects: add --name-hash-version option pack-objects: create new name-hash function version commit c4cfc42d605a2b75c802dafdff4ee0014344f5d0 Merge: 9597182d1d bc204b7427 Author: Junio C Hamano <gitster@pobox.com> Date: Mon Feb 3 10:27:26 2025 -0800 Sync with 'master' commit 9597182d1d407a71dc51f81a32bc53721a6f9b8d Merge: 163109072c 14ddc393b1 Author: Junio C Hamano <gitster@pobox.com> Date: Mon Feb 3 10:25:11 2025 -0800 Merge branch 'jk/ci-coverity-update' into next CI update to make Coverity job work again. * jk/ci-coverity-update: ci: set CI_JOB_IMAGE for coverity job commit 163109072c24eb2fc0333364708908f0917bc519 Merge: 98bdef7666 af8bf677c1 Author: Junio C Hamano <gitster@pobox.com> Date: Mon Feb 3 10:25:10 2025 -0800 Merge branch 'sk/unit-tests-0130' into next Convert a handful of unit tests to work with the clar framework. * sk/unit-tests-0130: t/unit-tests: convert strcmp-offset test to use clar test framework t/unit-tests: convert strbuf test to use clar test framework t/unit-tests: adapt example decorate test to use clar test framework t/unit-tests: convert hashmap test to use clar test framework commit 98bdef76667ca45d9d2a1cf50ef20ae266dd60fb Merge: bf225248c9 0578f1e66a Author: Junio C Hamano <gitster@pobox.com> Date: Mon Feb 3 10:25:10 2025 -0800 Merge branch 'ps/hash-cleanup' into next Further code clean-up on the use of hash functions. Now the context object knows what hash function it is working with. * ps/hash-cleanup: global: adapt callers to use generic hash context helpers hash: provide generic wrappers to update hash contexts hash: stop typedeffing the hash context hash: convert hashing context to a structure commit bf225248c988bc547241cbe91dd883d4bf06f1e4 Merge: e2b37c2c77 acc4fb302b Author: Junio C Hamano <gitster@pobox.com> Date: Mon Feb 3 10:25:09 2025 -0800 Merge branch 'jt/gitlab-ci-base-fix' into next Two CI tasks, whitespace check and style check, work on the difference from the base version and the version being checked, but the base was computed incorrectly in GitLab CI in some cases, which has been corrected. * jt/gitlab-ci-base-fix: ci: fix base commit fallback for check-whitespace and check-style