Debian Package Tracker
Register | Log in
Subscribe

git

fast, scalable, distributed revision control system

Choose email to subscribe with

general
  • source: git (main)
  • version: 1:2.49.0-1
  • maintainer: Jonathan Nieder (DMD)
  • uploaders: Anders Kaseorg [DMD]
  • arch: all any
  • std-ver: 4.7.0
  • VCS: Git (Browse, QA)
versions [more versions can be listed by madison] [old versions available from snapshot.debian.org]
[pool directory]
  • o-o-stable: 1:2.20.1-2+deb10u3
  • o-o-sec: 1:2.20.1-2+deb10u9
  • oldstable: 1:2.30.2-1+deb11u2
  • old-sec: 1:2.30.2-1+deb11u4
  • old-bpo: 1:2.39.2-1~bpo11+1
  • stable: 1:2.39.5-0+deb12u2
  • stable-sec: 1:2.39.5-0+deb12u2
  • testing: 1:2.47.2-0.1
  • unstable: 1:2.49.0-1
  • exp: 1:2.49.0+next.20250314-1
versioned links
  • 1:2.20.1-2+deb10u3: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 1:2.20.1-2+deb10u9: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 1:2.30.2-1+deb11u2: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 1:2.30.2-1+deb11u4: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 1:2.39.2-1~bpo11+1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 1:2.39.5-0+deb12u2: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 1:2.45.2+next.20240614-1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 1:2.47.2-0.1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 1:2.48.0~rc1+next.20250101-1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 1:2.49.0-1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 1:2.49.0+next.20250314-1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
binaries
  • git (282 bugs: 0, 135, 147, 0)
  • git-all (2 bugs: 0, 0, 2, 0)
  • git-cvs (8 bugs: 0, 3, 5, 0)
  • git-doc (7 bugs: 0, 1, 6, 0)
  • git-email (18 bugs: 0, 7, 11, 0)
  • git-gui (21 bugs: 0, 11, 10, 0)
  • git-man (28 bugs: 0, 7, 21, 0)
  • git-mediawiki
  • git-svn (27 bugs: 0, 10, 17, 0)
  • gitk (28 bugs: 0, 9, 19, 0)
  • gitweb (17 bugs: 0, 7, 10, 0)
action needed
Problems while searching for a new upstream version high
uscan had problems while searching for a new upstream version:
more than one main upstream tarballs listed.
Created: 2021-08-24 Last update: 2025-05-10 01:31
1 security issue in buster high

There is 1 open security issue in buster.

1 important issue:
  • CVE-2024-32020: Git is a revision control system. Prior to versions 2.45.1, 2.44.1, 2.43.4, 2.42.2, 2.41.1, 2.40.2, and 2.39.4, local clones may end up hardlinking files into the target repository's object database when source and target repository reside on the same disk. If the source repository is owned by a different user, then those hardlinked files may be rewritten at any point in time by the untrusted user. Cloning local repositories will cause Git to either copy or hardlink files of the source repository into the target repository. This significantly speeds up such local clones compared to doing a "proper" clone and saves both disk space and compute time. When cloning a repository located on the same disk that is owned by a different user than the current user we also end up creating such hardlinks. These files will continue to be owned and controlled by the potentially-untrusted user and can be rewritten by them at will in the future. The problem has been patched in versions 2.45.1, 2.44.1, 2.43.4, 2.42.2, 2.41.1, 2.40.2, and 2.39.4.
Created: 2024-05-15 Last update: 2024-06-26 14:02
The package has not entered testing even though the delay is over normal
The package has not entered testing even though the 10-day delay is over. Check why.
Created: 2025-03-26 Last update: 2025-05-10 07:04
26 bugs tagged patch in the BTS normal
The BTS contains patches fixing 26 bugs (33 if counting merged bugs), consider including or untagging them.
Created: 2025-01-06 Last update: 2025-05-10 07:00
Depends on packages which need a new maintainer normal
The packages that git depends on which need a new maintainer are:
  • cvsps (#501257)
    • Depends: cvsps
    • Build-Depends: cvsps
  • docbook-xsl (#802370)
    • Build-Depends-Indep: docbook-xsl
Created: 2019-11-22 Last update: 2025-05-10 06:27
463 new commits since last upload, is it time to release? normal
vcswatch reports that this package seems to have new commits in its VCS but has not yet updated debian/changelog. You should consider updating the Debian changelog and uploading this new version into the archive.

Here are the relevant commit logs:
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
Merge: fa247cfd4e c268e3285d
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 fa247cfd4e00fafd7c8d3566ee69b6269d42c977
Merge: 627208d89d c84209a8fd
Author: Junio C Hamano <gitster@pobox.com>
Date:   Tue Mar 4 08:13:10 2025 -0800

    Merge branch 'dm/editorconfig-bash-is-like-sh' into next
    
    The editorconfig file is updated to tell us that bash scripts are
    similar to general Bourne shell scripts.
    
    * dm/editorconfig-bash-is-like-sh:
      editorconfig: add .bash extension

commit 627208d89dea747b35cb848eb5e2c8eddf878dfd
Merge: 663485ae52 db91954e18
Author: Junio C Hamano <gitster@pobox.com>
Date:   Mon Mar 3 09:19:51 2025 -0800

    Sync with 'master'

commit 663485ae52c79430708592789f1bc4d96066e7b3
Merge: 32346e0c3b 5040f9f164
Author: Junio C Hamano <gitster@pobox.com>
Date:   Mon Mar 3 09:19:12 2025 -0800

    Merge branch 'cc/lop-remote' into next
    
    Large-object promisor protocol extension.
    
    * cc/lop-remote:
      doc: add technical design doc for large object promisors
      promisor-remote: check advertised name or URL
      Add 'promisor-remote' capability to protocol v2

commit 32346e0c3be7f2f43d3ef9eb2c4fa68f5ac7460a
Merge: b7a42309b2 cf15095ec5
Author: Junio C Hamano <gitster@pobox.com>
Date:   Mon Mar 3 09:19:12 2025 -0800

    Merge branch 'jt/diff-pairs' into next
    
    A post-processing filter for "diff --raw" output has been
    introduced.
    
    * jt/diff-pairs:
      builtin/diff-pairs: allow explicit diff queue flush
      builtin: introduce diff-pairs command
      diff: add option to skip resolving diff statuses
      diff: return diff_filepair from diff queue helpers

commit b7a42309b25632b0c63e8f189fd6f4d85dea293e
Merge: 41875498b7 149585079f
Author: Junio C Hamano <gitster@pobox.com>
Date:   Mon Mar 3 09:19:11 2025 -0800

    Merge branch 'sk/unit-test-oid' into next
    
    Convert a few unit tests to the clar framework.
    
    * sk/unit-test-oid:
      t/unit-tests: convert oidtree test to use clar test framework
      t/unit-tests: convert oidmap test to use clar test framework
      t/unit-tests: convert oid-array test to use clar test framework
      t/unit-tests: implement clar specific oid helper functions

commit cf15095ec52f1e997ec9eef42bdf275d2a68fe66
Author: Justin Tobler <jltobler@gmail.com>
Date:   Fri Feb 28 15:33:46 2025 -0600

    builtin/diff-pairs: allow explicit diff queue flush
    
    The diffs queued from git-diff-pairs(1) are flushed when stdin is
    closed. To enable greater flexibility, allow control over when the diff
    queue is flushed by writing a single NUL byte on stdin between input
    file pairs. Diff output between flushes is separated by a single NUL
    byte.
    
    Signed-off-by: Justin Tobler <jltobler@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>

commit 5bd10b2adcf3a080169574dd08c5529de81eecb1
Author: Justin Tobler <jltobler@gmail.com>
Date:   Fri Feb 28 15:33:45 2025 -0600

    builtin: introduce diff-pairs command
    
    Through git-diff(1), a single diff can be generated from a pair of blob
    revisions directly. Unfortunately, there is not a mechanism to compute
    batches of specific file pair diffs in a single process. Such a feature
    is particularly useful on the server-side where diffing between a large
    set of changes is not feasible all at once due to timeout concerns.
    
    To facilitate this, introduce git-diff-pairs(1) which acts as a backend
    passing its NUL-terminated raw diff format input from stdin through diff
    machinery to produce various forms of output such as patch or raw.
    
    The raw format was originally designed as an interchange format and
    represents the contents of the diff_queued_diff list making it possible
    to break the diff pipeline into separate stages. For example,
    git-diff-tree(1) can be used as a frontend to compute file pairs to
    queue and feed its raw output to git-diff-pairs(1) to compute patches.
    With this, batches of diffs can be progressively generated without
    having to recompute renames or retrieve object context. Something like
    the following:
    
            git diff-tree -r -z -M $old $new |
            git diff-pairs -p -z
    
    should generate the same output as `git diff-tree -p -M`. Furthermore,
    each line of raw diff formatted input can also be individually fed to a
    separate git-diff-pairs(1) process and still produce the same output.
    
    Based-on-patch-by: Jeff King <peff@peff.net>
    Signed-off-by: Justin Tobler <jltobler@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>

commit c8a8e04099a99d6eafbe6e9bb1db3b50996836f8
Author: Justin Tobler <jltobler@gmail.com>
Date:   Fri Feb 28 15:33:44 2025 -0600

    diff: add option to skip resolving diff statuses
    
    By default, `diffcore_std()` resolves the statuses for queued diff file
    pairs by calling `diff_resolve_rename_copy()`. If status information is
    already manually set, invoking `diffcore_std()` may change the status
    value.
    
    Introduce the `skip_resolving_statuses` diff option that prevents
    `diffcore_std()` from resolving file pair statuses when enabled.
    
    Signed-off-by: Justin Tobler <jltobler@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>

commit 7c67d2a07055150b76e81efa8850221d52705305
Author: Justin Tobler <jltobler@gmail.com>
Date:   Fri Feb 28 15:33:43 2025 -0600

    diff: return diff_filepair from diff queue helpers
    
    The `diff_addremove()` and `diff_change()` functions set up and queue
    diffs, but do not return the `diff_filepair` added to the queue. In a
    subsequent commit, modifications to `diff_filepair` need to occur in
    certain cases after being queued.
    
    Since the existing `diff_addremove()` and `diff_change()` are also used
    for callbacks in `diff_options` as types `add_remove_fn_t` and
    `change_fn_t`, modifying the existing function signatures requires
    further changes. The diff options for pruning use `file_add_remove()`
    and `file_change()` where file pairs do not even get queued. Thus,
    separate functions are implemented instead.
    
    Split out the queuing operations into `diff_queue_addremove()` and
    `diff_queue_change()` which also return a handle to the queued
    `diff_filepair`. Both `diff_addremove()` and `diff_change()` are
    reimplemented as thin wrappers around the new functions.
    
    Signed-off-by: Justin Tobler <jltobler@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>

commit 41875498b7944e2c73e7a8ed9b6a91c9d7001b12
Merge: 7e8431ab25 028f618658
Author: Junio C Hamano <gitster@pobox.com>
Date:   Fri Feb 28 13:56:15 2025 -0800

    Merge branch 'ps/path-sans-the-repository' into next
    
    The path.[ch] API takes an explicit repository parameter passed
    throughout the callchain, instead of relying on the_repository
    singleton instance.
    
    * ps/path-sans-the-repository:
      path: adjust last remaining users of `the_repository`
      environment: move access to "core.sharedRepository" into repo settings
      environment: move access to "core.hooksPath" into repo settings
      repo-settings: introduce function to clear struct
      path: drop `git_path()` in favor of `repo_git_path()`
      rerere: let `rerere_path()` write paths into a caller-provided buffer
      path: drop `git_common_path()` in favor of `repo_common_path()`
      worktree: return allocated string from `get_worktree_git_dir()`
      path: drop `git_path_buf()` in favor of `repo_git_path_replace()`
      path: drop `git_pathdup()` in favor of `repo_git_path()`
      path: drop unused `strbuf_git_path()` function
      path: refactor `repo_submodule_path()` family of functions
      submodule: refactor `submodule_to_gitdir()` to accept a repo
      path: refactor `repo_worktree_path()` family of functions
      path: refactor `repo_git_path()` family of functions
      path: refactor `repo_common_path()` family of functions

commit 7e8431ab257e4492cf65950dd066524370c30347
Merge: ae4b89d849 aea7c185be
Author: Junio C Hamano <gitster@pobox.com>
Date:   Fri Feb 28 13:56:14 2025 -0800

    Merge branch 'ps/build-meson-fixes' into next
    
    CI fix.
    
    * ps/build-meson-fixes:
      gitlab-ci: fix "msvc-meson" test job succeeding despite test failures

commit ae4b89d849ef425bee1157421f2c44071bb9b5c5
Merge: ef18273a2d cb0ae672ae
Author: Junio C Hamano <gitster@pobox.com>
Date:   Thu Feb 27 15:41:37 2025 -0800

    Sync with 'master'

commit ef18273a2d933b31529ea336161a70ddb8738b34
Merge: 839741ad40 63a597dd94
Author: Junio C Hamano <gitster@pobox.com>
Date:   Thu Feb 27 15:40:32 2025 -0800

    Merge branch 'ps/meson-contrib-bits' into next
    
    Update meson-based build procedure to cover contrib/ and other
    places as well.
    
    * ps/meson-contrib-bits:
      ci: exercise credential helpers
      ci: fix propagating UTF-8 test locale in musl-based Meson job
      meson: wire up static analysis via Coccinelle
      meson: wire up git-contacts(1)
      meson: wire up credential helpers
      contrib/credential: fix compilation of "osxkeychain" helper
      contrib/credential: fix compiling "libsecret" helper
      contrib/credential: fix compilation of wincred helper with MSVC
      contrib/credential: fix "netrc" tests with out-of-tree builds
      GIT-BUILD-OPTIONS: propagate project's source directory

commit 839741ad40b010b4c8ac49a53117562b062e906f
Merge: 8086c4ca60 b07dd9078b
Author: Junio C Hamano <gitster@pobox.com>
Date:   Thu Feb 27 15:40:31 2025 -0800

    Merge branch 'ms/merge-recursive-string-list-micro-optimization' into next
    
    Rename processing in the recursive merge backend has seen a micro
    optimization.
    
    * ms/merge-recursive-string-list-micro-optimization:
      merge-recursive: optimize time complexity for process_renames

commit 8086c4ca6055b80c96a420b717be6b2915f210a1
Merge: 55aaa8c63e 4ebba56419
Author: Junio C Hamano <gitster@pobox.com>
Date:   Thu Feb 27 15:40:31 2025 -0800

    Merge branch 'lo/doc-merge-submodule-update' into next
    
    What happens to submodules during merge has been documented in a
    bit more detail.
    
    * lo/doc-merge-submodule-update:
      merge-strategies.adoc: detail submodule merge

commit 55aaa8c63e25a59afc718ae2154f7e3c3064c4a7
Merge: cf8ba1cde5 9350423982
Author: Junio C Hamano <gitster@pobox.com>
Date:   Thu Feb 27 15:40:30 2025 -0800

    Merge branch 'ps/build-meson-fixes-0130' into next
    
    Assorted fixes and improvements to the build procedure based on
    meson.
    
    * ps/build-meson-fixes-0130:
      gitlab-ci: restrict maximum number of link jobs on Windows
      meson: consistently use custom program paths to resolve programs
      meson: fix overwritten `git` variable
      meson: prevent finding sed(1) in a loop
      meson: improve handling of `sane_tool_path` option
      meson: improve PATH handling
      meson: drop separate version library
      meson: stop linking libcurl into all executables
      meson: introduce `libgit_curl` dependency
      meson: simplify use of the common-main library
      meson: inline the static 'git' library
      meson: fix OpenSSL fallback when not explicitly required
      meson: fix exec path with enabled runtime prefix

commit cf8ba1cde5a673dd7f2354ddd2148f31e4c4e033
Merge: 42c0ae87b1 ce98863204
Author: Junio C Hamano <gitster@pobox.com>
Date:   Thu Feb 27 15:40:30 2025 -0800

    Merge branch 'dk/test-aggregate-results-paste-fix' into next
    
    The use of "paste" command for aggregating the test results have
    been corrected.
    
    * dk/test-aggregate-results-paste-fix:
      t/aggregate-results: fix paste(1) invocation

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 cfea2f2da8d418edd7984e5b5073825834099a27
Author: shejialuo <shejialuo@gmail.com>
Date:   Fri Feb 28 00:06:24 2025 +0800

    packed-backend: check whether the "packed-refs" is regular file
    
    Although "git-fsck(1)" and "packed-backend.c" will check some
    consistency and correctness of "packed-refs" file, they never check the
    filetype of the "packed-refs". Let's verify that the "packed-refs" has
    the expected filetype, confirming it is created by "git pack-refs"
    command.
    
    We could use "open_nofollow" wrapper to open the raw "packed-refs" file.
    If the returned "fd" value is less than 0, we could check whether the
    "errno" is "ELOOP" to report an error to the user. And then we use
    "fstat" to check whether the "packed-refs" file is a regular file.
    
    Reuse "FSCK_MSG_BAD_REF_FILETYPE" fsck message id to report the error to
    the user if "packed-refs" is not a regular file.
    
    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 fdf3820b7ef69dcf887bd86565e2442f89edc7c0
Author: shejialuo <shejialuo@gmail.com>
Date:   Fri Feb 28 00:06:06 2025 +0800

    builtin/refs: get worktrees without reading head information
    
    In "packed-backend.c", there are some functions such as "create_snapshot"
    and "next_record" which would check the correctness of the content of
    the "packed-ref" file. When anything is bad, the program will die.
    
    It may seem that we have nothing relevant to above feature, because we
    are going to read and parse the raw "packed-ref" file without creating
    the snapshot and using the ref iterator to check the consistency.
    
    However, when using "get_worktrees" in "builtin/refs", we would parse
    the "HEAD" information. If the referent of the "HEAD" is inside the
    "packed-ref", we will call "create_snapshot" function to parse the
    "packed-ref" to get the information. No matter whether the entry of
    "HEAD" in "packed-ref" is correct, "create_snapshot" would call
    "verify_buffer_safe" to check whether there is a newline in the last
    line of the file. If not, the program will die.
    
    Although this behavior has no harm for the program, it will
    short-circuit the program. When the users execute "git refs verify" or
    "git fsck", we should avoid reading the head information, which may
    execute the read operation in packed backend with stricter checks to die
    the program. Instead, we should continue to check other parts of the
    "packed-refs" file completely.
    
    Fortunately, in 465a22b338 (worktree: skip reading HEAD when repairing
    worktrees, 2023-12-29), we have introduced a function
    "get_worktrees_internal" which allows us to get worktrees without
    reading head information.
    
    Create a new exposed function "get_worktrees_without_reading_head", then
    replace the "get_worktrees" in "builtin/refs" with the new created
    function.
    
    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 320f2061b63b0157ea8b21362ed12e4ce90258e2
Author: shejialuo <shejialuo@gmail.com>
Date:   Fri Feb 28 00:05:55 2025 +0800

    t0602: use subshell to ensure working directory unchanged
    
    For every test, we would execute the command "cd repo" in the first but
    we never execute the command "cd .." to restore the working directory.
    However, it's either not a good idea use above way. Because if any test
    fails between "cd repo" and "cd ..", the "cd .." will never be reached.
    And we cannot correctly restore the working directory.
    
    Let's use subshell to ensure that the current working directory could be
    restored to the correct path.
    
    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 42c0ae87b126c6787791d005ec559bf3f6bc5de7
Merge: 76db3e05d5 08bdfd4535
Author: Junio C Hamano <gitster@pobox.com>
Date:   Wed Feb 26 09:21:02 2025 -0800

    Sync with 'master'

commit 76db3e05d55a7d485e776ee1981179b10871051e
Merge: c2b83ec2e7 887758c998
Author: Junio C Hamano <gitster@pobox.com>
Date:   Wed Feb 26 09:20:33 2025 -0800

    Merge branch 'jc/3.0-branches-remotes-update' into next
    
    Rephrase removal of ".git/branches" and ".git/remotes" support in
    the BreakingChanges document.
    
    Comments?
    
    * jc/3.0-branches-remotes-update:
      BreakingChanges: clarify branches/ and remotes/

commit c2b83ec2e7b6a02d6c8f4756b4aa5e47010deac7
Merge: 1773f2a2ff 3306edb380
Author: Junio C Hamano <gitster@pobox.com>
Date:   Wed Feb 26 09:20:33 2025 -0800

    Merge branch 'bc/http-push-auth-netrc-fix' into next
    
    The netrc support (via the cURL library) for the HTTP transport has
    been re-enabled.
    
    * bc/http-push-auth-netrc-fix:
      http: allow using netrc for WebDAV-based HTTP protocol

commit 1773f2a2ff8b122452da2c1a080abadd92d3d4a6
Merge: 6f97affbc4 1ca727f230
Author: Junio C Hamano <gitster@pobox.com>
Date:   Wed Feb 26 09:20:32 2025 -0800

    Merge branch 'rs/clear-commit-marks-optim' into next
    
    A micro-optimization.
    
    * rs/clear-commit-marks-optim:
      commit: avoid parent list buildup in clear_commit_marks_many()

commit 6f97affbc47713589631ee58027b956ed723e2a1
Author: Junio C Hamano <gitster@pobox.com>
Date:   Tue Feb 25 16:12:06 2025 -0800

    Revert "Merge branch 'ps/build-meson-fixes-0130' into next"
    
    This reverts commit 6cd5b60792c63fcf958b0a48813a84830a5764d6, reversing
    changes made to 89ad48db1442b5f60b4d0bd02a5edf2044ef411b.

commit 4e5a29be8250487b387ff3b254e30b2320407821
Merge: 63db268d47 5a526e5e18
Author: Junio C Hamano <gitster@pobox.com>
Date:   Tue Feb 25 15:03:41 2025 -0800

    Sync with 'master

commit 63db268d4778f250892479e7e517e23c54ac8eda
Author: Junio C Hamano <gitster@pobox.com>
Date:   Tue Feb 25 15:03:32 2025 -0800

    Merge branch 'pw/rebase-i-ff-empty-commit' into next
    
    "git rebase -i" failed to allow rewording an empty commit that has
    been fast-forwarded.
    
    * pw/rebase-i-ff-empty-commit:
      rebase -i: reword empty commit after fast-forward

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
Created: 2017-12-03 Last update: 2025-05-09 14:32
lintian reports 18 warnings normal
Lintian reports 18 warnings about this package. You should make the package lintian clean getting rid of them.
Created: 2025-03-16 Last update: 2025-03-16 12:00
Build log checks report 1 warning low
Build log checks report 1 warning
Created: 2024-03-28 Last update: 2024-03-28 01:30
Standards version of the package is outdated. wishlist
The package should be updated to follow the last version of Debian Policy (Standards-Version 4.7.2 instead of 4.7.0).
Created: 2019-07-08 Last update: 2025-03-16 00:25
testing migrations
  • excuses:
    • Migration status for git (1:2.47.2-0.1 to 1:2.49.0-1): BLOCKED: Rejected/violates migration policy/introduces a regression
    • Issues preventing migration:
    • ∙ ∙ Updating git would introduce bugs in testing: #1102106
    • ∙ ∙ missing build on s390x
    • ∙ ∙ arch:s390x not built yet, autopkgtest delayed there
    • ∙ ∙ autopkgtest for setuptools-scm/8.2.1-1: amd64: Pass, arm64: Pass, armel: Pass, armhf: Pass, i386: Pass, ppc64el: Pass, riscv64: Test in progress
    • Additional info:
    • ∙ ∙ Updating git will fix bugs in testing: #1103422
    • ∙ ∙ Piuparts tested OK - https://piuparts.debian.org/sid/source/g/git.html
    • ∙ ∙ Reproducible on amd64 - info ♻
    • ∙ ∙ Reproducible on arm64 - info ♻
    • ∙ ∙ Reproducible on armhf - info ♻
    • ∙ ∙ Reproducible on i386 - info ♻
    • ∙ ∙ 55 days old (needed 10 days)
    • Not considered
news
[rss feed]
  • [2025-03-16] Accepted git 1:2.49.0+next.20250314-1 (source) into experimental (Jonathan Nieder)
  • [2025-03-15] Accepted git 1:2.49.0-1 (source) into unstable (Jonathan Nieder)
  • [2025-01-29] git 1:2.47.2-0.1 MIGRATED to testing (Debian testing watch)
  • [2025-01-28] Accepted git 1:2.30.2-1+deb11u4 (source) into oldstable-security (Sean Whitton)
  • [2025-01-27] Accepted git 1:2.39.5-0+deb12u2 (source) into proposed-updates (Debian FTP Masters) (signed by: Salvatore Bonaccorso)
  • [2025-01-26] Accepted git 1:2.39.5-0+deb12u2 (source) into stable-security (Debian FTP Masters) (signed by: Salvatore Bonaccorso)
  • [2025-01-21] Accepted git 1:2.47.2-0.1 (source) into unstable (Salvatore Bonaccorso)
  • [2025-01-02] Accepted git 1:2.48.0~rc1+next.20250101-1 (source) into experimental (Jonathan Nieder)
  • [2025-01-02] Accepted git 1:2.47.1-1 (source) into unstable (Jonathan Nieder)
  • [2024-12-22] Accepted git 1:2.45.2-1.3 (source) into unstable (Chris Hofstaedtler) (signed by: Christian Hofstaedtler)
  • [2024-11-08] Accepted git 1:2.45.2-1.2 (source) into unstable (Chris Hofstaedtler) (signed by: Christian Hofstaedtler)
  • [2024-10-23] Accepted git 1:2.45.2-1.1 (source) into unstable (Chris Hofstaedtler) (signed by: Christian Hofstaedtler)
  • [2024-09-15] Accepted git 1:2.39.5-0+deb12u1 (source) into proposed-updates (Debian FTP Masters) (signed by: Jonathan Nieder)
  • [2024-09-13] Accepted git 1:2.39.5-0+deb12u1 (source) into stable-security (Debian FTP Masters) (signed by: Jonathan Nieder)
  • [2024-09-03] Accepted git 1:2.30.2-1+deb11u3 (source) into oldstable-security (Sean Whitton)
  • [2024-08-25] git 1:2.45.2-1 MIGRATED to testing (Debian testing watch)
  • [2024-06-26] Accepted git 1:2.20.1-2+deb10u9 (source) into oldoldstable (Sean Whitton)
  • [2024-06-16] Accepted git 1:2.45.2+next.20240614-1 (source) into experimental (Jonathan Nieder)
  • [2024-06-16] Accepted git 1:2.45.2-1 (source) into unstable (Jonathan Nieder)
  • [2024-05-20] Accepted git 1:2.45.1+next.20240516-1 (source) into experimental (Jonathan Nieder)
  • [2024-05-20] Accepted git 1:2.45.1-1 (source) into unstable (Jonathan Nieder)
  • [2024-01-06] Accepted git 1:2.43.0+next.20240104-1 (source) into experimental (Josh Steadmon) (signed by: Jonathan Nieder)
  • [2023-12-12] git 1:2.43.0-1 MIGRATED to testing (Debian testing watch)
  • [2023-11-27] Accepted git 1:2.43.0+next.20231120-1 (source) into experimental (Jonathan Nieder)
  • [2023-11-27] Accepted git 1:2.43.0-1 (source) into unstable (Jonathan Nieder)
  • [2023-10-08] git 1:2.42.0-1 MIGRATED to testing (Debian testing watch)
  • [2023-09-27] Accepted git 1:2.42.0-1 (source) into unstable (Jonathan Nieder)
  • [2023-06-20] git 1:2.40.1-1 MIGRATED to testing (Debian testing watch)
  • [2023-04-28] Accepted git 1:2.40.1+next.20230427-1 (source) into experimental (Jonathan Nieder)
  • [2023-04-26] Accepted git 1:2.40.1+next.20230424-1 (source) into experimental (Jonathan Nieder)
  • 1
  • 2
bugs [bug history graph]
  • all: 447 462
  • RC: 1
  • I&N: 202 203
  • M&W: 244 258
  • F&P: 0
  • patch: 26 33
links
  • homepage
  • lintian (0, 18)
  • buildd: logs, exp, checks, reproducibility, cross
  • popcon
  • browse source code
  • edit tags
  • other distros
  • security tracker
  • screenshots
  • l10n (-, 93)
ubuntu Ubuntu logo [Information about Ubuntu for Debian Developers]
  • version: 1:2.48.1-0ubuntu1
  • 92 bugs (2 patches)
  • patches for 1:2.48.1-0ubuntu1

Debian Package Tracker — Copyright 2013-2025 The Distro Tracker Developers
Report problems to the tracker.debian.org pseudo-package in the Debian BTS.
Documentation — Bugs — Git Repository — Contributing