summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2021-10-08cat-file: split ordered/unordered batch-all-objects callbacksLibravatar Jeff King1-1/+3
When we originally added --batch-all-objects, it stuffed everything into an oid_array(), and then iterated over that array with a callback to write the actual output. When we later added --unordered, that code path writes immediately as we discover each object, but just calls the same batch_object_cb() as our entry point to the writing code. That callback has a narrow interface; it only receives the oid, but we know much more about each object in the unordered write (which we'll make use of in the next patch). So let's just call batch_object_write() directly. The callback wasn't saving us much effort. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-10-08cat-file: disable refs/replace with --batch-all-objectsLibravatar Jeff King3-1/+70
When we're enumerating all objects in the object database, it doesn't make sense to respect refs/replace. The point of this option is to enumerate all of the objects in the database at a low level. By definition we'd already show the replacement object's contents (under its real oid), and showing those contents under another oid is almost certainly working against what the user is trying to do. Note that you could make the same argument for something like: git show-index <foo.idx | awk '{print $2}' | git cat-file --batch but there we can't know in cat-file exactly what the user intended, because we don't know the source of the input. They could be trying to do low-level debugging, or they could be doing something more high-level (e.g., imagine a porcelain built around cat-file for its object accesses). So in those cases, we'll have to rely on the user specifying "git --no-replace-objects" to tell us what to do. One _could_ make an argument that "cat-file --batch" is sufficiently low-level plumbing that it should not respect replace-objects at all (and the caller should do any replacement if they want it). But we have been doing so for some time. The history is a little tangled: - looking back as far as v1.6.6, we would not respect replace refs for --batch-check, but would for --batch (because the former used sha1_object_info(), and the replace mechanism only affected actual object reads) - this discrepancy was made even weirder by 98e2092b50 (cat-file: teach --batch to stream blob objects, 2013-07-10), where we always output the header using the --batch-check code, and then printed the object separately. This could lead to "cat-file --batch" dying (when it notices the size or type changed for a non-blob object) or even producing bogus output (in streaming mode, we didn't notice that we wrote the wrong number of bytes). - that persisted until 1f7117ef7a (sha1_file: perform object replacement in sha1_object_info_extended(), 2013-12-11), which then respected replace refs for both forms. So it has worked reliably this way for over 7 years, and we should make sure it continues to do so. That could also be an argument that --batch-all-objects should not change behavior (which this patch is doing), but I really consider the current behavior to be an unintended bug. It's a side effect of how the code is implemented (feeding the oids back into oid_object_info() rather than looking at what we found while reading the loose and packed object storage). The implementation is straight-forward: we just disable the global read_replace_refs flag when we're in --batch-all-objects mode. It would perhaps be a little cleaner to change the flag we pass to oid_object_info_extended(), but that's not enough. We also read objects via read_object_file() and stream_blob_to_fd(). The former could switch to its _extended() form, but the streaming code has no mechanism for disabling replace refs. Setting the global flag works, and as a bonus, it's impossible to have any "oops, we're sometimes replacing the object and sometimes not" bugs in the output (like the ones caused by 98e2092b50 above). The tests here cover the regular-input and --batch-all-objects cases, for both --batch-check and --batch. There is a test in t6050 that covers the regular-input case with --batch already, but this new one goes much further in actually verifying the output (plus covering --batch-check explicitly). This is perhaps a little overkill and the tests would be simpler just covering --batch-check, but I wanted to make sure we're checking that --batch output is consistent between the header and the content. The global-flag technique used here makes that easy to get right, but this is future-proofing us against regressions. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-10-08cat-file: mention --unordered along with --batch-all-objectsLibravatar Jeff King1-2/+3
The note on ordering for --batch-all-objects was written when that was the only possible ordering. These days we have --unordered, too, so let's point to it. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-10-08t1006: clean up broken objectsLibravatar Jeff King1-0/+9
A few of the tests create intentionally broken objects with broken types. Let's clean them up after we're done with them, so that later tests don't get confused (we hadn't noticed because this only affects tests which use --batch-all-objects, but I'm about to add more). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-08-16Git 2.33Libravatar Junio C Hamano2-5/+1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-08-16Merge branch 'rs/oidtree-alignment-fix'Libravatar Junio C Hamano3-7/+17
Codepath to access recently added oidtree data structure had to make unaligned accesses to oids, which has been corrected. * rs/oidtree-alignment-fix: oidtree: avoid unaligned access to crit-bit tree
2021-08-16Merge tag 'l10n-2.33.0-rnd2' of git://github.com/git-l10n/git-poLibravatar Junio C Hamano17-35596/+37473
l10n-2.33.0-rnd2 * tag 'l10n-2.33.0-rnd2' of git://github.com/git-l10n/git-po: (46 commits) l10n: sv.po: Update Swedish translation (5230t0f0u) l10n: TEAMS: change Simplified Chinese team leader l10n: tr: v2.33 (round 2) l10n: es: 2.33.0 round 2 l10n: zh_CN: for git v2.33.0 l10n round 2 l10n: zh_CN: Revision for git v2.32.0 l10n round 1 l10n: README: refactor to use GFM syntax l10n: update German translation for Git v2.33.0 (rnd2) l10n: pt_PT: v2.33.0 round 2 l10n: pt_PT: git-po-helper update l10n: pt_PT: update translation table l10n: zh_TW.po: remove the obsolete glossary l10n: vi.po(5230t): Updated translation for v2.32.0 round 2 l10n: fr.po v2.33 rnd 2 l10n: id: po-id for 2.33.0 round 2 l10n: zh_TW.po: update for v2.33.0 rnd 2 l10n: git.pot: v2.33.0 round 2 (11 new, 8 removed) l10n: de.po: fix typos l10n: update German translation for Git v2.33.0 l10n: fr.po fix typos in commands and variables ...
2021-08-16l10n: sv.po: Update Swedish translation (5230t0f0u)Libravatar Peter Krefting1-508/+530
Also fixed some typos reported by "git-po-helper". Signed-off-by: Peter Krefting <peter@softwolves.pp.se> Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2021-08-16l10n: TEAMS: change Simplified Chinese team leaderLibravatar Jiang Xin1-3/+3
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2021-08-15oidtree: avoid unaligned access to crit-bit treeLibravatar René Scharfe3-7/+17
The flexible array member "k" of struct cb_node is used to store the key of the crit-bit tree node. It offers no alignment guarantees -- in fact the current struct layout puts it one byte after a 4-byte aligned address, i.e. guaranteed to be misaligned. oidtree uses a struct object_id as cb_node key. Since cf0983213c (hash: add an algo member to struct object_id, 2021-04-26) it requires 4-byte alignment. The mismatch is reported by UndefinedBehaviorSanitizer at runtime like this: hash.h:277:2: runtime error: member access within misaligned address 0x00015000802d for type 'struct object_id', which requires 4 byte alignment 0x00015000802d: note: pointer points here 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ^ SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior hash.h:277:2 in We can fix that by: 1. eliminating the alignment requirement of struct object_id, 2. providing the alignment in struct cb_node, or 3. avoiding the issue by only using memcpy to access "k". Currently we only store one of two values in "algo" in struct object_id. We could use a uint8_t for that instead and widen it only once we add support for our twohundredth algorithm or so. That would not only avoid alignment issues, but also reduce the memory requirements for each instance of struct object_id by ca. 9%. Supporting keys with alignment requirements might be useful to spread the use of crit-bit trees. It can be achieved by using a wider type for "k" (e.g. uintmax_t), using different types for the members "byte" and "otherbits" (e.g. uint16_t or uint32_t for each), or by avoiding the use of flexible arrays like khash.h does. This patch implements the third option, though, because it has the least potential for causing side-effects and we're close to the next release. If one of the other options is implemented later as well to get their additional benefits we can get rid of the extra copies introduced here. Reported-by: Andrzej Hunt <andrzej@ahunt.org> Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-08-15Merge branch 'next' of github.com:ChrisADR/git-poLibravatar Jiang Xin1-4302/+3504
* 'next' of github.com:ChrisADR/git-po: l10n: es: 2.33.0 round 2
2021-08-15l10n: tr: v2.33 (round 2)Libravatar Emir Sarı1-514/+538
Signed-off-by: Emir Sarı <bitigchi@me.com>
2021-08-14l10n: es: 2.33.0 round 2Libravatar Christopher Diaz Riveros1-4302/+3504
Signed-off-by: Christopher Diaz Riveros <christopher.diaz.riv@gmail.com> Signed-off-by: Alex Henrie <alexhenrie24@gmail.com> Signed-off-by: Javier Spagnoletti phansys@gmail.com Signed-off-by: Cleydyr Albuquerque <cleydyr@gmail.com> Signed-off-by: Andrei Rybak <rybak.a.v@gmail.com> Signed-off-by: Guillermo Ramos <gramosg>
2021-08-15l10n: zh_CN: for git v2.33.0 l10n round 2Libravatar Jiang Xin1-2202/+2345
Translate 48 new messages (5230t0f0u) for git 2.33.0, and also fixed typos found by "git-po-helper". Signed-off-by: Jiang Xin <worldhello.net@gmail.com> Signed-off-by: Fangyi Zhou <me@fangyi.io>
2021-08-15l10n: zh_CN: Revision for git v2.32.0 l10n round 1Libravatar Fangyi Zhou1-4/+4
Signed-off-by: Fangyi Zhou <me@fangyi.io>
2021-08-15l10n: README: refactor to use GFM syntaxLibravatar Jiang Xin1-172/+223
Format README.md using GFM (GitHub Flavored Markdown) syntax. - In order to use more than 3 level headings, use ATX style headings instead of setext style headings. - In order to add highlights for code blocks, use fenced code blocks instead of indented code blocks. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2021-08-15Merge branch 'l10n-2.33-rnd2' of github.com:ralfth/gitLibravatar Jiang Xin1-501/+522
* 'l10n-2.33-rnd2' of github.com:ralfth/git: l10n: update German translation for Git v2.33.0 (rnd2)
2021-08-15Merge branch 'pt-PT' of github.com:git-l10n-pt-PT/git-poLibravatar Jiang Xin1-752/+679
* 'pt-PT' of github.com:git-l10n-pt-PT/git-po: l10n: pt_PT: v2.33.0 round 2 l10n: pt_PT: git-po-helper update l10n: pt_PT: update translation table
2021-08-14l10n: update German translation for Git v2.33.0 (rnd2)Libravatar Ralf Thielow1-501/+522
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
2021-08-14l10n: pt_PT: v2.33.0 round 2Libravatar Daniel Santos1-26/+25
* translation of new entries Signed-off-by: Daniel Santos <hello@brighterdan.com>
2021-08-14l10n: pt_PT: git-po-helper updateLibravatar Daniel Santos1-741/+617
* run git-po-helper update pt_PT.po Signed-off-by: Daniel Santos <hello@brighterdan.com>
2021-08-14l10n: pt_PT: update translation tableLibravatar Daniel Santos1-11/+63
* updated translation table Signed-off-by: Daniel Santos <hello@brighterdan.com>
2021-08-14Merge branch 'loc/zh_TW/210814' of github.com:l10n-tw/git-poLibravatar Jiang Xin1-2613/+2478
* 'loc/zh_TW/210814' of github.com:l10n-tw/git-po: l10n: zh_TW.po: remove the obsolete glossary l10n: zh_TW.po: update for v2.33.0 rnd 2
2021-08-14l10n: zh_TW.po: remove the obsolete glossaryLibravatar Yi-Jyun Pan1-275/+3
Signed-off-by: Yi-Jyun Pan <pan93412@gmail.com>
2021-08-14Merge branch 'master' of github.com:vnwildman/gitLibravatar Jiang Xin1-497/+517
* 'master' of github.com:vnwildman/git: l10n: vi.po(5230t): Updated translation for v2.32.0 round 2
2021-08-14Merge branch 'po-id' of github.com:bagasme/git-poLibravatar Jiang Xin1-531/+569
* 'po-id' of github.com:bagasme/git-po: l10n: id: po-id for 2.33.0 round 2
2021-08-14l10n: vi.po(5230t): Updated translation for v2.32.0 round 2Libravatar Tran Ngoc Quan1-497/+517
Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
2021-08-14l10n: fr.po v2.33 rnd 2Libravatar Jean-Noël Avila1-507/+543
Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
2021-08-14l10n: id: po-id for 2.33.0 round 2Libravatar Bagas Sanjaya1-531/+569
Update translation for following component: * builtin/submodule--helper.c Translate following new component: * builtin/revert.c Signed-off-by: Bagas Sanjaya <bagasdotme@gmail.com>
2021-08-14l10n: zh_TW.po: update for v2.33.0 rnd 2Libravatar Yi-Jyun Pan1-2341/+2478
Signed-off-by: Yi-Jyun Pan <pan93412@gmail.com>
2021-08-14Merge branch 'master' of github.com:vnwildman/gitLibravatar Jiang Xin1-15/+17
* 'master' of github.com:vnwildman/git: l10n: vi.po(5227t): Fixed typo after run git-po-helper
2021-08-14l10n: git.pot: v2.33.0 round 2 (11 new, 8 removed)Libravatar Jiang Xin1-484/+504
Generate po/git.pot from v2.33.0-rc2 for git v2.33.0 l10n round 2. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2021-08-14Merge branch 'master' of github.com:git/gitLibravatar Jiang Xin50-419/+1248
* 'master' of github.com:git/git: (51 commits) Git 2.33-rc2 object-file: use unsigned arithmetic with bit mask Revert 'diff-merges: let "-m" imply "-p"' object-store: avoid extra ';' from KHASH_INIT oidtree: avoid nested struct oidtree_node Git 2.33-rc1 test: fix for COLUMNS and bash 5 The eighth batch diff: --pickaxe-all typofix mingw: align symlinks-related rmdir() behavior with Linux t7508: avoid non POSIX BRE use fspathhash() everywhere t0001: fix broken not-quite getcwd(3) test in bed67874e2 Documentation: render special characters correctly reset: clear_unpack_trees_porcelain to plug leak builtin/rebase: fix options.strategy memory lifecycle builtin/merge: free found_ref when done builtin/mv: free or UNLEAK multiple pointers at end of cmd_mv convert: release strbuf to avoid leak read-cache: call diff_setup_done to avoid leak ...
2021-08-14Merge branch 'master' of github.com:nafmo/git-l10n-svLibravatar Jiang Xin1-1970/+2100
* 'master' of github.com:nafmo/git-l10n-sv: l10n: sv.po: Update Swedish translation (5227t0f0u)
2021-08-14Merge branch 'master' of github.com:alshopov/git-poLibravatar Jiang Xin1-1953/+2075
* 'master' of github.com:alshopov/git-po: l10n: bg.po: Updated Bulgarian translation (5227t)
2021-08-14Merge branch 'l10n-2.33' of github.com:ralfth/gitLibravatar Jiang Xin1-1976/+2097
* 'l10n-2.33' of github.com:ralfth/git: l10n: de.po: fix typos l10n: update German translation for Git v2.33.0
2021-08-14Merge branch 'fr_fix_typos' of github.com:jnavila/gitLibravatar Jiang Xin1-104/+25
* 'fr_fix_typos' of github.com:jnavila/git: l10n: fr.po fix typos in commands and variables
2021-08-14Merge branch 'master' of github.com:Softcatala/git-poLibravatar Jiang Xin1-101/+83
* 'master' of github.com:Softcatala/git-po: l10n: Update Catalan translation
2021-08-13l10n: de.po: fix typosLibravatar Ralf Thielow1-19/+19
Fix some typos found by `./git-po-helper check-po po/de.po`. Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
2021-08-13l10n: update German translation for Git v2.33.0Libravatar Ralf Thielow1-1957/+2078
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
2021-08-12l10n: fr.po fix typos in commands and variablesLibravatar Jean-Noël Avila1-104/+25
Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
2021-08-12l10n: id: mismatch variable name fixesLibravatar Bagas Sanjaya1-5/+5
Jiang Xin reported possible typos in po/id.po, all of them are mismatch variable names. Fix them. Reported-by: Jiang Xin <worldhello.net@gmail.com> Signed-off-by: Bagas Sanjaya <bagasdotme@gmail.com>
2021-08-12l10n: vi.po(5227t): Fixed typo after run git-po-helperLibravatar Tran Ngoc Quan1-15/+17
Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
2021-08-12l10n: Update Catalan translationLibravatar Jordi Mas1-101/+83
Signed-off-by: Jordi Mas <jmas@softcatala.org>
2021-08-12Merge branch 'daniel' of github.com:git-l10n-pt-PT/git-poLibravatar Jiang Xin1-6741/+6852
* 'daniel' of github.com:git-l10n-pt-PT/git-po: l10n: pt_PT: cleaning flags mismatch l10n: pt_PT: cleaning duplicate translations l10n: pt_PT: update translation tables l10n: pt_PT: translated git v2.33.0 l10n: pt_PT: update git-po-helper l10n: pt_PT: remove trailing comments l10n: pt_PT: translation tables l10n: pt_PT: add Portuguese translations part 5 l10n: pt_PT: add Portuguese translations part 4
2021-08-11Git 2.33-rc2Libravatar Junio C Hamano2-13/+1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-08-11Merge branch 'jn/log-m-does-not-imply-p'Libravatar Junio C Hamano3-7/+6
Earlier "git log -m" was changed to always produce patch output, which would break existing scripts, which has been reverted. * jn/log-m-does-not-imply-p: Revert 'diff-merges: let "-m" imply "-p"'
2021-08-11Merge branch 'cb/many-alternate-optim-fixup'Libravatar Junio C Hamano3-10/+5
Build fix. * cb/many-alternate-optim-fixup: object-file: use unsigned arithmetic with bit mask object-store: avoid extra ';' from KHASH_INIT oidtree: avoid nested struct oidtree_node
2021-08-11object-file: use unsigned arithmetic with bit maskLibravatar René Scharfe1-1/+1
33f379eee6 (make object_directory.loose_objects_subdir_seen a bitmap, 2021-07-07) replaced a wasteful 256-byte array with a 32-byte array and bit operations. The mask calculation shifts a literal 1 of type int left by anything between 0 and 31. UndefinedBehaviorSanitizer doesn't like that and reports: object-file.c:2477:18: runtime error: left shift of 1 by 31 places cannot be represented in type 'int' Make sure to use an unsigned 1 instead to avoid the issue. Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-08-11l10n: pt_PT: cleaning flags mismatchLibravatar Daniel Santos1-6/+6
* corrected git flags mismatch Signed-off-by: Daniel Santos <hello@brighterdan.com>