aboutsummaryrefslogtreecommitdiffstats
path: root/gitweb/test (unfollow)
AgeCommit message (Collapse)AuthorFilesLines
10 daysGit 2.53v2.53.0maintJunio C Hamano1-1/+1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 daysRelNotes: fully spell negationCarlo Marcelo Arenas Belón1-1/+1
Signed-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 daysl10n: zh_CN: standardize glossary termsJiang Xin1-1085/+1098
Add preferred Chinese terminology notes and align existing translations to the updated glossary. AI-assisted review was used to check and improve legacy translations. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
13 daysRelNotes: correct "fast-import" option nameJunio C Hamano1-2/+2
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 daysl10n: zh_CN: updated translation for 2.53Jiang Xin1-209/+345
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
14 daysl10n: zh_CN: fix inconsistent use of standard vs. wide colonsJiang Xin1-27/+27
Replace mixed usage of standard (ASCII) colons ':' with full-width (wide) colons ':' in Chinese translations to ensure typographic consistency, as reported by CAESIUS-TIM [1]. Full-width punctuation is preferred in Chinese localization for better readability and adherence to typesetting conventions. [1]: https://github.com/git-l10n/git-po/issues/884 Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2026-01-28l10n: fr: v2.53Jean-Noël Avila1-238/+296
Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
2026-01-28l10n: zh_TW.po: update Git 2.53 translationYi-Jyun Pan1-720/+348
Co-authored-by: Lumynous <lumynou5.tw@gmail.com> Signed-off-by: Yi-Jyun Pan <pan93412@gmail.com>
2026-01-27RelNotes: a few spelling fixesJunio C Hamano1-3/+3
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-27l10n: tr: Update Turkish translationsEmir SARI1-196/+303
Signed-off-by: Emir SARI <emir_sari@icloud.com>
2026-01-27l10n: sv.po: Update Swedish translationPeter Krefting1-188/+296
Also fix typos reported by Tuomas Ahola. Helped-by: Tuomas Ahola <taahol@utu.fi>. Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
2026-01-26Git 2.53-rc2v2.53.0-rc2Junio C Hamano2-4/+1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-27l10n: po-id for 2.53Bagas Sanjaya1-217/+351
Update following components: * branch.c * builtin/blame.c * builtin/config.c * builtin/fast-export.c * builtin/fast-import.c * builtin/fetch.c * builtin/gc.c * builtin/index-pack.c * builtin/pack-objects.c * builtin/patch-id.c * builtin/replay.c * builtin/repo.c * bundle-uri.c * command-list.c * object-file.c * refs/reftable-backend.c * repack-promisor.c * strbuf.c Signed-off-by: Bagas Sanjaya <bagasdotme@gmail.com>
2026-01-26l10n: ga.po: Fix git-po-helper warningsAindriú Mac Giolla Eoin1-2/+2
Signed-off-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com>
2026-01-25Revert "Merge branch 'cs/rebased-subtree-split'"Junio C Hamano2-169/+55
This reverts commit 79e3055baba32e2952e6e8994cdcd4fc145ba7f0, reversing changes made to 9813aace1e52765e01e688672cdcdcbe25336ec7. Regresison report https://lore.kernel.org/git/755578cb-07e0-4b40-aa90-aacf4d45ccaa@heusel.eu/
2026-01-25l10n: bg.po: Updated Bulgarian translation (6091t)Alexander Shopov1-224/+352
Signed-off-by: Alexander Shopov <ash@kambanaria.org>
2026-01-25git-gui: mark *.po files at any directory level as UTF-8Johannes Sixt1-1/+1
When a commit is viewed in Gitk that changes a file in po/glossary, the patch text shows mojibake instead of correctly decoded UTF-8 text. Gitk retrieves the encoding attribute to decide how to treat the bytes that make up the patch text. There is an attribute definition that all files are US-ASCII, and a later attribute definition overrides this. But the override, which specifies UTF-8, applies only to *.po files in directory po/ and does not apply to subdirectories. Widen the pattern to apply to all directory levels. Signed-off-by: Johannes Sixt <j6t@kdbg.org>
2026-01-24git-gui i18n: Update Bulgarian translation (558t)Alexander Shopov2-187/+305
- Translate new string (558t) - Add graves for disambiguation - Improve glossary translation (96t) and synchonize with git Signed-off-by: Alexander Shopov <ash@kambanaria.org>
2026-01-23A bit more before -rc2Junio C Hamano1-2/+17
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-23l10n: ga.po: Update Irish translation for Git 2.53Aindriú Mac Giolla Eoin1-220/+407
Signed-off-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com>
2026-01-23git-gui i18n: Update Bulgarian translation (557t)Alexander Shopov1-4/+4
Fix the meaning of a string Signed-off-by: Alexander Shopov <ash@kambanaria.org>
2026-01-21A few on top of -rc1Junio C Hamano1-0/+11
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-21.mailmap: fix and expand mappings for Jean-Noël AvilaKristoffer Haugsbakk1-0/+3
The latest release candidate notes say that there is a new contributor: Jean-Noël Avila via GitGitGadget, ... But this is a familiar face, just in a G.G. Gadget trench coat. Also map the rest of the idents in the history. Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-21Git 2.53-rc1v2.53.0-rc1Junio C Hamano1-0/+23
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-21lint-gitlink: preemptively ignore all /ifn?def|endif/ macrosJean-Noël Avila1-1/+2
Instead of testing if the macro name is ifn?def:: as if it were a inline macro, it is faster and safer to just ignore such block macro lines before hand. Signed-off-by: Jean-Noël Avila <jn.avila@free.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-20replay: drop rev-list formatting options from manualD. Ben Knoble2-2/+3
The rev-list options in our manuals are quite long; git-replay's manual is no exception. Since replay doesn't use the formatting options at all (it has its own output format), drop them. This is the first time we have needed compound tests [1] for if[n]def in our documentation: git grep '^ifn\?def::' Documentation | grep '[,+]' [1]: https://docs.asciidoctor.org/asciidoc/latest/directives/ifdef-ifndef/ For both ifdef and ifndef, the "," takes on the intuitive meaning: - ifdef: if any of the listed attributes are set… - ifndef: unless any of the listed attributes are set (Use "+" for "all".) Signed-off-by: D. Ben Knoble <ben.knoble+github@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-20mailmap: add an entry for Phillip WoodPhillip Wood1-0/+2
While all my commits appear under the same address, other addresses appear in some commit trailers. Map those addresses to the canonical one. Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-19ci: skip CVS and P4 tests in leaks job, tooJunio C Hamano3-0/+13
Looking at the CI logs, the p4 and cvs tests account for another 24 minutes of test time and they offer minimal value for quite a similar reason as the previous step. Let's introduce and use a mechanism to skip these tests to save some resources. Suggested-by: Phillip Wood <phillip.wood@dunelm.org.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-17ci(*-leaks): skip the git-svn tests to save timeJohannes Schindelin1-0/+1
I noticed recently that the leak-checking jobs still take a lot of time, and upon analysis, the git-svn tests contribute significantly to this. Analyzing a recent CI run, I saw that the Git test suite contains 1,017 tests, running for approximately 5¼ hours total. Of these, 65 git-svn-related tests (~6% of test count) took 42.24 minutes combined, accounting for ~13.% of the total runtime. This implies that the git-svn tests are roughly twice as expernsive compared to the other tests. However, testing git-svn in the leak-checking jobs provides minimal value: git-svn is implemented as a Perl script, and leak checking only handles C code. While git-svn does call into Git's built-in commands that are implemented in C, these are standard Git operations that are already thoroughly exercised elsewhere in the test suite. Therefore, running the git-svn tests in the leak-checking jobs only adds to the overall run time with little value in return. Given that the leak-checking jobs are particularly time-intensive and these 42+ minutes of SVN tests per job provide no additional leak detection value, skip them in the *-leaks jobs to reduce CI runtime. Assisted-by: Claude Sonnet 4.5 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-17t1005: modernize "! test -f" to "test_path_is_missing"Tian Yuchen1-5/+5
Replace instances of "! test -f <file>" with "test_path_is_missing <file>". This macro provides better diagnostics when the test fails (it prints "Path exists:" instead of silently failing). Signed-off-by: Tian Yuchen <a3205153416@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-17help: report on whether or not gettext is enabledJiang Xin1-0/+3
When users report that Git has no localized output, we need to check not only their locale settings, but also whether Git was built with GETTEXT support in the first place. Expose this information via the existing build info output by adding a "gettext: enabled" line to `git version --build-options` (and therefore also to `git bugreport`) when `NO_GETTEXT` is not defined at build time. Signed-off-by: Jiang Xin <zhiyou.jx@alibaba-inc.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-16t0610-reftable-basics: mitigate a flaky test on cygwinRamsay Jones1-1/+1
Test #29 ('ref transaction: corrupted tables cause failure') started to fail intermittently for me (from v2.52.0-rc0) when running the testsuite with '-j8'. (Also, having moved to a new laptop and windows 11, rather than windows 10). If the test is run by hand, or without any parallelism, then it passes without issue. When the test fails (e.g. 1 out of 32 parallel runs) the cause is due to a permission error while corrupting a table file: ./test-lib.sh: line 1010: .git/reftable/0x000000000001-0x000000000002-d89bb8ee.ref: Permission denied This corruption is done in a shell loop, directly after a 'test_commit', which uses an ': >"$f"' expression to truncate the file. Adding a sleep of one second after the 'test_commit' and before the shell loop fixes the test (it is not clear why). Replacing the redirection shell expression with a 'test-tool truncate "$f" 0' invocation also provides a fix, which could simply be another way to change the timing sufficiently to win the race. During a debug session, I tried looking at the strace output for the shell redirection: $ rm /tmp/hello; echo hello >/tmp/hello; ls -l /tmp/hello -rw-r--r-- 1 ramsay None 6 Nov 10 17:25 /tmp/hello $ $ strace -o zzz bash -c ': >/tmp/hello' $ Similarly, for the test-tool solution: $ strace -o xxx ./t/helper/test-tool truncate /tmp/hello 0 $ When comparing the output, the differences seemed to be what you would expect and, if anything, the shell redirect probably would have taken longer than the test-tool solution (many fcntl() calls to dup the stdout to the <fd>). The call to the win32 api NtCreateFile() was identical, apart from the first (FileHandle) parameter, of course. In order to fix this flaky test on cygwin, despite not knowing why it works, replace the shell redirection with the above 'test-tool truncate' invocation. Helped-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-16t9700/test.pl: fix path type expectation on cygwinRamsay Jones1-1/+1
Commit 4ec7ac101b ("t9700: accommodate for Windows paths", 2025-12-17) changed the type of the absolute path to the git directory from unix to win32 for both GfW and cygwin. This fixed the test for GfW but causes new failures on cygwin, since the test expectation is that it uses unix paths on cygwin. In order to not break cygwin, disable the new code by removing the "or $^O eq 'cygwin'" sub-expression from the conditional part of the fix. Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-16Merge a handful more topics after -rc0Junio C Hamano1-0/+13
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-15cocci: remove obsolete the_repository rulesRené Scharfe1-117/+2
035c7de9e9e (cocci: apply the "revision.h" part of "the_repository.pending", 2023-03-28) removed the last of the repo-less functions and macros mentioned in the_repository.cocci at the time. No stragglers appeared since then. Remove the applied rules now that they have outlived their usefulness. Also add a reminder to eventually remove the just added rules for tree.h. Suggested-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-15Revert "Merge branch 'ar/run-command-hook'"Junio C Hamano13-586/+292
This reverts commit f406b8955295d01089ba2baf35eceadff2d11cae, reversing changes made to 1627809eeff75e6ec936fc609e7be46d5eb2fa9e. It seems to have caused a few regressions, two of the three known ones we have proposed solutions for. Let's give ourselves a bit more room to maneuver during the pre-release freeze period and restart once the 2.53 ships.
2026-01-15Git 2.53-rc0v2.53.0-rc0Junio C Hamano2-1/+8
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-15Documentation/config: fix replacement for --get-urlmatchPushkar Singh1-1/+1
The documentation claims that --get-urlmatch is replaced by git config get --all --show-names --url=<URL> <name> However, --url cannot be combined with --all, and this command fails in practice. Update the replacement to use only --url, which matches the actual behavior of --get-urlmatch. Signed-off-by: Pushkar Singh <pushkarkumarsingh1970@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-14builtin/repack: handle promisor packs with geometric repackingPatrick Steinhardt5-6/+124
When performing a fetch with an object filter, we mark the resulting packfile as a promisor pack. An object part of such a pack may miss any of its referenced objects, and Git knows to handle this case by fetching any such missing objects from the promisor remote. The "promisor" property needs to be retained going forward. So every time we pack a promisor object, the resulting pack must be marked as a promisor pack. git-repack(1) does this already: when a repository has a promisor remote, it knows to pass "--exclude-promisor-objects" to the git-pack-objects(1) child process. Promisor packs are written separately when doing an all-into-one repack via `repack_promisor_objects()`. But we don't support promisor objects when doing a geometric repack yet. Promisor packs do not get any special treatment there, as we simply merge promisor and non-promisor packs. The resulting pack is not even marked as a promisor pack, which essentially corrupts the repository. This corruption couldn't happen in the real world though: we pass both "--exclude-promisor-objects" and "--stdin-packs" to git-pack-objects(1) if a repository has a promisor remote, but as those options are mutually exclusive we always end up dying. And while we made those flags compatible with one another in a preceding commit, we still end up dying in case git-pack-objects(1) is asked to repack a promisor pack. There's multiple ways to fix this: - We can exclude promisor packs from the geometric progression altogether. This would have the consequence that we never repack promisor packs at all. But in a partial clone it is quite likely that the user generates a bunch of promisor packs over time, as every backfill fetch would create another one. So this doesn't really feel like a sensible option. - We can adapt git-pack-objects(1) to support repacking promisor packs and include them in the normal geometric progression. But this would mean that the set of promisor objects expands over time as the packs are merged with normal packs. - We can use a separate geometric progression to repack promisor packs. The first two options both have significant downsides, so they aren't really feasible. But the third option fixes both of these downsides: we make sure that promisor packs get merged, and at the same time we never expand the set of promisor objects beyond the set of objects that are already marked as promisor objects. Implement this strategy so that geometric repacking works in partial clones. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-14repack-promisor: extract function to remove redundant packsPatrick Steinhardt1-6/+16
We're about to add a second caller that wants to remove redundant packs after a geometric repack. Split out the function which does this to prepare for that. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-14repack-promisor: extract function to finalize repackingPatrick Steinhardt1-30/+39
We're about to add a second caller that wants to finalize repacking of promisor objects. Split out the function which does this to prepare for that. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-14repack-geometry: extract function to compute repacking splitPatrick Steinhardt1-18/+21
We're about to add a second caller that wants to compute the repacking split for a set of packfiles. Split out the function that computes this split to prepare for that. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-14builtin/pack-objects: exclude promisor objects with "--stdin-packs"Patrick Steinhardt2-3/+50
It is currently not possible to combine "--exclude-promisor-objects" with "--stdin-packs" because both flags want to set up a revision walk to enumerate the objects to pack. In a subsequent commit though we want to extend geometric repacks to support promisor objects, and for that we need to handle the combination of both flags. There are two cases we have to think about here: - "--stdin-packs" asks us to pack exactly the objects part of the specified packfiles. It is somewhat questionable what to do in the case where the user asks us to exclude promisor objects, but at the same time explicitly passes a promisor pack to us. For now, we simply abort the request as it is self-contradicting. As we have also been dying before this commit there is no regression here. - "--stdin-packs=follow" does the same as the first flag, but it also asks us to include all objects transitively reachable from any object in the packs we are about to repack. This is done by doing the revision walk mentioned further up. Luckily, fixing this case is trivial: we only need to modify the revision walk to also set the `exclude_promisor_objects` field. Note that we do not support the "--exclude-promisor-objects-best-effort" flag for now as we don't need it to support geometric repacking with promisor objects. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-13midx-write.c: assume checksum-invalid MIDXs require an updateTaylor Blau2-1/+15
In 6ce9d558ced (midx-write: skip rewriting MIDX with `--stdin-packs` unless needed, 2025-12-10), the MIDX machinery learned how to optimize out unnecessary writes with "--stdin-packs". In order to do this, it compares the contents of the in-progress write against a MIDX loaded directly from the object store. We load a separate MIDX (as opposed to checking our update relative to "ctx.m") because the MIDX code does not reuse an existing MIDX with --stdin-packs, and always leaves "ctx.m" as NULL. See commit 0c5a62f14bc (midx-write.c: do not read existing MIDX with `packs_to_include`, 2024-06-11) for details on why. If "ctx.m" is non-NULL, however, it is guaranteed to be checksum-valid, since we only assign "ctx.m" when "midx_checksum_valid()" returns true. Since the same guard does not exist for the MIDX we pass to "midx_needs_update()", we may ignore on-disk corruption when determining whether or not we can optimize out the write. Add a similar guard within "midx_needs_update()" to prevent such an issue. A more robust fix would involve revising 0c5a62f14bc and teaching the MIDX generation code how to reuse an existing MIDX even when invoked with "--stdin-packs", such that we could avoid side-loading the MIDX directly from the object store in order to call "midx_needs_update()". For now, pursue the minimal fix. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-13t/t5319-multi-pack-index.sh: drop early 'test_done'Taylor Blau1-3/+1
In 6ce9d558ced (midx-write: skip rewriting MIDX with `--stdin-packs` unless needed, 2025-12-10), an extra 'test_done' was added, causing the test script to finish before having run all of its tests. Dropping this extraneous 'test_done' exposes a bug from commit 6ce9d558ced that causes a subsequent test to fail. Mark that test with a 'test_expect_failure' for now, and the subsequent commit will explain and fix the bug. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-12utf8.c: enable workaround for iconv under macOS 14/15Torsten Bögershausen2-0/+17
The previous commit introduced a workaround in utf8.c to deal with broken iconv implementations. It is enabled when a MacOS version is used that has a buggy iconv library and there is no external library provided (and linked against) from neither MacPorts nor Homebrew nor Fink. For Homebrew, MacPorts and Fink we check if libiconv exist. Introduce 2 new macros: HAS_GOOD_LIBICONV and NEEDS_GOOD_LIBICONV. For Homebrew HAS_GOOD_LIBICONV is set when the libiconv directory exist. MacPorts can be installed with or without libiconv, so check if libiconv.dylib exists (which is a softlink) Fink compiles and installs libiconv by default. Note that a fresh installation of Fink now defaults to /opt/sw. Older versions used /sw as default, so leave the check and setting of BASIC_CFLAGS and BASIC_LDFLAGS as is. For the new default check for the existance of /opt/sw as well. Add a check for /opt/sw/lib/libiconv.dylib which sets HAS_GOOD_LIBICONV Signed-off-by: Torsten Bögershausen <tboegi@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-12utf8.c: prepare workaround for iconv under macOS 14/15Torsten Bögershausen1-0/+13
MacOS14 (Sonoma) has started to ship an iconv library with bugs. The same bugs exists even in MacOS 15 (Sequoia) A bug report running the Git test suite says: three tests of t3900 fail on macOS 26.1 for me: not ok 17 - ISO-2022-JP should be shown in UTF-8 now not ok 25 - ISO-2022-JP should be shown in UTF-8 now not ok 38 - commit --fixup into ISO-2022-JP from UTF-8 Here's the verbose output of the first one: ================= expecting success of 3900.17 'ISO-2022-JP should be shown in UTF-8 now': compare_with ISO-2022-JP "$TEST_DIRECTORY"/t3900/2-UTF-8.txt --- /Users/x/src/git/t/t3900/2-UTF-8.txt 2024-10-01 19:43:24.605230684 +0000 +++ current 2025-12-08 21:52:45.786161909 +0000 @@ -1,5 +1,5 @@ はれひほふ しているのが、いるので。 -濱浜ほれぷりぽれまびぐりろへ。 +濱浜ほれぷりぽれまび$0$j$m$X!# not ok 17 - ISO-2022-JP should be shown in UTF-8 now 1..17 ================= compare_with runs git show to display a commit message, which in this case here was encoded using ISO-2022-JP and is supposed to be reencoded to UTF-8, but git show only does that half-way -- the "$0$j$m$X!#" part is from the original ISO-2022-JP representation. That botched conversion is done by utf8.c::reencode_string_iconv(). It calls iconv(3) to do the actual work, initially with an output buffer of the same size as the input. If the output needs more space the function enlarges the buffer and calls iconv(3) again. iconv(3) won't tell us how much space it needs, but it will report what part it already managed to convert, so we can increase the buffer and continue from there. ISO-2022-JP has escape codes for switching between character sets, so it's a stateful encoding. I guess the iconv(3) on my machine forgets the state at the end of part one and then messes up part two. [end of citation] Working around the buggy iconv shipped with the OS can be done in two ways: a) Link Git against a different version of iconv b) Improve the handling when iconv needs a larger output buffer a) is already done by default when either Fink [1] or MacPorts [2] or Homebrew [3] is installed. b) is implemented here, in case that no fixed iconv is available: When the output buffer is too short, increase it (as before) and start from scratch (this is new). This workound needs to be enabled with '#define ICONV_RESTART_RESET' and a makefile knob will be added in the next commit Suggested-by: René Scharfe <l.s.r@web.de> Signed-off-by: Torsten Bögershausen <tboegi@web.de> [1] https://www.finkproject.org/ [2] https://www.macports.org/ [3] https://brew.sh/ Signed-off-by: Torsten Bögershausen <tboegi@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-12builtin/fsck: drop `fsck_head_link()`Patrick Steinhardt1-24/+4
The function `fsck_head_link()` was historically used to perform a couple of consistency checks for refs. (Almost) all of these checks have now been moved into the refs subsystem. There's only a single check remaining that verifies whether `refs_resolve_ref_unsafe()` returns a `NULL` pointer. This may happen in a couple of cases: - When `refs_is_safe()` declares the ref to be unsafe. We already have checks for this as we verify refnames with `check_refname_format()`. - When the ref doesn't exist. A repository without "HEAD" is completely broken though, and we would notice this error ahead of time already. - In case the caller passes `RESOLVE_REF_READING` and the ref is a symref that doesn't resolve. We don't pass this flag though. As such, this check doesn't cover anything anymore that isn't already covered by `refs_fsck()`. Drop it, which also allows us to inline the call to `refs_resolve_ref_unsafe()`. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-12builtin/fsck: move generic HEAD check into `refs_fsck()`Patrick Steinhardt6-14/+21
Move the check that detects "HEAD" refs that do not point at a branch into `refs_fsck()`. This follows the same motivation as the preceding commit. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-12builtin/fsck: move generic object ID checks into `refs_fsck()`Patrick Steinhardt5-32/+30
While most of the logic that verifies the consistency of refs is driven by `refs_fsck()`, we still have a small handful of checks in `fsck_head_link()`. These checks don't use the git-fsck(1) reporting infrastructure, and as such it's impossible to for example disable some of those checks. One such check detects refs that point to the all-zeroes object ID. Extract this check into the generic `refs_fsck_ref()` function that is used by both the "files" and "reftable" backends. Note that this will cause us to not return an error code from `fsck_head_link()` anymore in case this error was detected. This is fine though: the only caller of this function does not check the error code anyway. To demonstrate this, adapt the function to drop its return value altogether. The function will be removed in a subsequent commit anyway. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>