summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2026-06-29Git 2.55v2.55.0maintJunio C Hamano2-2/+4
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-06-29Merge branch 'jk/t5551-expensive-test-timeouts-fix'Junio C Hamano2-4/+6
The Apache timeout in HTTP tests has been increased to prevent test failures on heavily loaded CI runners. The tests creating an enormous number of refs have been isolated to their own repositories to avoid slowing down subsequent tests. * jk/t5551-expensive-test-timeouts-fix: t5551: put many-tags case into its own repo t/lib-httpd: bump apache timeout
2026-06-29t5551: put many-tags case into its own repoJeff King1-4/+5
Most of the t5551 http fetch tests use a handful of refs. But there are a few test cases which check our handling of large numbers of refs. These tests use the same server-side repo, so all subsequent tests end up having to consider those extra refs, too. The result is that the test script is a bit slower than it needs to be. In a normal run, moving the "2,000 tags" test into its own repo drops my runtime for the whole script from ~2.7s to ~1.9s. This is a modest gain, but when we add the "--long" flag it gets much bigger. There we trigger a test (marked with EXPENSIVE) that adds 100,000 tags, and the script runtime jumps to ~95s. But if we use the same "many tags" repo for that, our runtime drops to just ~37s. This is a pretty easy win to drop the cost of the script. It may even be a larger gain on a heavily loaded system, since one of the main costs here is unpacked refs, which are heavy on system time and I/O costs. It's possible we are reducing test coverage, since all of those other tests were inadvertently using large ref advertisements (and thus could have uncovered some unexpected interaction). But that seems somewhat unlikely; the tests targeted at the large number of refs are doing roughly similar things to the other tests. Note that the real performance culprit is the 100k-tag --long test, not the 2k-tag one. So we could just let the 100k one use its own repo, and keep the 2k tags in the main repo. But since these two tests are somewhat interlinked, it's easier to just move them both (and it does provide a small gain even for the 2000-tag test). I also notice that the 2000-tag test is gated on the CMDLINE_LIMIT prereq, and without that the later EXPENSIVE test will fail (since we won't have a too-many-refs clone). Nobody seems to have noticed or complained after many years, and I left it alone for this patch. Signed-off-by: Jeff King <peff@peff.net> [jc: made the new "many-tags.git" bare to match the original "repo.git"] Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-06-28Merge branch 'js/http-https-proxy-fix'Junio C Hamano1-0/+2
We lost ability to use https:// proxies during this cycle; this is a hotfix for the regression. * js/http-https-proxy-fix: http: accept https:// proxies again
2026-06-28t/lib-httpd: bump apache timeoutJeff King1-0/+1
Since enabling more tests with 7a094d68a2 (ci: run expensive tests on push builds to integration branches, 2026-05-08), we sometimes see test failures or timeouts in GitHub CI. The culprit seems to be the "enormous ref negotiation" test in t5551, which creates ~100k tag refs in our http server-side repo. Iterating through the loose refs of this repo to generate a ref advertisement can take a long time, especially on a platform with slow I/O. On my otherwise unloaded local machine, a cold cache ref advertisement takes ~10s. On a busy CI machine running tests in parallel, it can presumably top 60s, which runs afoul of Apache's default CGI timeout. The result in t5551 is a test failure, where Apache simply hangs up the connection and the client reports an error. But worse, t5559 runs the same test with HTTP/2, and a bug in Apache causes the connection to hang indefinitely! We eventually see this as a CI timeout after 6 hours. Let's bump Apache's timeout to something much larger: 600 seconds. This doesn't eliminate the possibility of a timeout, but it makes it much less likely. It should eliminate both the test failures and the CI timeouts in practice, and it protects us from running into similar problems with other tests in the future. There are two counter-arguments to consider. One, could/should we just make the test faster? Probably yes. The biggest mistake here is having such an absurd number of unpacked refs on a system which is bottle-necked on I/O. But I think it's worth bumping the timeout so that we can fix this (and possibly other) correctness issues, and then consider performance separately (which we'll do in subsequent patches). And two, is this just papering over a problem that users might see in the real world? We could teach Git to handle this case more gracefully with optimizations or keep-alives. But I think it's really an artificial situation. You need a combination of this silly number of loose refs, plus a very heavily loaded system. If you were trying to run a real server and it took more than 60s to generate the ref advertisement, I don't think the timeout is your biggest problem. Your crappy service is, and you should adjust your resources to match your load. I.e., it is probably reasonable for Git to assume that advertisements happen fast-ish and don't need protocol-level keepalives. Though the patch here is small, tons of work went into analyzing the problem. Many thanks to the contributors credited below. Helped-by: Michael Montalbo <mmontalbo@gmail.com> Helped-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-06-28http: accept https:// proxies againJohannes Schindelin1-0/+2
Since 663d7abe07ea (http: reject unsupported proxy URL schemes, 2026-05-05), set_curl_proxy_type() returns 0 only for the "http" and SOCKS variants via dedicated early returns, and -1 for everything else. The "https" branch configures the CURL handle for HTTPS proxying but then falls through to the trailing `return -1` intended for unknown schemes, so the caller in get_curl_handle() treats a perfectly valid https:// proxy URL as unsupported and refuses to use it. Noticed while looking into a Coverity report against the same function; the unchecked curl_easy_setopt() return values it flags are orthogonal to this fix. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-06-28Merge tag 'l10n-2.55.0-v1' of https://github.com/git-l10n/git-poJunio C Hamano13-3760/+9697
l10n-2.55.0-v1 * tag 'l10n-2.55.0-v1' of https://github.com/git-l10n/git-po: l10n: zh-TW.po: Update Chinese (Traditional) translation l10n: uk: add 2.55 translation l10n: ga.po: update for Git 2.55 l10n: fr: mass fix of typos l10n: fr: version 2.55 l10n: po-id for 2.55 l10n: AGENTS.md: add quotation mark preservation guidelines l10n: zh_CN: updated translation for 2.55 l10n: TEAMS: change Simplified Chinese team leader l10n: sv.po: Update Swedish translation l10n: ca.po: update Catalan translation l10n: tr: Update Turkish translations l10n: bg.po: Updated Bulgarian translation (6322t) l10n: it: fix italian usage messages alignment
2026-06-28Merge branch '2.55-uk-pr' of github.com:arkid15r/git-ukrainian-l10nJiang Xin1-617/+1761
* '2.55-uk-pr' of github.com:arkid15r/git-ukrainian-l10n: l10n: uk: add 2.55 translation
2026-06-28Merge branch 'l10n-ga-2.55' of github.com:aindriu80/git-poJiang Xin1-209/+655
* 'l10n-ga-2.55' of github.com:aindriu80/git-po: l10n: ga.po: update for Git 2.55
2026-06-28Merge branch 'l10n/zh-TW/2026-06-26' of github.com:l10n-tw/git-poJiang Xin1-972/+1285
* 'l10n/zh-TW/2026-06-26' of github.com:l10n-tw/git-po: l10n: zh-TW.po: Update Chinese (Traditional) translation
2026-06-28Merge branch 'ca-20260624-b' of github.com:Softcatala/git-poJiang Xin1-427/+994
* 'ca-20260624-b' of github.com:Softcatala/git-po: l10n: ca.po: update Catalan translation
2026-06-28Merge branch 'zh_CN-2.55' of github.com:lilydjwg/git-poJiang Xin2-269/+769
* 'zh_CN-2.55' of github.com:lilydjwg/git-po: l10n: zh_CN: updated translation for 2.55 l10n: TEAMS: change Simplified Chinese team leader
2026-06-28Merge branch 'tr-l10n' of github.com:bitigchi/git-poJiang Xin1-169/+583
* 'tr-l10n' of github.com:bitigchi/git-po: l10n: tr: Update Turkish translations
2026-06-28Merge branch 'po-id' of github.com:bagasme/git-poJiang Xin1-524/+1754
* 'po-id' of github.com:bagasme/git-po: l10n: po-id for 2.55
2026-06-28Merge branch 'master' of github.com:alshopov/git-poJiang Xin1-164/+632
* 'master' of github.com:alshopov/git-po: l10n: bg.po: Updated Bulgarian translation (6322t)
2026-06-28Merge branch 'fr_v2.55' of github.com:jnavila/gitJiang Xin1-225/+611
* 'fr_v2.55' of github.com:jnavila/git: l10n: fr: mass fix of typos l10n: fr: version 2.55
2026-06-28Merge branch 'master' of github.com:nafmo/git-l10n-svJiang Xin1-182/+602
* 'master' of github.com:nafmo/git-l10n-sv: l10n: sv.po: Update Swedish translation
2026-06-28l10n: zh-TW.po: Update Chinese (Traditional) translationLumynous1-972/+1285
Signed-off-by: Yi-Jyun Pan <pan93412@gmail.com>
2026-06-27l10n: uk: add 2.55 translationArkadii Yakovets1-617/+1761
Co-authored-by: Kate Golovanova <kate@kgthreads.com> Signed-off-by: Arkadii Yakovets <ark@cho.red> Signed-off-by: Kate Golovanova <kate@kgthreads.com>
2026-06-27l10n: ga.po: update for Git 2.55Aindriú Mac Giolla Eoin1-209/+655
Signed-off-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com>
2026-06-27l10n: fr: mass fix of typosJean-Noël Avila1-30/+30
Helped-by: Kévin Leprêtre <k.lepretre@houseofhr.onmicrosoft.com> Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
2026-06-27l10n: fr: version 2.55Jean-Noël Avila1-195/+581
Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
2026-06-27l10n: po-id for 2.55Bagas Sanjaya1-524/+1754
Update following components: * add-patch.c * apply.c * bisect.c * builtin/add.c * builtin/backfill.c * builtin/bisect.c * builtin/cat-file.c * builtin/checkout.c * builtin/config.c * builtin/fast-import.c * builtin/fetch.c * builtin/fsmonitor--daemon.c * builtin/hook.c * builtin/index-pack.c * builtin/interpret-trailers.c * builtin/last-modified.c * builtin/log.c * builtin/multi-pack-index.c * builtin/name-rev.c * builtin/pack-objects.c * builtin/push.c * builtin/repack.c * builtin/replay.c * builtin/repo.c * builtin/show-index.c * builtin/stash.c * builtin/submodule--helper.c * builtin/worktree.c * command-list.h * diff.c * fetch-pack.c * hook.c * list-objects-filter-options.c * lockfile.c * midx-write.c * midx.c * object-file.c * object.c * packfile.c * path-walk.c * pretty.c * promisor-remote.c * pseudo-merge.c * read-cache.c * refs.c * remote-curl.c * repack-midx.c * replay.c * repository.c * revision.c * sequencer.c * setup.c * submodule.c * t/helper/test-path-walk.c * t/helper/test-read-midx.c * trailer.c * git-send-email.perl Translate following new components: * builtin/history.c * builtin/url-parse.c * compat/fsmonitor/fsm-listen-linux.c * sideband.c * t/helper/test-synthesize.c Signed-off-by: Bagas Sanjaya <bagasdotme@gmail.com>
2026-06-26Merge branch 'master' of github.com:mbeniamino/git-poJiang Xin1-1/+1
* 'master' of github.com:mbeniamino/git-po: l10n: it: fix italian usage messages alignment
2026-06-26l10n: AGENTS.md: add quotation mark preservation guidelinesJiang Xin1-1/+50
Add a "Preserving Quotation Marks" section to prevent AI-assisted translation and review from incorrectly converting language-specific UTF-8 curly quotes (e.g., „ U+201E, " U+201C for Bulgarian) into ASCII straight quotes " (U+0022), which would cause PO string truncation and syntax errors. Also update the "Special characters" item in the Quality checklist to reference the new section. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2026-06-26l10n: zh_CN: updated translation for 2.55lilydjwg1-266/+766
Reviewed-by: Jiang Xin <worldhello.net@gmail.com> Reviewed-by: Fangyi Zhou <me@fangyi.io> Signed-off-by: lilydjwg <lilydjwg@gmail.com>
2026-06-26l10n: TEAMS: change Simplified Chinese team leaderlilydjwg1-3/+3
Signed-off-by: lilydjwg <lilydjwg@gmail.com>
2026-06-25Merge branch 'ps/t4216-tap-fix'Junio C Hamano1-21/+0
TAP output breakage fix. * ps/t4216-tap-fix: t4216: fix no-op test that breaks TAP output
2026-06-25t4216: fix no-op test that breaks TAP outputPatrick Steinhardt1-21/+0
In t4216 we have have a prerequisite that is active in case the system's `char` type is signed by default. This prerequisite isn't really used by anything though: while it is used to guard one of our tests, that specific test is essentially a no-op. So all this infrastructure does is to provide some debugging hint to a reader that pays a lot of attention. Besides that, the way we set up the prerequisite also results in broken TAP output on systems where `char` is unsigned by default: we use `test_cmp()` to diff two files outside of of any test body, and if the files differ we enable the prerequisite. If so, the call to `test_cmp()` would also print output, and that output is of course not valid TAP output. That wasn't a problem before 389c83025d (t: let prove fail when parsing invalid TAP output, 2026-06-04), because our TAP parser was configured to be lenient. But starting with that commit, t4216 is now failing on systems with unsigned chars. Drop the whole infrastructure. The prerequisite is not used anywhere else, and the only location where it's used doesn't really provide much value. Reported-by: Todd Zullinger <tmz@pobox.com> Signed-off-by: Patrick Steinhardt <ps@pks.im> Tested-by: Todd Zullinger <tmz@pobox.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-06-25l10n: sv.po: Update Swedish translationPeter Krefting1-182/+602
Reviewed-by: Tuomas Ahola <taahol@utu.fi> Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
2026-06-25l10n: ca.po: update Catalan translationMikel Forcada1-427/+994
Signed-off-by: Mikel Forcada <mlf@prompsit.com>
2026-06-24l10n: tr: Update Turkish translationsEmir SARI1-169/+583
Signed-off-by: Emir SARI <emir_sari@icloud.com>
2026-06-24l10n: bg.po: Updated Bulgarian translation (6322t)Alexander Shopov1-164/+632
Signed-off-by: Alexander Shopov <ash@kambanaria.org>
2026-06-22Git 2.55-rc2v2.55.0-rc2Junio C Hamano2-1/+10
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-06-22Merge branch 'hn/macos-linker-warning'Junio C Hamano1-2/+9
Xcode 15 and later has a linker set to complain when the same library archive is listed twice on the command line. Squelch the annoyance. * hn/macos-linker-warning: config.mak.uname: avoid macOS dup-library warning
2026-06-22Merge branch 'js/win32-localtime-r'Junio C Hamano1-1/+1
Build-fix for 32-bit Windows. * js/win32-localtime-r: win32: ensure that `localtime_r()` is declared even in i686 builds
2026-06-22Merge branch 'ps/gitlab-ci-windows'Junio C Hamano2-3/+63
Wean the Windows builds in GitLab CI procedure away from (unfortunately unreliable) Chocolatey to install dependencies. * ps/gitlab-ci-windows: gitlab-ci: migrate Windows builds away from Chocolatey
2026-06-22win32: ensure that `localtime_r()` is declared even in i686 buildsJohannes Schindelin1-1/+1
The `__MINGW64__` constant is defined, surprise, surprise, only when building for a 64-bit CPU architecture. Therefore using it as a guard to define `_POSIX_C_SOURCE` (so that `localtime_r()` is declared, among other functions) is not enough, we also need to check `__MINGW32__`. Technically, the latter constant is defined even for 64-bit builds. But let's make things a bit easier to understand by testing for both constants. Making it so fixes this compile warning (turned error in GCC v14.1): archive-zip.c: In function 'dos_time': archive-zip.c:612:9: error: implicit declaration of function 'localtime_r'; did you mean 'localtime_s'? [-Wimplicit-function-declaration] 612 | localtime_r(&time, &tm); | ^~~~~~~~~~~ | localtime_s Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-06-21A few more topics before -rc2Junio C Hamano1-0/+1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-06-21Merge branch 'js/objects-larger-than-4gb-on-windows-more'Junio C Hamano72-271/+300
* js/objects-larger-than-4gb-on-windows-more: odb: use size_t for object_info.sizep and the size APIs packfile,delta: drop the `cast_size_t_to_ulong()` wrappers pack-objects: use size_t for in-core object sizes packfile: widen unpack_entry()'s size out-parameter to size_t pack-objects(check_pack_inflate()): use size_t instead of unsigned long patch-delta: use size_t for sizes compat/msvc: use _chsize_s for ftruncate
2026-06-21Merge branch 'kw/gitattributes-typofix'Junio C Hamano1-1/+1
* kw/gitattributes-typofix: gitattributes: fix eol attribute for Perl scripts
2026-06-19config.mak.uname: avoid macOS dup-library warningHarald Nordgren1-2/+9
Building on macOS with Xcode 15 or newer emits: ld: warning: ignoring duplicate libraries: 'libgit.a', 'target/release/libgitcore.a' Some link recipes list the same archive twice, which is harmless. Quiet the warning instead. Pass -Wl,-no_warn_duplicate_libraries on Xcode 15 and newer, whose linkers added both the warning and the suppression flag (ld64-907 and dyld-1009). Earlier linkers reject the flag, so gate on the linker version. Broaden the existing -fno-common version probe to also match the "ld64-NNN" and "dyld-NNN" forms Xcode 15 reports. Signed-off-by: Harald Nordgren <haraldnordgren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-06-19Merge branch 'js/objects-larger-than-4gb-on-windows'Junio C Hamano1-4/+9
A hotfix to an earlier attempt to update code paths that assumed "unsigned long" was long enough for "size_t". * js/objects-larger-than-4gb-on-windows: zlib: properly clamp to uLong
2026-06-18zlib: properly clamp to uLongJohannes Schindelin1-4/+9
On platforms where `unsigned long` and `size_t` differ in bit size, we want to clamp the buffers we pass to zlib to the former's size, as per d05d666977 (git-zlib: handle data streams larger than 4GB, 2026-05-08). The logic introduced in that commit performs a clamping to the bits, though, which fails to do what is needed here: If too many bytes are available in the buffers, we need to clamp to the maximum value of an `unsigned long`. Otherwise, we ask zlib to use too small buffers, in the worst case using 0 as the size (think: a value whose 32 lowest bits are all zero). Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-06-17gitlab-ci: migrate Windows builds away from ChocolateyPatrick Steinhardt2-3/+63
The Windows builds in GitLab CI use Chocolatey to install dependencies. Unfortunately, Chocolatey seems to be very unreliable, which causes the jobs to fail very regularly. This is a limitation that seems to be somewhat known [1]: As an organization, you want 100% reliability (or at least that potential), and you may want full trust and control as well. This is something you can get with internally hosted packages, and you are unlikely to achieve from use of the Community Package Repository. So using the Community Package Repository is kind of discouraged in case one wants reliability. We _do_ want reliability though, and we cannot easily switch to an enterprise license to fix this issue. Introduce a new script that downloads and installs dependencies directly. This has a couple of benefits: - We can drop our dependency on Chocolatey completely, thus improving reliability. - We can easily cache the installers. - We get direct control over the exact versions we install. - Installing dependencies is sped up from roundabout 3 minutes to 1 minute. [1]: https://docs.chocolatey.org/en-us/community-repository/community-packages-disclaimer/#summary Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-06-17Hopefully final batch before -rc2Junio C Hamano1-0/+32
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-06-17Merge branch 'en/commit-graph-timestamp-fix'Junio C Hamano2-1/+10
compute_reachable_generation_numbers() in commit-graph used a 32-bit integer to accumulate parent generations, which is OK for generation number v1 (topological levels), but with generation number v2 (adjusted committer timestamps), it truncated timestamps beyond 2106. Fixed by widening the accumulator to timestamp_t. * en/commit-graph-timestamp-fix: commit-graph: use timestamp_t for max parent generation accumulator
2026-06-17Merge branch 'dl/posix-unused-warning-clang'Junio C Hamano1-12/+23
The UNUSED macro in 'compat/posix.h' has been updated to use a newly introduced GIT_CLANG_PREREQ macro for compiler version checks, and the existing GIT_GNUC_PREREQ macro has been modernized to use explicit major/minor comparisons rather than bit-shifting. * dl/posix-unused-warning-clang: compat/posix.h: simplify GIT_GNUC_PREREQ() comparison compat/posix.h: clean up GIT_GNUC_PREREQ() and UNUSED compat/posix.h: enable UNUSED warning messages for Clang
2026-06-17Merge branch 'td/ls-files-pathspec-prefilter'Junio C Hamano4-0/+61
`git ls-files --modified` and `git ls-files --deleted` have been optimized to filter with pathspec before calling lstat() when there is only a single pathspec item, avoiding unnecessary filesystem access for entries that will not be shown. * td/ls-files-pathspec-prefilter: ls-files: filter pathspec before lstat
2026-06-17Merge branch 'ta/doc-config-adoc-fixes'Junio C Hamano5-5/+13
Various AsciiDoc markup fixes in 'git config' documentation and related files to ensure lists and formatting are rendered correctly. * ta/doc-config-adoc-fixes: doc: git-config: escape erroneous highlight markup doc: config/sideband: fix description list delimiter doc: config: terminate runaway lists