summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* index-pack: fix allocation of sorted_by_pos arrayjc/fix-alloc-sortbuf-in-index-packJunio C Hamano2015-07-041-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | When c6458e60 (index-pack: kill union delta_base to save memory, 2015-04-18) attempted to reduce the memory footprint of index-pack, one of the key thing it did was to keep track of ref-deltas and ofs-deltas separately. In fix_unresolved_deltas(), however it forgot that it now wants to look only at ref deltas in one place. The code allocated an array for nr_unresolved, which is sum of number of ref- and ofs-deltas minus nr_resolved, which may be larger or smaller than the number ref-deltas. Depending on nr_resolved, this was either under or over allocating. Also, the old code before this change had to use 'i' and 'n' because some of the things we see in the (old) deltas[] array we scanned with 'i' would not make it into the sorted_by_pos[] array in the old world order, but now because you have only ref delta in a separate ref_deltas[] array, they increment lock&step. We no longer need separate variables. And most importantly, we shouldn't pass the nr_unresolved parameter, as this number does not play a role in the working of this helper function. Helped-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* index-pack: kill union delta_base to save memoryNguyễn Thái Ngọc Duy2015-04-181-100/+160
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Once we know the number of objects in the input pack, we allocate an array of nr_objects of struct delta_entry. On x86-64, this struct is 32 bytes long. The union delta_base, which is part of struct delta_entry, provides enough space to store either ofs-delta (8 bytes) or ref-delta (20 bytes). Because ofs-delta encoding is more efficient space-wise and more performant at runtime than ref-delta encoding, Git packers try to use ofs-delta whenever possible, and it is expected that objects encoded as ref-delta are minority. In the best clone case where no ref-delta object is present, we waste (20-8) * nr_objects bytes because of this union. That's about 38MB out of 100MB for deltas[] with 3.4M objects, or 38%. deltas[] would be around 62MB without the waste. This patch attempts to eliminate that. deltas[] array is split into two: one for ofs-delta and one for ref-delta. Many functions are also duplicated because of this split. With this patch, ofs_deltas[] array takes 51MB. ref_deltas[] should remain unallocated in clone case (0 bytes). This array grows as we see ref-delta. We save about half in this case, or 25% of total bookkeeping. The saving is more than the calculation above because some padding in the old delta_entry struct is removed. ofs_delta_entry is 16 bytes, including the 4 bytes padding. That's 13MB for padding, but packing the struct could break platforms that do not support unaligned access. If someone on 32-bit is really low on memory and only deals with packs smaller than 2G, using 32-bit off_t would eliminate the padding and save 27MB on top. A note about ofs_deltas allocation. We could use ref_deltas memory allocation strategy for ofs_deltas. But that probably just adds more overhead on top. ofs-deltas are generally the majority (1/2 to 2/3) in any pack. Incremental realloc may lead to too many memcpy. And if we preallocate, say 1/2 or 2/3 of nr_objects initially, the growth rate of ALLOC_GROW() could make this array larger than nr_objects, wasting more memory. Brought-up-by: Matthew Sporleder <msporleder@gmail.com> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* index-pack: reduce object_entry size to save memoryNguyễn Thái Ngọc Duy2015-02-271-11/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | For each object in the input pack, we need one struct object_entry. On x86-64, this struct is 64 bytes long. Although: - The 8 bytes for delta_depth and base_object_no are only useful when show_stat is set. And it's never set unless someone is debugging. - The three fields hdr_size, type and real_type take 4 bytes each even though they never use more than 4 bits. By moving delta_depth and base_object_no out of struct object_entry and make the other 3 fields one byte long instead of 4, we shrink 25% of this struct. On a 3.4M object repo (*) that's about 53MB. The saving is less impressive compared to index-pack memory use for basic bookkeeping (**), about 16%. (*) linux-2.6.git already has 4M objects as of v3.19-rc7 so this is not an unrealistic number of objects that we have to deal with. (**) 3.4M * (sizeof(object_entry) + sizeof(delta_entry)) = 311MB Brought-up-by: Matthew Sporleder <msporleder@gmail.com> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Git 2.3v2.3.0Junio C Hamano2015-02-053-1/+12
| | | | Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Merge git://github.com/git-l10n/git-poJunio C Hamano2015-02-021-5/+5
|\ | | | | | | | | * git://github.com/git-l10n/git-po: l10n: ca.po: Fix trailing whitespace
| * l10n: ca.po: Fix trailing whitespaceAlex Henrie2015-01-301-5/+5
|/ | | | Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
* Git 2.3.0-rc2v2.3.0-rc2Junio C Hamano2015-01-271-1/+1
| | | | Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Merge git://github.com/git-l10n/git-poJunio C Hamano2015-01-272-929/+941
|\ | | | | | | | | | | | | | | * git://github.com/git-l10n/git-po: l10n: de.po: correct singular form l10n: de.po: translate "leave behind" correctly l10n: de.po: fix typo l10n: ca.po: update translation
| * Merge branch 'master' of git://github.com/alexhenrie/git-poJiang Xin2015-01-271-925/+937
| |\ | | | | | | | | | | | | * 'master' of git://github.com/alexhenrie/git-po: l10n: ca.po: update translation
| | * l10n: ca.po: update translationAlex Henrie2015-01-261-925/+937
| | | | | | | | | | | | Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
| * | l10n: de.po: correct singular formMichael J Gruber2015-01-261-1/+1
| | | | | | | | | | | | | | | Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net> Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
| * | l10n: de.po: translate "leave behind" correctlyMichael J Gruber2015-01-261-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | This message is about leaving orphaned commits behind, not about behind an upstream branch. Try to make this clear. Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net> Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
| * | l10n: de.po: fix typoBenedikt Heine2015-01-261-2/+2
| |/ | | | | | | | | Signed-off-by: Benedikt Heine <bebe@bebehei.de> Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
* | Merge branch 'js/t1050'Junio C Hamano2015-01-221-6/+6
|\ \ | | | | | | | | | | | | * js/t1050: t1050-large: generate large files without dd
| * | t1050-large: generate large files without ddjs/t1050Johannes Sixt2015-01-141-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For some unknown reason, the dd on my Windows box segfaults randomly, but since recently, it does so much more often than it used to, which makes running the test suite burdensome. Use printf to write large files instead of dd. To emphasize that three of the large blobs are exact copies, use cp to allocate them. The new code makes the files a bit smaller, and they are not sparse anymore, but the tests do not depend on these properties. We do not want to use test-genrandom here (which is used to generate large files elsewhere in t1050), so that the files can be compressed well (which keeps the run-time short). The files are now large text files, not binary files. But since they are larger than core.bigfilethreshold they are diagnosed as binary by Git. For this reason, the 'git diff' tests that check the output for "Binary files differ" still pass. Signed-off-by: Johannes Sixt <j6t@kdbg.org> Reviewed-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | Merge branch 'ak/cat-file-clean-up'Junio C Hamano2015-01-221-2/+0
|\ \ \ | | | | | | | | | | | | | | | | * ak/cat-file-clean-up: cat-file: use "type" and "size" from outer scope
| * | | cat-file: use "type" and "size" from outer scopeak/cat-file-clean-upAlexander Kuleshov2015-01-131-2/+0
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In cat_one_file(), "type" and "size" variables are defined in the function scope, and then two variables of the same name are defined in a block in one of the if/else statement, hiding the definitions in the outer scope. Because the values of the outer variables before the control enters this scope, however, do not have to be preserved, we can remove useless definitions of variables from the inner scope safely without breaking anything. Signed-off-by: Alexander Kuleshov <kuleshovmail@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | Merge git://github.com/git-l10n/git-poJunio C Hamano2015-01-227-6423/+6506
|\ \ \ | | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * git://github.com/git-l10n/git-po: l10n: correct indentation of show-branch usage l10n: de.po: translate 3 messages l10n: zh_CN: various fixes on command arguments l10n: vi.po(2298t): Updated 3 new strings l10n: sv.po: Update Swedish translation (2298t0f0u) l10n: fr.po v2.3.0 round 2 l10n: git.pot: v2.3.0 round 2 (3 updated) l10n: de.po: translate 13 new messages l10n: de.po: fix typo l10n: de.po: translate "track" as "versionieren" l10n: zh_CN: translations for git v2.3.0-rc0 l10n: sv.po: Update Swedish translation (2298t0f0u) l10n: fr.po v2.3.0 round 1 l10n: vi.po(2298t): Updated and change Plural-Forms l10n: git.pot: v2.3.0 round 1 (13 new, 11 removed) l10n: ca.po: various fixes
| * | l10n: correct indentation of show-branch usageJiang Xin2015-01-216-64/+62
| | | | | | | | | | | | | | | | | | | | | | | | An indentation error was found right after we started l10n round 2, and commit d6589d1 (show-branch: fix indentation of usage string) and this update would fix it. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
| * | Merge branch 'master' of git://github.com/git-l10n/git-poJiang Xin2015-01-217-6430/+6515
| |\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 'master' of git://github.com/git-l10n/git-po: l10n: de.po: translate 3 messages l10n: zh_CN: various fixes on command arguments l10n: vi.po(2298t): Updated 3 new strings l10n: sv.po: Update Swedish translation (2298t0f0u) l10n: fr.po v2.3.0 round 2 l10n: git.pot: v2.3.0 round 2 (3 updated) l10n: de.po: translate 13 new messages l10n: de.po: fix typo l10n: de.po: translate "track" as "versionieren" l10n: zh_CN: translations for git v2.3.0-rc0 l10n: sv.po: Update Swedish translation (2298t0f0u) l10n: fr.po v2.3.0 round 1 l10n: vi.po(2298t): Updated and change Plural-Forms l10n: git.pot: v2.3.0 round 1 (13 new, 11 removed) l10n: ca.po: various fixes
| | * | l10n: de.po: translate 3 messagesRalf Thielow2015-01-201-141/+142
| | | | | | | | | | | | | | | | Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
| | * | l10n: zh_CN: various fixes on command argumentsJiang Xin2015-01-191-176/+175
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Updated translations for Git 2.3.0 l10n round 2, and fixed various translations for command arguments. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
| | * | Merge branch 'v2.3.0' of git://github.com/jnavila/gitJiang Xin2015-01-191-133/+137
| | |\ \ | | | | | | | | | | | | | | | | | | | | * 'v2.3.0' of git://github.com/jnavila/git: l10n: fr.po v2.3.0 round 2
| | | * | l10n: fr.po v2.3.0 round 2Jean-Noel Avila2015-01-181-133/+137
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
| | * | | Merge branch 'master' of git://github.com/nafmo/git-l10n-svJiang Xin2015-01-191-131/+131
| | |\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | * 'master' of git://github.com/nafmo/git-l10n-sv: l10n: sv.po: Update Swedish translation (2298t0f0u)
| | | * | | l10n: sv.po: Update Swedish translation (2298t0f0u)Peter Krefting2015-01-181-131/+131
| | | |/ / | | | | | | | | | | | | | | | Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
| | * | | l10n: vi.po(2298t): Updated 3 new stringsTran Ngoc Quan2015-01-191-137/+137
| | |/ / | | | | | | | | | | | | Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
| | * | l10n: git.pot: v2.3.0 round 2 (3 updated)Jiang Xin2015-01-181-124/+124
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Generate po/git.pot from v2.3.0-rc0-44-ga94655d for git v2.3.0 l10n round 2. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
| | * | Merge branch 'master' of git://github.com/git-l10n/git-poJiang Xin2015-01-187-6003/+6084
| | |\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 'master' of git://github.com/git-l10n/git-po: l10n: de.po: translate 13 new messages l10n: de.po: fix typo l10n: de.po: translate "track" as "versionieren" l10n: zh_CN: translations for git v2.3.0-rc0 l10n: sv.po: Update Swedish translation (2298t0f0u) l10n: fr.po v2.3.0 round 1 l10n: vi.po(2298t): Updated and change Plural-Forms l10n: git.pot: v2.3.0 round 1 (13 new, 11 removed) l10n: ca.po: various fixes
| | | * | l10n: de.po: translate 13 new messagesRalf Thielow2015-01-171-836/+857
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Translate 13 new messages came from git.pot update in beb691f (l10n: git.pot: v2.3.0 round 1 (13 new, 11 removed)). Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
| | | * | l10n: de.po: fix typoRalf Thielow2015-01-171-1/+1
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
| | | * | l10n: de.po: translate "track" as "versionieren"Ralf Thielow2015-01-171-20/+20
| | | | | | | | | | | | | | | | | | | | | | | | | Suggested-by: Torsten Bögershausen <tboegi@web.de> Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
| | | * | l10n: zh_CN: translations for git v2.3.0-rc0Jiang Xin2015-01-171-830/+853
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Translate 13 new messages (2298t0f0u) for git v2.3.0-rc0. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
| | | * | l10n: sv.po: Update Swedish translation (2298t0f0u)Peter Krefting2015-01-141-842/+865
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
| | | * | l10n: fr.po v2.3.0 round 1Jean-Noel Avila2015-01-131-833/+852
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
| | | * | l10n: vi.po(2298t): Updated and change Plural-FormsTran Ngoc Quan2015-01-131-1019/+986
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
| | | * | l10n: git.pot: v2.3.0 round 1 (13 new, 11 removed)Jiang Xin2015-01-131-824/+831
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Generate po/git.pot from v2.3.0-rc0 for git v2.3.0 l10n round 1. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
| | | * | Merge branch 'master' of git://github.com/alexhenrie/git-poJiang Xin2015-01-131-798/+819
| | | |\ \ | | | | | | | | | | | | | | | | | | | | | | | | * 'master' of git://github.com/alexhenrie/git-po: l10n: ca.po: various fixes
| | | | * | l10n: ca.po: various fixesJoan Perals2014-12-231-798/+819
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Joan Perals Tresserra <j.pertres@gmail.com>
* | | | | | Merge branch 'sh/asciidoc-git-version-fix'Junio C Hamano2015-01-221-1/+1
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | * sh/asciidoc-git-version-fix: Documentation: fix version numbering
| * | | | | | Documentation: fix version numberingsh/asciidoc-git-version-fixSven van Haastregt2015-01-221-1/+1
| | |_|_|_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Version numbers in asciidoc-generated content (such as man pages) went missing as of da8a366 (Documentation: refactor common operations into variables). Fix by putting the underscore back in the variable name. Signed-off-by: Sven van Haastregt <svenvh@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | | Merge branch 'jh/empty-notes'Junio C Hamano2015-01-221-1/+1
|\ \ \ \ \ \ | |_|/ / / / |/| | | | | | | | | | | | | | | | | * jh/empty-notes: Fix unclosed here document in t3301.sh
| * | | | | Fix unclosed here document in t3301.shjh/empty-notesKacper Kornet2015-01-221-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 908a3203632a02568df230c0fccf9a2cd8da24e6 introduced indentation to here documents in t3301.sh. However in one place <<-EOF was missing -, which broke this test when run with mksh-50d. This commit fixes it. Signed-off-by: Kacper Kornet <draenog@pld-linux.org> Acked-by: Johan Herland <johan@herland.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | | Git 2.3.0-rc1v2.3.0-rc1Junio C Hamano2015-01-202-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | | Merge branch 'jk/http-push-symref-fix'Junio C Hamano2015-01-201-0/+3
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | * jk/http-push-symref-fix: http-push: trim trailing newline from remote symref
| * | | | | | http-push: trim trailing newline from remote symrefjk/http-push-symref-fixJeff King2015-01-141-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we fetch a symbolic ref file from the remote, we get the whole string "ref: refs/heads/master\n", recognize it by skipping past the "ref: ", and store the rest. We should chomp the trailing newline. This bug was introduced in ae021d8 (use skip_prefix to avoid magic numbers, 2014-06-18), which did not notice that the length computation fed to xmemdupz was quietly tweaked by 1 to account for this. We can solve it by explicitly trimming the newline, which is more obvious. Note that we use strbuf_rtrim here, which will actually cut off any trailing whitespace, not just a single newline. This is a good thing, though, as it makes our parsing more liberal (and spaces are not valid in refnames anyway). Signed-off-by: Jeff King <peff@peff.net> Tested-by: Kyle J. McKay <mackyle@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | | | Merge branch 'ak/show-branch-usage-string'Junio C Hamano2015-01-201-3/+3
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * ak/show-branch-usage-string: show-branch: fix indentation of usage string
| * | | | | | | show-branch: fix indentation of usage stringak/show-branch-usage-stringRalf Thielow2015-01-201-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Noticed-by: Jean-Noël Avila <jn.avila@free.fr> Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | | | | Merge branch 'jk/colors'Junio C Hamano2015-01-202-0/+5
|\ \ \ \ \ \ \ \ | |_|_|_|_|/ / / |/| | | | | | | | | | | | | | | | | | | | | | | * jk/colors: parse_color: fix return value for numeric color values 0-8
| * | | | | | | parse_color: fix return value for numeric color values 0-8Jeff King2015-01-202-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When commit 695d95d refactored the color parsing, it missed a "return 0" when parsing literal numbers 0-8 (which represent basic ANSI colors), leading us to report these colors as an error. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>