https://github.com/git/git

sort by:
Revision Author Date Message Commit Date
f3da2b7 Git 2.14-rc0 Signed-off-by: Junio C Hamano <gitster@pobox.com> 13 July 2017, 23:22:29 UTC
757e987 Merge branch 'jk/build-with-asan' The build procedure has been improved to allow building and testing Git with address sanitizer more easily. * jk/build-with-asan: Makefile: disable unaligned loads with UBSan Makefile: turn off -fomit-frame-pointer with sanitizers Makefile: add helper for compiling with -fsanitize test-lib: turn on ASan abort_on_error by default test-lib: set ASAN_OPTIONS variable before we run git 13 July 2017, 23:14:54 UTC
c9c63ee Merge branch 'sb/pull-rebase-submodule' "git pull --rebase --recurse-submodules" learns to rebase the branch in the submodules to an updated base. * sb/pull-rebase-submodule: builtin/fetch cleanup: always set default value for submodule recursing pull: optionally rebase submodules (remote submodule changes only) builtin/fetch: parse recurse-submodules-default at default options parsing builtin/fetch: factor submodule recurse parsing out to submodule config 13 July 2017, 23:14:54 UTC
91f6922 Merge branch 'sb/hashmap-customize-comparison' Update the hashmap API so that data to customize the behaviour of the comparison function can be specified at the time a hashmap is initialized. * sb/hashmap-customize-comparison: hashmap: migrate documentation from Documentation/technical into header patch-ids.c: use hashmap correctly hashmap.h: compare function has access to a data field 13 July 2017, 23:14:54 UTC
eac97b4 Merge branch 'ab/grep-lose-opt-regflags' Code cleanup. * ab/grep-lose-opt-regflags: grep: remove redundant REG_NEWLINE when compiling fixed regex grep: remove regflags from the public grep_opt API grep: remove redundant and verbose re-assignments to 0 grep: remove redundant "fixed" field re-assignment to 0 grep: adjust a redundant grep pattern type assignment grep: remove redundant double assignment to 0 13 July 2017, 23:14:54 UTC
80145b1 Sync with v2.13.3 12 July 2017, 22:25:14 UTC
08f9c32 Git 2.13.3 Signed-off-by: Junio C Hamano <gitster@pobox.com> 12 July 2017, 22:24:15 UTC
55bdfa0 Merge branch 'kn/ref-filter-branch-list' into maint The rewrite of "git branch --list" using for-each-ref's internals that happened in v2.13 regressed its handling of color.branch.local; this has been fixed. * kn/ref-filter-branch-list: ref-filter.c: drop return from void function branch: set remote color in ref-filter branch immediately branch: use BRANCH_COLOR_LOCAL in ref-filter format branch: only perform HEAD check for local branches 12 July 2017, 22:23:09 UTC
ecab58c Merge branch 'ks/typofix-commit-c-comment' into maint Typofix. * ks/typofix-commit-c-comment: builtin/commit.c: fix a typo in the comment 12 July 2017, 22:20:49 UTC
9d21a96 Merge branch 'jk/reflog-walk-maint' into maint After "git branch --move" of the currently checked out branch, the code to walk the reflog of HEAD via "log -g" and friends incorrectly stopped at the reflog entry that records the renaming of the branch. * jk/reflog-walk-maint: reflog-walk: include all fields when freeing complete_reflogs reflog-walk: don't free reflogs added to cache reflog-walk: duplicate strings in complete_reflogs list reflog-walk: skip over double-null oid due to HEAD rename 12 July 2017, 22:20:36 UTC
8ba1d66 Hopefully the last batch before -rc0 Signed-off-by: Junio C Hamano <gitster@pobox.com> 12 July 2017, 22:19:27 UTC
a5a3c5a Merge branch 'ks/fix-rebase-doc-picture' Doc update. * ks/fix-rebase-doc-picture: doc: correct a mistake in an illustration 12 July 2017, 22:18:24 UTC
094aa09 Merge branch 'rs/wt-status-cleanup' Code cleanup. * rs/wt-status-cleanup: wt-status: use separate variable for result of shorten_unambiguous_ref 12 July 2017, 22:18:23 UTC
f056cde Merge branch 'rs/use-div-round-up' Code cleanup. * rs/use-div-round-up: use DIV_ROUND_UP 12 July 2017, 22:18:23 UTC
768d0fe Merge branch 'kn/ref-filter-branch-list' The rewrite of "git branch --list" using for-each-ref's internals that happened in v2.13 regressed its handling of color.branch.local; this has been fixed. * kn/ref-filter-branch-list: ref-filter.c: drop return from void function branch: set remote color in ref-filter branch immediately branch: use BRANCH_COLOR_LOCAL in ref-filter format branch: only perform HEAD check for local branches 12 July 2017, 22:18:23 UTC
536c1ec Merge branch 'rs/urlmatch-cleanup' Code cleanup. * rs/urlmatch-cleanup: urlmatch: use hex2chr() in append_normalized_escapes() 12 July 2017, 22:18:22 UTC
6fee4ca Merge branch 'rs/apply-avoid-over-reading' Code cleanup. * rs/apply-avoid-over-reading: apply: use strcmp(3) for comparing strings in gitdiff_verify_name() 12 July 2017, 22:18:22 UTC
b5fe65f Merge branch 'sb/submodule-doc' Doc update. * sb/submodule-doc: submodules: overhaul documentation 12 July 2017, 22:18:21 UTC
42c78a2 use DIV_ROUND_UP Convert code that divides and rounds up to use DIV_ROUND_UP to make the intent clearer and reduce the number of magic constants. Signed-off-by: Rene Scharfe <l.s.r@web.de> Reviewed-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 10 July 2017, 21:24:36 UTC
117ddef Sync with maint 10 July 2017, 21:06:21 UTC
699d47e Prepare for 2.13.3 10 July 2017, 21:02:07 UTC
4aaf5b0 Merge branch 'sb/merge-recursive-code-cleanup' into maint Code clean-up. * sb/merge-recursive-code-cleanup: merge-recursive: use DIFF_XDL_SET macro 10 July 2017, 20:59:09 UTC
127c13a Merge branch 'jc/utf8-fprintf' into maint Code cleanup. * jc/utf8-fprintf: submodule--helper: do not call utf8_fprintf() unnecessarily 10 July 2017, 20:59:09 UTC
8e7b78a Merge branch 'js/fsck-name-object' into maint Test fix. * js/fsck-name-object: t1450: use egrep for regexp "alternation" 10 July 2017, 20:59:08 UTC
5a24b4e Merge branch 'js/t5534-rev-parse-gives-multi-line-output-fix' into maint A few tests that tried to verify the contents of push certificates did not use 'git rev-parse' to formulate the line to look for in the certificate correctly. * js/t5534-rev-parse-gives-multi-line-output-fix: t5534: fix misleading grep invocation 10 July 2017, 20:59:07 UTC
362009f Merge branch 'ab/sha1dc-maint' into maint Update the sha1dc again to fix portability glitches. * ab/sha1dc-maint: sha1dc: update from upstream 10 July 2017, 20:59:06 UTC
35049a2 Merge branch 'aw/contrib-subtree-doc-asciidoctor' into maint The Makefile rule in contrib/subtree for building documentation learned to honour USE_ASCIIDOCTOR just like the main documentation set does. * aw/contrib-subtree-doc-asciidoctor: subtree: honour USE_ASCIIDOCTOR when set 10 July 2017, 20:59:06 UTC
a9e87e3 Merge branch 'cc/shared-index-permfix' into maint The split index code did not honor core.sharedrepository setting correctly. * cc/shared-index-permfix: t1700: make sure split-index respects core.sharedrepository t1301: move modebits() to test-lib-functions.sh read-cache: use shared perms when writing shared index 10 July 2017, 20:59:05 UTC
76de71b Merge branch 'ah/doc-pretty-color-auto-prefix' into maint Doc update. * ah/doc-pretty-color-auto-prefix: doc: clarify syntax for %C(auto,...) in pretty formats 10 July 2017, 20:59:05 UTC
cf77911 Merge branch 'mb/reword-autocomplete-message' into maint Message update. * mb/reword-autocomplete-message: auto-correct: tweak phrasing 10 July 2017, 20:59:04 UTC
8f3a16c Merge branch 'ks/t7508-indent-fix' into maint Cosmetic update to a test. * ks/t7508-indent-fix: t7508: fix a broken indentation 10 July 2017, 20:59:03 UTC
dbcf775 Merge branch 'sb/t4005-modernize' into maint Test clean-up. * sb/t4005-modernize: t4005: modernize style and drop hard coded sha1 10 July 2017, 20:59:02 UTC
33c3c2d Merge branch 'rs/apply-validate-input' into maint Tighten error checks for invalid "git apply" input. * rs/apply-validate-input: apply: check git diffs for mutually exclusive header lines apply: check git diffs for invalid file modes apply: check git diffs for missing old filenames 10 July 2017, 20:59:01 UTC
b944d7c Merge branch 'jc/pack-bitmap-unaligned' into maint An unaligned 32-bit access in pack-bitmap code ahs been corrected. * jc/pack-bitmap-unaligned: pack-bitmap: don't perform unaligned memory access 10 July 2017, 20:59:00 UTC
9f6728d Merge branch 'pw/rebase-i-regression-fix-tests' into maint Fix a recent regression to "git rebase -i" and add tests that would have caught it and others. * pw/rebase-i-regression-fix-tests: t3420: fix under GETTEXT_POISON build rebase: add more regression tests for console output rebase: add regression tests for console output rebase -i: add test for reflog message sequencer: print autostash messages to stderr 10 July 2017, 20:59:00 UTC
f904494 Merge branch 'jk/add-p-commentchar-fix' into maint "git add -p" were updated in 2.12 timeframe to cope with custom core.commentchar but the implementation was buggy and a metacharacter like $ and * did not work. * jk/add-p-commentchar-fix: add--interactive: quote commentChar regex add--interactive: handle EOF in prompt_yesno 10 July 2017, 20:58:59 UTC
040746c Merge branch 'js/alias-early-config' into maint The code to pick up and execute command alias definition from the configuration used to switch to the top of the working tree and then come back when the expanded alias was executed, which was unnecessarilyl complex. Attempt to simplify the logic by using the early-config mechanism that does not chdir around. * js/alias-early-config: alias: use the early config machinery to expand aliases t7006: demonstrate a problem with aliases in subdirectories t1308: relax the test verifying that empty alias values are disallowed help: use early config when autocorrecting aliases config: report correct line number upon error discover_git_directory(): avoid setting invalid git_dir 10 July 2017, 20:58:58 UTC
4977117 Merge branch 'rs/pretty-add-again' into maint The pretty-format specifiers like '%h', '%t', etc. had an optimization that no longer works correctly. In preparation/hope of getting it correctly implemented, first discard the optimization that is broken. * rs/pretty-add-again: pretty: recalculate duplicate short hashes 10 July 2017, 20:58:57 UTC
86d51bb Merge branch 'ah/doc-gitattributes-empty-index' into maint An example in documentation that does not work in multi worktree configuration has been corrected. * ah/doc-gitattributes-empty-index: doc: do not use `rm .git/index` when normalizing line endings 10 July 2017, 20:58:56 UTC
311b760 Merge branch 'da/mergetools-meld-output-opt-on-macos' into maint "git mergetool" learned to work around a wrapper MacOS X adds around underlying meld. * da/mergetools-meld-output-opt-on-macos: mergetools/meld: improve compatibiilty with Meld on macOS X 10 July 2017, 20:58:56 UTC
c4ffd78 Merge branch 'jk/diff-highlight-module' into maint The 'diff-highlight' program (in contrib/) has been restructured for easier reuse by an external project 'diff-so-fancy'. * jk/diff-highlight-module: diff-highlight: split code into module 10 July 2017, 20:58:56 UTC
5e5a7cd Sixteenth batch for 2.14 Signed-off-by: Junio C Hamano <gitster@pobox.com> 10 July 2017, 20:44:30 UTC
4dc59cb Merge branch 'jk/reflog-walk-maint' After "git branch --move" of the currently checked out branch, the code to walk the reflog of HEAD via "log -g" and friends incorrectly stopped at the reflog entry that records the renaming of the branch. * jk/reflog-walk-maint: reflog-walk: include all fields when freeing complete_reflogs reflog-walk: don't free reflogs added to cache reflog-walk: duplicate strings in complete_reflogs list reflog-walk: skip over double-null oid due to HEAD rename 10 July 2017, 20:42:53 UTC
e7fc60a Merge branch 'bb/unicode-10.0' Update the character width tables. * bb/unicode-10.0: unicode: update the width tables to Unicode 10 10 July 2017, 20:42:52 UTC
cd0391a Merge branch 'ks/typofix-commit-c-comment' Typofix. * ks/typofix-commit-c-comment: builtin/commit.c: fix a typo in the comment 10 July 2017, 20:42:51 UTC
0c6435a Merge branch 'ab/wildmatch' Minor code cleanup. * ab/wildmatch: wildmatch: remove unused wildopts parameter 10 July 2017, 20:42:51 UTC
2db8732 Merge branch 'ab/sha1dc' The "collission-detecting" implementation of SHA-1 hash we borrowed from is replaced by directly binding the upstream project as our submodule. Glitches on minority platforms are still being worked out. * ab/sha1dc: sha1collisiondetection: automatically enable when submodule is populated sha1dc: optionally use sha1collisiondetection as a submodule 10 July 2017, 20:42:51 UTC
d73b46c Merge branch 'rs/free-and-null' Code cleanup. * rs/free-and-null: coccinelle: polish FREE_AND_NULL rules 10 July 2017, 20:42:51 UTC
9bf8e0c Merge branch 'pw/unquote-path-in-git-pm' Code refactoring. * pw/unquote-path-in-git-pm: t9700: add tests for Git::unquote_path() Git::unquote_path(): throw an exception on bad path Git::unquote_path(): handle '\a' add -i: move unquote_path() to Git.pm 10 July 2017, 20:42:50 UTC
c4f70d2 Merge branch 'ks/commit-assuming-only-warning-removal' An old message shown in the commit log template was removed, as it has outlived its usefulness. * ks/commit-assuming-only-warning-removal: commit-template: distinguish status information unconditionally commit-template: remove outdated notice about explicit paths 10 July 2017, 20:42:50 UTC
5b5c9c3 ref-filter.c: drop return from void function Sun's C compiler errors out on this pattern: void foo() { ... } void bar() { return foo(); } Signed-off-by: Alejandro R. Sedeño <asedeno@mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com> 10 July 2017, 19:34:51 UTC
f271c95 l10n: de.po: fix typo Reported-by: Andre Hinrichs <andre.hinrichs@gmx.de> Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> 10 July 2017, 18:44:18 UTC
566cf0b Makefile: disable unaligned loads with UBSan The undefined behavior sanitizer complains about unaligned loads, even if they're OK for a particular platform in practice. It's possible that they _are_ a problem, of course, but since it's a known tradeoff the UBSan errors are just noise. Let's quiet it automatically by building with NO_UNALIGNED_LOADS when SANITIZE=undefined is in use. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 10 July 2017, 17:02:31 UTC
ddbc8a6 Makefile: turn off -fomit-frame-pointer with sanitizers The ASan manual recommends disabling this optimization, as it can make the backtraces produced by the tool harder to follow (and since this is a test-debug build, we don't care about squeezing out every last drop of performance). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 10 July 2017, 17:02:30 UTC
56b5db3 Makefile: add helper for compiling with -fsanitize You can already build and test with ASan by doing: make CFLAGS=-fsanitize=address test but there are a few slight annoyances: 1. It's a little long to type. 2. It override your CFLAGS completely. You'd probably still want -O2, for instance. 3. It's a good idea to also turn off "recovery", which lets the program keep running after a problem is detected (with the intention of finding as many bugs as possible in a given run). Since Git's test suite should generally run without triggering any problems, it's better to abort immediately and fail the test when we do find an issue. With this patch, all of that happens automatically when you run: make SANITIZE=address test Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 10 July 2017, 17:02:29 UTC
bf1ce90 test-lib: turn on ASan abort_on_error by default By default, ASan will exit with code 1 when it sees an error. This means we'll notice a problem when we expected git to succeed, but not in a test_must_fail block. Let's ask it to actually raise SIGABRT instead. That will give us a signal death that test_must_fail will notice. As a bonus, it may also leave a coredump, which can be handy for digging into a failure. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 10 July 2017, 17:02:28 UTC
d0cc579 test-lib: set ASAN_OPTIONS variable before we run git We turn off ASan's leak detection by default in the test suite because it's too noisy. But we don't do so until part-way through test-lib. This is before we've run any tests, but after we do our initial "./git" to see if the binary has even been built. When built with clang, this seems to work fine. However, using "gcc -fsanitize=address", the leak checker seems to complain more aggressively: $ ./git ... ==5352==ERROR: LeakSanitizer: detected memory leaks Direct leak of 2 byte(s) in 1 object(s) allocated from: #0 0x7f120e7afcf8 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc1cf8) #1 0x559fc2a3ce41 in do_xmalloc /home/peff/compile/git/wrapper.c:60 #2 0x559fc2a3cf1a in do_xmallocz /home/peff/compile/git/wrapper.c:100 #3 0x559fc2a3d0ad in xmallocz /home/peff/compile/git/wrapper.c:108 #4 0x559fc2a3d0ad in xmemdupz /home/peff/compile/git/wrapper.c:124 #5 0x559fc2a3d0ad in xstrndup /home/peff/compile/git/wrapper.c:130 #6 0x559fc274535a in main /home/peff/compile/git/common-main.c:39 #7 0x7f120dabd2b0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202b0) This is a leak in the sense that we never free it, but it's in a global that is meant to last the whole program. So it's not really interesting or in need of fixing. And at any rate, mentioning leaks outside of the test_expect blocks is certainly unwelcome, as it pollutes stderr. Let's bump the setting of ASAN_OPTIONS higher in test-lib.sh to catch our initial "can we even run git?" test. While we're at it, we can add a comment to make it a bit less inscrutable. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 10 July 2017, 17:02:27 UTC
0182606 doc: correct a mistake in an illustration The first illustration of the "RECOVERING FROM UPSTREAM REBASE" section in the 'git-rebase' documentation meant to depict that there are number of commits on the 'master' branch, but it is longer than the 'master' branch in the following illustrations by one commit, even though there is no resetting of 'master' to lose that commit. Correct it. Signed-off-by: Kaartic Sivaraam <kaarticsivaraam91196@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> 10 July 2017, 16:50:36 UTC
5e8d272 wt-status: use separate variable for result of shorten_unambiguous_ref Store the pointer to the string allocated by shorten_unambiguous_ref in a dedicated variable, short_base, and keep base unchanged. A non-const variable is more appropriate for such an object. It avoids having to cast const away on free and stops redefining the meaning of base, making the code slightly clearer. Signed-off-by: Rene Scharfe <l.s.r@web.de> Reviewed-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> 10 July 2017, 16:16:37 UTC
5053313 urlmatch: use hex2chr() in append_normalized_escapes() Simplify the code by using hex2chr() to convert and check for invalid characters at the same time instead of doing that sequentially with one table lookup for each. Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> 09 July 2017, 16:43:01 UTC
2d10545 apply: use strcmp(3) for comparing strings in gitdiff_verify_name() We don't know the length of the C string "another". It could be shorter than "name", which we compare it to using memchr(3). Call strcmp(3) instead to avoid running over the end of the former, and get rid of a strlen(3) call as a bonus. Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> 09 July 2017, 16:30:42 UTC
7ca260a branch: set remote color in ref-filter branch immediately We set the current and local branch colors at the top of the build_format() function. Let's do the same for the remote color. This saves a little bit of repetition, but more importantly it puts all of the color-setting in the same place. That makes it easier to see that we are coloring all possibilities. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 09 July 2017, 16:24:43 UTC
34d820e branch: use BRANCH_COLOR_LOCAL in ref-filter format Since 949af0684 (branch: use ref-filter printing APIs, 2017-01-10), git-branch's output is generated by passing a custom format to the ref-filter code. This format forgot to pass BRANCH_COLOR_LOCAL, meaning that local branches (besides the current one) were never colored at all. We can add it in the %(if) block where we decide whether the branch is "current" or merely "local". Note that this means the current/local coloring is either/or. You can't set: [color "branch"] local = blue current = bold and expect the current branch to be "bold blue". This matches the pre-949af0684 behavior. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 09 July 2017, 16:24:42 UTC
a5b3663 branch: only perform HEAD check for local branches When assembling the ref-filter format to show "git branch" output, we put the "%(if)%(HEAD)" conditional at the start of the overall format. But there's no point in checking whether a remote branch matches HEAD, as it never will. The check should go inside the local conditional; we assemble that format inside the "local" strbuf. By itself, this is just a minor optimization. But in a future patch, we'll need this refactoring to fix local-branch coloring. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 09 July 2017, 16:24:42 UTC
7560aac unicode: update the width tables to Unicode 10 Now that Unicode 10 has been announced[0], update the character width tables to the new version. [0] http://blog.unicode.org/2017/06/announcing-unicode-standard-version-100.html Signed-off-by: Beat Bolli <dev+git@drbeat.li> Signed-off-by: Junio C Hamano <gitster@pobox.com> 07 July 2017, 17:33:30 UTC
e30d463 reflog-walk: include all fields when freeing complete_reflogs When we encounter an error adding reflogs for a walk, we try to free any logs we have read. But we didn't free all fields, meaning that we could in theory leak all of the "items" array (which would consitute the bulk of the allocated memory). This patch adds a helper which frees all of the entries and uses it as appropriate. As it turns out, the leak seems impossible to trigger with the current code. Of the three error paths that free the complete_reflogs struct, two only kick in when the items array is empty, and the third was removed entirely in the previous commit. So this patch should be a noop in terms of behavior, but it fixes a potential maintenance headache should anybody add a new error path and copy the partial-free code. Which is what happened in 5026b47175 (add_reflog_for_walk: avoid memory leak, 2017-05-04), though its leaky call was the third one that was recently removed. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 07 July 2017, 16:04:34 UTC
8aae3cf reflog-walk: don't free reflogs added to cache The add_reflog_for_walk() function keeps a cache mapping refnames to their reflog contents. We use a cached reflog entry if available, and otherwise allocate and store a new one. Since 5026b47175 (add_reflog_for_walk: avoid memory leak, 2017-05-04), when we hit an error parsing a date-based reflog spec, we free the reflog memory but leave the cache entry pointing to the now-freed memory. We can fix this by just leaving the memory intact once it has made it into the cache. This may leave an unused entry in the cache, but that's OK. And it means we also catch a similar situation: we may not have allocated at all in this invocation, but simply be pointing to a cached entry from a previous invocation (which is relying on that entry being present). The new test in t1411 exercises this case and fails when run with --valgrind or ASan. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 07 July 2017, 16:00:31 UTC
75afe7a reflog-walk: duplicate strings in complete_reflogs list As part of the add_reflog_to_walk() function, we keep a string_list mapping refnames to their reflog contents. This serves as a cache so that accessing the same reflog twice requires only a single copy of the log in memory. The string_list is initialized via xcalloc, meaning its strdup_strings field is set to 0. But after inserting a string into the list, we unconditionally call free() on the string, leaving the list pointing to freed memory. If another reflog is added (e.g., "git log -g HEAD HEAD"), then the second one may have unpredictable results. The extra free was added by 5026b47175 (add_reflog_for_walk: avoid memory leak, 2017-05-04). Though if you look carefully, you can see that the code was buggy even before then. If we tried to read the reflogs by time but came up with no entries, we exited with an error, freeing the string in that code path. So the bug was harder to trigger, but still there. We can fix it by just asking the string list to make a copy of the string. Technically we could fix the problem by not calling free() on our string (and just handing over ownership to the string list), but there are enough conditionals that it's quite hard to figure out which code paths need the free and which do not. Simpler is better here. The new test reliably shows the problem when run with --valgrind or ASAN. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 07 July 2017, 15:58:17 UTC
8b2efe2 Fifteenth batch for 2.14 Signed-off-by: Junio C Hamano <gitster@pobox.com> 07 July 2017, 01:26:13 UTC
6ba649e Merge branch 'ab/strbuf-addftime-tzname-boolify' strbuf_addftime() is further getting tweaked. * ab/strbuf-addftime-tzname-boolify: strbuf: change an always NULL/"" strbuf_addftime() param to bool strbuf.h comment: discuss strbuf_addftime() arguments in order 07 July 2017, 01:14:47 UTC
eb37527 Merge branch 'xz/send-email-batch-size' "git send-email" learned to overcome some SMTP server limitation that does not allow many pieces of e-mails to be sent over a single session. * xz/send-email-batch-size: send-email: --batch-size to work around some SMTP server limit 07 July 2017, 01:14:46 UTC
ccce1e5 Merge branch 'js/t5534-rev-parse-gives-multi-line-output-fix' A few tests that tried to verify the contents of push certificates did not use 'git rev-parse' to formulate the line to look for in the certificate correctly. * js/t5534-rev-parse-gives-multi-line-output-fix: t5534: fix misleading grep invocation 07 July 2017, 01:14:46 UTC
2f4bcd8 Merge branch 'sb/merge-recursive-code-cleanup' Code clean-up. * sb/merge-recursive-code-cleanup: merge-recursive: use DIFF_XDL_SET macro 07 July 2017, 01:14:45 UTC
f9b3252 Merge branch 'rs/apply-avoid-over-reading' Code clean-up to fix possible buffer over-reading. * rs/apply-avoid-over-reading: apply: use starts_with() in gitdiff_verify_name() 07 July 2017, 01:14:45 UTC
cbb8704 Merge branch 'ab/sha1dc-maint' Update the sha1dc again to fix portability glitches. * ab/sha1dc-maint: sha1dc: update from upstream 07 July 2017, 01:14:44 UTC
62458ea Merge branch 'jc/utf8-fprintf' Code cleanup. * jc/utf8-fprintf: submodule--helper: do not call utf8_fprintf() unnecessarily 07 July 2017, 01:14:44 UTC
8f58a34 Merge branch 'js/fsck-name-object' Test fix. * js/fsck-name-object: t1450: use egrep for regexp "alternation" 07 July 2017, 01:14:43 UTC
33cc9cf Merge branch 'aw/contrib-subtree-doc-asciidoctor' The Makefile rule in contrib/subtree for building documentation learned to honour USE_ASCIIDOCTOR just like the main documentation set does. * aw/contrib-subtree-doc-asciidoctor: subtree: honour USE_ASCIIDOCTOR when set 07 July 2017, 01:14:42 UTC
669638f builtin/commit.c: fix a typo in the comment Signed-off-by: Kaartic Sivaraam <kaarticsivaraam91196@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> 06 July 2017, 16:06:26 UTC
50ff9ea Fourteenth batch for 2.14 Signed-off-by: Junio C Hamano <gitster@pobox.com> 05 July 2017, 20:33:51 UTC
00b7cf2 Merge branch 'jt/unify-object-info' Code clean-ups. * jt/unify-object-info: sha1_file: refactor has_sha1_file_with_flags sha1_file: do not access pack if unneeded sha1_file: teach sha1_object_info_extended more flags sha1_file: refactor read_object sha1_file: move delta base cache code up sha1_file: rename LOOKUP_REPLACE_OBJECT sha1_file: rename LOOKUP_UNKNOWN_OBJECT sha1_file: teach packed_object_info about typename 05 July 2017, 20:32:57 UTC
8e90578 Merge branch 'cc/shared-index-permfix' The split index code did not honor core.sharedrepository setting correctly. * cc/shared-index-permfix: t1700: make sure split-index respects core.sharedrepository t1301: move modebits() to test-lib-functions.sh read-cache: use shared perms when writing shared index 05 July 2017, 20:32:57 UTC
5ab148d Merge branch 'rs/sha1-name-readdir-optim' Optimize "what are the object names already taken in an alternate object database?" query that is used to derive the length of prefix an object name is uniquely abbreviated to. * rs/sha1-name-readdir-optim: sha1_file: guard against invalid loose subdirectory numbers sha1_file: let for_each_file_in_obj_subdir() handle subdir names p4205: add perf test script for pretty log formats sha1_name: cache readdir(3) results in find_short_object_filename() 05 July 2017, 20:32:56 UTC
85ce4a6 Merge branch 'bw/repo-object' Introduce a "repository" object to eventually make it easier to work in multiple repositories (the primary focus is to work with the superproject and its submodules) in a single process. * bw/repo-object: ls-files: use repository object repository: enable initialization of submodules submodule: convert is_submodule_initialized to work on a repository submodule: add repo_read_gitmodules submodule-config: store the_submodule_cache in the_repository repository: add index_state to struct repo config: read config from a repository object path: add repo_worktree_path and strbuf_repo_worktree_path path: add repo_git_path and strbuf_repo_git_path path: worktree_git_path() should not use file relocation path: convert do_git_path to take a 'struct repository' path: convert strbuf_git_common_path to take a 'struct repository' path: always pass in commondir to update_common_dir path: create path.h environment: store worktree in the_repository environment: place key repository state in the_repository repository: introduce the repository object environment: remove namespace_len variable setup: add comment indicating a hack setup: don't perform lazy initialization of repository state 05 July 2017, 20:32:56 UTC
2272d3e reflog-walk: skip over double-null oid due to HEAD rename Since 39ee4c6c2f (branch: record creation of renamed branch in HEAD's log, 2017-02-20), a rename on the currently checked out branch will create two entries in the HEAD reflog: one where the branch goes away (switching to the null oid), and one where it comes back (switching away from the null oid). This confuses the reflog-walk code. When walking backwards, it first sees the null oid in the "old" field of the second entry. Thanks to the "root commit" logic added by 71abeb753f (reflog: continue walking the reflog past root commits, 2016-06-03), we keep looking for the next entry by scanning the "new" field from the previous entry. But that field is also null! We need to go just a tiny bit further, and look at its "old" field. But with the current code, we decide the reflog has nothing else to show and just give up. To the user this looks like the reflog was truncated by the rename operation, when in fact those entries are still there. This patch does the absolute minimal fix, which is to look back that one extra level and keep traversing. The resulting behavior may not be the _best_ thing to do in the long run (for example, we show both reflog entries each with the same commit id), but it's a simple way to fix the problem without risking further regressions. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 05 July 2017, 17:34:00 UTC
8722947 t5534: fix misleading grep invocation It seems to be a little-known feature of `grep` (and it certainly came as a surprise to this here developer who believed to know the Unix tools pretty well) that multiple patterns can be passed in the same command-line argument simply by separating them by newlines. Watch, and learn: $ printf '1\n2\n3\n' | grep "$(printf '1\n3\n')" 1 3 That behavior also extends to patterns passed via `-e`, and it is not modified by passing the option `-E` (but trying this with -P issues the error "grep: the -P option only supports a single pattern"). It seems that there are more old Unix hands who are surprised by this behavior, as grep invocations of the form grep "$(git rev-parse A B) C" file were introduced in a85b377d041 (push: the beginning of "git push --signed", 2014-09-12), and later faithfully copy-edited in b9459019bbb (push: heed user.signingkey for signed pushes, 2014-10-22). Please note that the output of `git rev-parse A B` separates the object IDs via *newlines*, not via spaces, and those newlines are preserved because the interpolation is enclosed in double quotes. As a consequence, these tests try to validate that the file contains either A's object ID, or B's object ID followed by C, or both. Clearly, however, what the test wanted to see is that there is a line that contains all of them. This is clearly unintended, and the grep invocations in question really match too many lines. Fix the test by avoiding the newlines in the patterns. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> 05 July 2017, 16:26:52 UTC
5453b83 send-email: --batch-size to work around some SMTP server limit Some email servers (e.g. smtp.163.com) limit the number emails to be sent per session (connection) and this will lead to a faliure when sending many messages. Teach send-email to disconnect after sending a number of messages (configurable via the --batch-size=<num> option), wait for a few seconds (configurable via the --relogin-delay=<seconds> option) and reconnect, to work around such a limit. Also add two configuration variables to give these options the default. Note: We will use this as a band-aid for now, but in the longer term, we should look at and react to the SMTP error code from the server; Xianqiang reports that 450 and 451 are returned by problematic servers. cf. https://public-inbox.org/git/7993e188.d18d.15c3560bcaf.Coremail.zxq_yx_007@163.com/ Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> 05 July 2017, 16:09:45 UTC
cac87dc sha1collisiondetection: automatically enable when submodule is populated If a user wants to experiment with the version of collision detecting sha1 from the submodule, the user needed to not just populate the submodule but also needed to turn the knob. A Makefile trick is easy enough to do so, so let's do this. When somebody with a copy of the submodule populated wants not to use it, that can be done by overriding it in config.mak or from the command line. Signed-off-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> 03 July 2017, 17:09:37 UTC
86cfd61 sha1dc: optionally use sha1collisiondetection as a submodule Add an option to use the sha1collisiondetection library from the submodule in sha1collisiondetection/ instead of in the copy in the sha1dc/ directory. This allows us to try out the submodule in sha1collisiondetection without breaking the build for anyone who's not expecting them as we work out any kinks. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> 03 July 2017, 17:09:34 UTC
9936c1b sha1dc: update from upstream Update sha1dc from the latest version by the upstream maintainer[1]. See commit 6b851e536b ("sha1dc: update from upstream", 2017-06-06) for the last update. This solves the Big Endian detection on Solaris reported against v2.13.2[2], hopefully without any regressions. A version of this has been tested on two Solaris SPARC installations, Cygwin (by jturney on cygwin@Freenode), and on numerous more boring systems (mainly linux/x86_64). See [3] for a discussion of the implementation and platform-specific issues. See commit a0103914c2 ("sha1dc: update from upstream", 2017-05-20) and 6b851e536b ("sha1dc: update from upstream", 2017-06-06) for previous attempts in the 2.13 series to address various compile-time feature detection in this library. 1. https://github.com/cr-marcstevens/sha1collisiondetection/commit/19d97bf5af05312267c2e874ee6bcf584d9e9681 2. <CAKKM46tHq13XiW5C8sux3=PZ1VHSu_npG8ExfWwcPD7rkZkyRQ@mail.gmail.com> (https://public-inbox.org/git/CAKKM46tHq13XiW5C8sux3=PZ1VHSu_npG8ExfWwcPD7rkZkyRQ@mail.gmail.com/) 3. https://github.com/cr-marcstevens/sha1collisiondetection/pull/34 Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> 03 July 2017, 17:09:22 UTC
3b70223 strbuf: change an always NULL/"" strbuf_addftime() param to bool strbuf_addftime() allows callers to pass a time zone name for expanding %Z. The only current caller either passes the empty string or NULL, in which case %Z is handed over verbatim to strftime(3). Replace that string parameter with a flag controlling whether to remove %Z from the format specification. This simplifies the code. Commit-message-by: René Scharfe <l.s.r@web.de> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> 01 July 2017, 17:47:05 UTC
8bc172e apply: use starts_with() in gitdiff_verify_name() Avoid running over the end of line -- a C string whose length is not known to this function -- by using starts_with() instead of memcmp(3) for checking if it starts with "/dev/null". Also simply include the newline in the string constant to compare against. Drop a comment that just states the obvious. Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> 01 July 2017, 17:39:51 UTC
5116f79 Thirteenth batch for 2.14 Signed-off-by: Junio C Hamano <gitster@pobox.com> 30 June 2017, 20:47:49 UTC
748cffc Merge branch 'vs/typofixes' Many typofixes. * vs/typofixes: Spelling fixes 30 June 2017, 20:45:25 UTC
53ee6b8 Merge branch 'rs/apply-validate-input' Tighten error checks for invalid "git apply" input. * rs/apply-validate-input: apply: check git diffs for mutually exclusive header lines apply: check git diffs for invalid file modes apply: check git diffs for missing old filenames 30 June 2017, 20:45:24 UTC
ca069a3 Merge branch 'jc/pack-bitmap-unaligned' An unaligned 32-bit access in pack-bitmap code ahs been corrected. * jc/pack-bitmap-unaligned: pack-bitmap: don't perform unaligned memory access 30 June 2017, 20:45:24 UTC
9bab852 Merge branch 'ah/doc-pretty-color-auto-prefix' Doc update. * ah/doc-pretty-color-auto-prefix: doc: clarify syntax for %C(auto,...) in pretty formats 30 June 2017, 20:45:23 UTC
d5d6a44 Merge branch 'ks/submodule-add-doc' Doc update. * ks/submodule-add-doc: Documentation/git-submodule: cleanup "add" section 30 June 2017, 20:45:22 UTC
7e46f19 Merge branch 'ks/status-initial-commit' "git status" has long shown essentially the same message as "git commit"; the message it gives while preparing for the root commit, i.e. "Initial commit", was hard to understand for some new users. Now it says "No commits yet" to stress more on the current status (rather than the commit the user is preparing for, which is more in line with the focus of "git commit"). * ks/status-initial-commit: status: contextually notify user about an initial commit 30 June 2017, 20:45:22 UTC
c7ee0ba Merge branch 'ab/die-errors-in-threaded' Traditionally, the default die() routine had a code to prevent it from getting called multiple times, which interacted badly when a threaded program used it (one downside is that the real error may be hidden and instead the only error message given to the user may end up being "die recursion detected", which is not very useful). * ab/die-errors-in-threaded: die(): stop hiding errors due to overzealous recursion guard 30 June 2017, 20:45:21 UTC
back to top