sort by:
Revision Author Date Message Commit Date
d008809 Merge branch 'js/unzip-in-usr-bin-workaround' Test tweak for FreeBSD where /usr/bin/unzip is unsuitable to run our tests but /usr/local/bin/unzip is usable. * js/unzip-in-usr-bin-workaround: test-lib: on FreeBSD, look for unzip(1) in /usr/local/bin/ 02 February 2017, 21:36:55 UTC
d3a0172 Merge branch 'cw/doc-sign-off' Doc update. * cw/doc-sign-off: doc: clarify distinction between sign-off and pgp-signing 02 February 2017, 21:36:55 UTC
93d2387 Merge branch 'js/status-pre-rebase-i' After starting "git rebase -i", which first opens the user's editor to edit the series of patches to apply, but before saving the contents of that file, "git status" failed to show the current state (i.e. you are in an interactive rebase session, but you have applied no steps yet) correctly. * js/status-pre-rebase-i: status: be prepared for not-yet-started interactive rebase 02 February 2017, 21:36:54 UTC
9dec2c6 Merge branch 'js/retire-relink' Cruft removal. * js/retire-relink: relink: really remove the command relink: retire the command 02 February 2017, 21:36:54 UTC
1e6a893 Merge branch 'sb/submodule-add-force' "git submodule add" used to be confused and refused to add a locally created repository; users can now use "--force" option to add them. * sb/submodule-add-force: submodule add: extend force flag to add existing repos 02 February 2017, 21:36:54 UTC
8f60064 Sync with maint * maint: Ready for 2.11.1 31 January 2017, 21:34:59 UTC
b32fe95 Ready for 2.11.1 Signed-off-by: Junio C Hamano <gitster@pobox.com> 31 January 2017, 21:34:48 UTC
1ac2ec6 Merge branch 'sb/in-core-index-doc' into maint Documentation and in-code comments updates. * sb/in-core-index-doc: documentation: retire unfinished documentation cache.h: document add_[file_]to_index cache.h: document remove_index_entry_at cache.h: document index_name_pos 31 January 2017, 21:32:11 UTC
6a7e25d Merge branch 'js/mingw-isatty' into maint An update to a topic that is already in 'master'. * js/mingw-isatty: mingw: follow-up to "replace isatty() hack" 31 January 2017, 21:32:11 UTC
63f1bb8 Merge branch 'jk/coding-guidelines-update' into maint Developer doc update. * jk/coding-guidelines-update: CodingGuidelines: clarify multi-line brace style 31 January 2017, 21:32:11 UTC
21a9002 Merge branch 'js/exec-path-coverity-workaround' into maint Code cleanup. * js/exec-path-coverity-workaround: git_exec_path: do not return the result of getenv() git_exec_path: avoid Coverity warning about unfree()d result 31 January 2017, 21:32:10 UTC
2ae2362 Merge branch 'ad/bisect-terms' into maint Documentation fix. * ad/bisect-terms: Documentation/bisect: improve on (bad|new) and (good|bad) 31 January 2017, 21:32:10 UTC
14beee0 Merge branch 'jk/grep-e-could-be-extended-beyond-posix' into maint Tighten a test to avoid mistaking an extended ERE regexp engine as a PRE regexp engine. * jk/grep-e-could-be-extended-beyond-posix: t7810: avoid assumption about invalid regex syntax 31 January 2017, 21:32:09 UTC
f5f55a1 Merge branch 'km/branch-get-push-while-detached' into maint "git <cmd> @{push}" on a detached HEAD used to segfault; it has been corrected to error out with a message. * km/branch-get-push-while-detached: branch_get_push: do not segfault when HEAD is detached 31 January 2017, 21:32:08 UTC
2b3f61d Merge branch 'jk/rebase-i-squash-count-fix' into maint "git rebase -i" with a recent update started showing an incorrect count when squashing more than 10 commits. * jk/rebase-i-squash-count-fix: rebase--interactive: count squash commits above 10 correctly 31 January 2017, 21:32:07 UTC
5fbb42a Merge branch 'jk/blame-fixes' into maint "git blame --porcelain" misidentified the "previous" <commit, path> pair (aka "source") when contents came from two or more files. * jk/blame-fixes: blame: output porcelain "previous" header for each file blame: handle --no-abbrev blame: fix alignment with --abbrev=40 31 January 2017, 21:32:07 UTC
b1e4e17 Merge branch 'jk/archive-zip-userdiff-config' into maint "git archive" did not read the standard configuration files, and failed to notice a file that is marked as binary via the userdiff driver configuration. * jk/archive-zip-userdiff-config: archive-zip: load userdiff config 31 January 2017, 21:32:07 UTC
8103717 Merge branch 'dt/disable-bitmap-in-auto-gc' into maint It is natural that "git gc --auto" may not attempt to pack everything into a single pack, and there is no point in warning when the user has configured the system to use the pack bitmap, leading to disabling further "gc". * dt/disable-bitmap-in-auto-gc: repack: die on incremental + write-bitmap-index auto gc: don't write bitmaps for incremental repacks 31 January 2017, 21:32:06 UTC
bb7c47a Merge branch 'nd/config-misc-fixes' into maint Leakage of lockfiles in the config subsystem has been fixed. * nd/config-misc-fixes: config.c: handle lock file in error case in git_config_rename_... config.c: rename label unlock_and_out config.c: handle error case for fstat() calls 31 January 2017, 21:32:06 UTC
46ab222 Merge branch 'jc/abbrev-autoscale-config' into maint Recent update to the default abbreviation length that auto-scales lacked documentation update, which has been corrected. * jc/abbrev-autoscale-config: config.abbrev: document the new default that auto-scales 31 January 2017, 21:32:06 UTC
867ce04 Merge branch 'mh/fast-import-notes-fix-new' into maint "git fast-import" sometimes mishandled while rebalancing notes tree, which has been fixed. * mh/fast-import-notes-fix-new: fast-import: properly fanout notes when tree is imported 31 January 2017, 21:32:05 UTC
bdc370a Merge branch 'jc/compression-config' into maint Compression setting for producing packfiles were spread across three codepaths, one of which did not honor any configuration. Unify these so that all of them honor core.compression and pack.compression variables the same way. * jc/compression-config: compression: unify pack.compression configuration parsing 31 January 2017, 21:32:05 UTC
844f7e6 Merge branch 'ew/svn-fixes' into maint Meant eventually for 'maint'. * ew/svn-fixes: git-svn: document useLogAuthor and addAuthorFrom config keys git-svn: allow "0" in SVN path components 31 January 2017, 21:32:05 UTC
af1a71f Merge branch 'ls/travis-p4-on-macos' into maint Update the definition of the MacOSX test environment used by TravisCI. * ls/travis-p4-on-macos: travis-ci: fix Perforce install on macOS 31 January 2017, 21:32:04 UTC
fccb413 Merge branch 'jk/make-tags-find-sources-tweak' into maint Update the procedure to generate "tags" for developer support. * jk/make-tags-find-sources-tweak: Makefile: exclude contrib from FIND_SOURCE_FILES Makefile: match shell scripts in FIND_SOURCE_FILES Makefile: exclude test cruft from FIND_SOURCE_FILES Makefile: reformat FIND_SOURCE_FILES 31 January 2017, 21:32:04 UTC
424b07a Merge branch 'jc/latin-1' into maint Some platforms no longer understand "latin-1" that is still seen in the wild in e-mail headers; replace them with "iso-8859-1" that is more widely known when conversion fails from/to it. * jc/latin-1: utf8: accept "latin-1" as ISO-8859-1 utf8: refactor code to decide fallback encoding 31 January 2017, 21:32:04 UTC
3c4ce8e Eighth batch for 2.12 Signed-off-by: Junio C Hamano <gitster@pobox.com> 31 January 2017, 21:20:46 UTC
4ba6197 Merge branch 'jk/fsck-connectivity-check-fix' "git fsck --connectivity-check" was not working at all. * jk/fsck-connectivity-check-fix: fsck: lazily load types under --connectivity-only fsck: move typename() printing to its own function t1450: use "mv -f" within loose object directory fsck: check HAS_OBJ more consistently fsck: do not fallback "git fsck <bogus>" to "git fsck" fsck: tighten error-checks of "git fsck <head>" fsck: prepare dummy objects for --connectivity-check fsck: report trees as dangling t1450: clean up sub-objects in duplicate-entry test 31 January 2017, 21:15:01 UTC
b7786bb Merge branch 'js/difftool-builtin' Rewrite a scripted porcelain "git difftool" in C. * js/difftool-builtin: difftool: hack around -Wzero-length-format warning difftool: retire the scripted version difftool: implement the functionality in the builtin difftool: add a skeleton for the upcoming builtin 31 January 2017, 21:15:00 UTC
6ad8b8e Merge branch 'rs/qsort-s' A few codepaths had to rely on a global variable when sorting elements of an array because sort(3) API does not allow extra data to be passed to the comparison function. Use qsort_s() when natively available, and a fallback implementation of it when not, to eliminate the need, which is a prerequisite for making the codepath reentrant. * rs/qsort-s: ref-filter: use QSORT_S in ref_array_sort() string-list: use QSORT_S in string_list_sort() perf: add basic sort performance test add QSORT_S compat: add qsort_s() 31 January 2017, 21:15:00 UTC
4e170ad Merge branch 'ls/travis-p4-on-macos' Update the definition of the MacOSX test environment used by TravisCI. * ls/travis-p4-on-macos: travis-ci: fix Perforce install on macOS 31 January 2017, 21:15:00 UTC
a49260b Merge branch 'vp/show-ref-verify-head' "git show-ref HEAD" used with "--verify" because the user is not interested in seeing refs/remotes/origin/HEAD, and used with "--head" because the user does not want HEAD to be filtered out, i.e. "git show-ref --head --verify HEAD", did not work as expected. * vp/show-ref-verify-head: show-ref: remove a stale comment show-ref: remove dead `if (verify)' check show-ref: detect dangling refs under --verify as well show-ref: move --quiet handling into show_one() show-ref: allow -d to work with --verify show-ref: accept HEAD with --verify 31 January 2017, 21:14:59 UTC
0eade20 Merge branch 'sb/retire-convert-objects-from-contrib' Remove an ancient tool left in contrib/. * sb/retire-convert-objects-from-contrib: contrib: remove git-convert-objects 31 January 2017, 21:14:59 UTC
feaad0e Merge branch 'sb/in-core-index-doc' Documentation and in-code comments updates. * sb/in-core-index-doc: documentation: retire unfinished documentation cache.h: document add_[file_]to_index cache.h: document remove_index_entry_at cache.h: document index_name_pos 31 January 2017, 21:14:59 UTC
fe575f0 Merge branch 'js/remote-rename-with-half-configured-remote' With anticipatory tweaking for remotes defined in ~/.gitconfig (e.g. "remote.origin.prune" set to true, even though there may or may not actually be "origin" remote defined in a particular Git repository), "git remote rename" and other commands misinterpreted and behaved as if such a non-existing remote actually existed. * js/remote-rename-with-half-configured-remote: remote rename: more carefully determine whether a remote is configured remote rename: demonstrate a bogus "remote exists" bug 31 January 2017, 21:14:59 UTC
c54ba28 Merge branch 'jk/clear-delta-base-cache-fix' A crashing bug introduced in v2.11 timeframe has been found (it is triggerable only in fast-import) and fixed. * jk/clear-delta-base-cache-fix: clear_delta_base_cache(): don't modify hashmap while iterating 31 January 2017, 21:14:59 UTC
237bdd9 Merge branch 'st/verify-tag' "git tag" and "git verify-tag" learned to put GPG verification status in their "--format=<placeholders>" output format. * st/verify-tag: t/t7004-tag: Add --format specifier tests t/t7030-verify-tag: Add --format specifier tests builtin/tag: add --format argument for tag -v builtin/verify-tag: add --format to verify-tag ref-filter: add function to print single ref_array_item gpg-interface, tag: add GPG_VERIFY_OMIT_STATUS flag 31 January 2017, 21:14:58 UTC
d515fe0 Merge branch 'js/mingw-isatty' An update to a topic that is already in 'master'. * js/mingw-isatty: mingw: follow-up to "replace isatty() hack" 31 January 2017, 21:14:58 UTC
307de75 Merge branch 'js/sequencer-i-countdown-3' The sequencer machinery has been further enhanced so that a later set of patches can start using it to reimplement "rebase -i". * js/sequencer-i-countdown-3: (38 commits) sequencer (rebase -i): write out the final message sequencer (rebase -i): write the progress into files sequencer (rebase -i): show the progress sequencer (rebase -i): suggest --edit-todo upon unknown command sequencer (rebase -i): show only failed cherry-picks' output sequencer (rebase -i): show only failed `git commit`'s output sequencer: use run_command() directly sequencer: update reading author-script sequencer (rebase -i): differentiate between comments and 'noop' sequencer (rebase -i): implement the 'drop' command sequencer (rebase -i): allow rescheduling commands sequencer (rebase -i): respect strategy/strategy_opts settings sequencer (rebase -i): respect the rebase.autostash setting sequencer (rebase -i): run the post-rewrite hook, if needed sequencer (rebase -i): record interrupted commits in rewritten, too sequencer (rebase -i): copy commit notes at end sequencer (rebase -i): set the reflog message consistently sequencer (rebase -i): refactor setting the reflog message sequencer (rebase -i): allow fast-forwarding for edit/reword sequencer (rebase -i): implement the 'reword' command ... 31 January 2017, 21:14:58 UTC
a92aae5 Merge branch 'jk/coding-guidelines-update' Developer doc update. * jk/coding-guidelines-update: CodingGuidelines: clarify multi-line brace style 31 January 2017, 21:14:57 UTC
42ace93 Merge branch 'jk/loose-object-fsck' "git fsck" inspects loose objects more carefully now. * jk/loose-object-fsck: fsck: detect trailing garbage in all object types fsck: parse loose object paths directly sha1_file: add read_loose_object() function t1450: test fsck of packed objects sha1_file: fix error message for alternate objects t1450: refactor loose-object removal 31 January 2017, 21:14:57 UTC
e8272fd Merge branch 'js/exec-path-coverity-workaround' Code cleanup. * js/exec-path-coverity-workaround: git_exec_path: do not return the result of getenv() git_exec_path: avoid Coverity warning about unfree()d result 31 January 2017, 21:14:57 UTC
792e22e Merge branch 'bw/push-submodule-only' "git submodule push" learned "--recurse-submodules=only option to push submodules out without pushing the top-level superproject. * bw/push-submodule-only: push: add option to push only submodules submodules: add RECURSE_SUBMODULES_ONLY value transport: reformat flag #defines to be more readable 31 January 2017, 21:14:56 UTC
daf75f2 Merge branch 'jk/vreport-sanitize' An error message with an ASCII control character like '\r' in it can alter the message to hide its early part, which is problematic when a remote side gives such an error message that the local side will relay with a "remote: " prefix. * jk/vreport-sanitize: vreport: sanitize ASCII control chars Revert "vreportf: avoid intermediate buffer" 31 January 2017, 21:14:56 UTC
eafd5d9 doc: clarify distinction between sign-off and pgp-signing The documentation for submission discourages pgp-signing, but demands a proper sign-off by contributors. However, when skimming the headings, the wording of the section for sign-off could mistakenly be understood as concerning pgp-signing. Thus, new contributors could oversee the necessary sign-off. This commit improves the wording such that the section about sign-off cannot be misunderstood as pgp-signing. In addition, the paragraph about pgp-signing is changed such that it avoids the impression that pgp-signing could be relevant at later stages of the submission. Signed-off-by: Cornelius Weig <cornelius.weig@tngtech.com> Helped-by: Philip Oakley <philipoakley@iee.org> Helped-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> 27 January 2017, 21:41:30 UTC
d98b2c5 test-lib: on FreeBSD, look for unzip(1) in /usr/local/bin/ Eric Wong reported that while FreeBSD has a /usr/bin/unzip, it uses different semantics from those that are needed by Git's tests: When passing the -a option to Info-Zip, it heeds the text attribute of the .zip file's central directory, while FreeBSD's unzip ignores that attribute. The common work-around is to install Info-Zip on FreeBSD, into /usr/local/bin/. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Tested-by: Eric Wong <e@80x24.org> Signed-off-by: Junio C Hamano <gitster@pobox.com> 27 January 2017, 18:55:26 UTC
df9ded4 status: be prepared for not-yet-started interactive rebase Some developers might want to call `git status` in a working directory where they just started an interactive rebase, but the edit script is still opened in the editor. Let's show a meaningful message in such cases. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> 26 January 2017, 19:43:18 UTC
a2b2285 fsck: lazily load types under --connectivity-only The recent fixes to "fsck --connectivity-only" load all of the objects with their correct types. This keeps the connectivity-only code path close to the regular one, but it also introduces some unnecessary inefficiency. While getting the type of an object is cheap compared to actually opening and parsing the object (as the non-connectivity-only case would do), it's still not free. For reachable non-blob objects, we end up having to parse them later anyway (to see what they point to), making our type lookup here redundant. For unreachable objects, we might never hit them at all in the reachability traversal, making the lookup completely wasted. And in some cases, we might have quite a few unreachable objects (e.g., when alternates are used for shared object storage between repositories, it's normal for there to be objects reachable from other repositories but not the one running fsck). The comment in mark_object_for_connectivity() claims two benefits to getting the type up front: 1. We need to know the types during fsck_walk(). (And not explicitly mentioned, but we also need them when printing the types of broken or dangling commits). We can address this by lazy-loading the types as necessary. Most objects never need this lazy-load at all, because they fall into one of these categories: a. Reachable from our tips, and are coerced into the correct type as we traverse (e.g., a parent link will call lookup_commit(), which converts OBJ_NONE to OBJ_COMMIT). b. Unreachable, but not at the tip of a chunk of unreachable history. We only mention the tips as "dangling", so an unreachable commit which links to hundreds of other objects needs only report the type of the tip commit. 2. It serves as a cross-check that the coercion in (1a) is correct (i.e., we'll complain about a parent link that points to a blob). But we get most of this for free already, because right after coercing, we'll parse any non-blob objects. So we'd notice then if we expected a commit and got a blob. The one exception is when we expect a blob, in which case we never actually read the object contents. So this is a slight weakening, but given that the whole point of --connectivity-only is to sacrifice some data integrity checks for speed, this seems like an acceptable tradeoff. Here are before and after timings for an extreme case with ~5M reachable objects and another ~12M unreachable (it's the torvalds/linux repository on GitHub, connected to shared storage for all of the other kernel forks): [before] $ time git fsck --no-dangling --connectivity-only real 3m4.323s user 1m25.121s sys 1m38.710s [after] $ time git fsck --no-dangling --connectivity-only real 0m51.497s user 0m49.575s sys 0m1.776s Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 26 January 2017, 18:51:09 UTC
97ca7ca fsck: move typename() printing to its own function When an object has a problem, we mention its type. But we do so by feeding the result of typename() directly to fprintf(). This is potentially dangerous because typename() can return NULL for some type values (like OBJ_NONE). It's doubtful that this can be triggered in practice with the current code, so this is probably not fixing a bug. But it future-proofs us against modifications that make things like OBJ_NONE more likely (and gives future patches a central point to handle them). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 26 January 2017, 18:47:20 UTC
e0ae5b6 relink: really remove the command The files in contrib/examples are meant to illustrate "you could combine plumbing commands to implement something like these"; this is an opposite and is an example of what not to do, e.g. accessing the object store directly bypassing Git. Remove it. Suggested-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 25 January 2017, 22:43:23 UTC
ed21e30 relink: retire the command Back in the olden days, when all objects were loose and rubber boots were made out of wood, it made sense to try to share (immutable) objects between repositories. Ever since the arrival of pack files, it is but an anachronism. Let's move the script to the contrib/examples/ directory and no longer offer it. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> 25 January 2017, 22:42:37 UTC
94d3997 difftool: hack around -Wzero-length-format warning Building with "gcc -Wall" will complain that the format in: warning("") is empty. Which is true, but the warning is over-eager. We are calling the function for its side effect of printing "warning:", even with an empty string. Our DEVELOPER Makefile knob disables the warning, but not everybody uses it. Let's silence the warning in the code so that nobody reports it or tries to "fix" it. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 25 January 2017, 21:28:34 UTC
c20d4d7 t1450: use "mv -f" within loose object directory The loose objects are created with mode 0444. That doesn't prevent them being overwritten by rename(), but some versions of "mv" will be extra careful and prompt the user, even without "-i". Reportedly macOS does this, at least in the Travis builds. The prompt reads from /dev/null, defaulting to "no", and the object isn't moved. Then to make matters even more interesting, it still returns "0" and the rest of the test proceeds, but with a broken setup. We can work around it by using "mv -f" to override the prompt. This should work as it's already used in t5504 for the same purpose. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 25 January 2017, 20:32:32 UTC
0d583ff show-ref: remove a stale comment When cf0adba788 ("Store peeled refs in packed-refs file.", 2006-11-19) made the command to die with a message on error even when --quiet is passed, it left the comment to say it changed the semantics. But that kind of information belongs to the log message, not in-code comment. Besides, the behaviour after the change has been the established one for the past 10 years ;-) Signed-off-by: Junio C Hamano <gitster@pobox.com> 24 January 2017, 02:51:56 UTC
4e59582 Seventh batch for 2.12 Signed-off-by: Junio C Hamano <gitster@pobox.com> 24 January 2017, 00:00:40 UTC
71db0cf Merge branch 'ws/request-pull-code-cleanup' Code clean-up. * ws/request-pull-code-cleanup: request-pull: drop old USAGE stuff 23 January 2017, 23:59:23 UTC
831bd5e Merge branch 'rh/diff-orderfile-doc' Documentation fix. * rh/diff-orderfile-doc: diff: document the format of the -O (diff.orderFile) file diff: document behavior of relative diff.orderFile 23 January 2017, 23:59:23 UTC
e11c826 Merge branch 'sb/cd-then-git-can-be-written-as-git-c' Test clean-up. * sb/cd-then-git-can-be-written-as-git-c: lib-submodule-update.sh: reduce use of subshell by using "git -C" 23 January 2017, 23:59:22 UTC
e945770 Merge branch 'ad/bisect-terms' Documentation fix. * ad/bisect-terms: Documentation/bisect: improve on (bad|new) and (good|bad) 23 January 2017, 23:59:22 UTC
1ac244d Merge branch 'sg/fix-versioncmp-with-common-suffix' The prereleaseSuffix feature of version comparison that is used in "git tag -l" did not correctly when two or more prereleases for the same release were present (e.g. when 2.0, 2.0-beta1, and 2.0-beta2 are there and the code needs to compare 2.0-beta1 and 2.0-beta2). * sg/fix-versioncmp-with-common-suffix: versioncmp: generalize version sort suffix reordering versioncmp: factor out helper for suffix matching versioncmp: use earliest-longest contained suffix to determine sorting order versioncmp: cope with common part overlapping with prerelease suffix versioncmp: pass full tagnames to swap_prereleases() t7004-tag: add version sort tests to show prerelease reordering issues t7004-tag: use test_config helper t7004-tag: delete unnecessary tags with test_when_finished 23 January 2017, 23:59:21 UTC
8ec68d1 Merge branch 'vn/diff-ihc-config' "git diff" learned diff.interHunkContext configuration variable that gives the default value for its --inter-hunk-context option. * vn/diff-ihc-config: diff: add interhunk context config option 23 January 2017, 23:59:21 UTC
e801be0 Merge branch 'sb/submodule-init' Error message fix. * sb/submodule-init: submodule update --init: display correct path from submodule 23 January 2017, 23:59:21 UTC
9dc7f78 Merge branch 'sb/submodule-embed-gitdir' Help-text fix. * sb/submodule-embed-gitdir: submodule absorbgitdirs: mention in docstring help 23 January 2017, 23:59:20 UTC
972dfda Merge branch 'sb/submodule-config-tests' Test updates. * sb/submodule-config-tests: t7411: test lookup of uninitialized submodules t7411: quote URLs 23 January 2017, 23:59:20 UTC
38f1370 Merge branch 'jk/grep-e-could-be-extended-beyond-posix' Tighten a test to avoid mistaking an extended ERE regexp engine as a PRE regexp engine. * jk/grep-e-could-be-extended-beyond-posix: t7810: avoid assumption about invalid regex syntax 23 January 2017, 23:59:20 UTC
a06b4c3 Merge branch 'bw/read-blob-data-does-not-modify-index-state' Code clean-up. * bw/read-blob-data-does-not-modify-index-state: index: improve constness for reading blob data 23 January 2017, 23:59:19 UTC
02bdc9d show-ref: remove dead `if (verify)' check As show_ref() is only ever called on the path where --verify is not specified, `verify' can never possibly be true here. Signed-off-by: Vladimir Panteleev <git@thecybershadow.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 23 January 2017, 20:06:30 UTC
d01b820 show-ref: detect dangling refs under --verify as well Move detection of dangling refs into show_one(), so that they are detected when --verify is present as well as when it is absent. Signed-off-by: Vladimir Panteleev <git@thecybershadow.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 23 January 2017, 20:06:29 UTC
14144d3 show-ref: move --quiet handling into show_one() Do the same with --quiet as was done with -d, to remove the need to perform this check at show_one()'s call site from the --verify branch. Signed-off-by: Vladimir Panteleev <git@thecybershadow.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 23 January 2017, 20:06:29 UTC
f162704 show-ref: allow -d to work with --verify Move handling of -d into show_one(), so that it takes effect when --verify is present as well as when it is absent. This is useful when the user wishes to avoid the costly iteration of refs. Signed-off-by: Vladimir Panteleev <git@thecybershadow.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 23 January 2017, 20:06:29 UTC
ec7c51b show-ref: accept HEAD with --verify Previously, when --verify was specified, show-ref would use a separate code path which did not handle HEAD and treated it as an invalid ref. Thus, "git show-ref --verify HEAD" (where "--verify" is used because the user is not interested in seeing refs/remotes/origin/HEAD) did not work as expected. Instead of insisting that the input begins with "refs/", allow "HEAD" as well in the codepath that handles "--verify", so that all valid full refnames including HEAD are passed to the same output machinery. Signed-off-by: Vladimir Panteleev <git@thecybershadow.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 23 January 2017, 20:06:29 UTC
83fc4d6 ref-filter: use QSORT_S in ref_array_sort() Pass the array of sort keys to compare_refs() via the context parameter of qsort_s() instead of using a global variable; that's cleaner and simpler. If ref_array_sort() is to be called from multiple parallel threads then care still needs to be taken that the global variable used_atom is not modified concurrently. Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> 23 January 2017, 19:02:40 UTC
5ebd947 string-list: use QSORT_S in string_list_sort() Pass the comparison function to cmp_items() via the context parameter of qsort_s() instead of using a global variable. That allows calling string_list_sort() from multiple parallel threads. Our qsort_s() in compat/ is slightly slower than qsort(1) from glibc 2.24 for sorting lots of lines: Test HEAD^ HEAD --------------------------------------------------------------------- 0071.2: sort(1) 0.10(0.22+0.01) 0.09(0.21+0.00) -10.0% 0071.3: string_list_sort() 0.16(0.15+0.01) 0.17(0.15+0.00) +6.3% GNU sort(1) version 8.26 is significantly faster because it uses multiple parallel threads; with the unportable option --parallel=1 it becomes slower: Test HEAD^ HEAD -------------------------------------------------------------------- 0071.2: sort(1) 0.21(0.18+0.01) 0.20(0.18+0.01) -4.8% 0071.3: string_list_sort() 0.16(0.13+0.02) 0.17(0.15+0.01) +6.3% There is some instability -- the numbers for the sort(1) check shouldn't be affected by this patch. Anyway, the performance of our qsort_s() implementation is apparently good enough, at least for this test. Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> 23 January 2017, 19:02:38 UTC
564e94e perf: add basic sort performance test Add a sort command to test-string-list that reads lines from stdin, stores them in a string_list and then sorts it. Use it in a simple perf test script to measure the performance of string_list_sort(). Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> 23 January 2017, 19:02:37 UTC
3ca8699 add QSORT_S Add the macro QSORT_S, a convenient wrapper for qsort_s() that infers the size of the array elements and dies on error. Basically all possible errors are programming mistakes (passing NULL as base of a non-empty array, passing NULL as comparison function, out-of-bounds accesses), so terminating the program should be acceptable for most callers. Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> 23 January 2017, 19:02:36 UTC
04ee8b8 compat: add qsort_s() The function qsort_s() was introduced with C11 Annex K; it provides the ability to pass a context pointer to the comparison function, supports the convention of using a NULL pointer for an empty array and performs a few safety checks. Add an implementation based on compat/qsort.c for platforms that lack a native standards-compliant qsort_s() (i.e. basically everyone). It doesn't perform the full range of possible checks: It uses size_t instead of rsize_t and doesn't check nmemb and size against RSIZE_MAX because we probably don't have the restricted size type defined. For the same reason it returns int instead of errno_t. Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> 23 January 2017, 19:02:34 UTC
672f51c travis-ci: fix Perforce install on macOS The `perforce` and `perforce-server` package were moved from brew [1][2] to cask [3]. Teach TravisCI the new location. Perforce updates their binaries without version bumps. That made the brew install (legitimately!) fail due to checksum mismatches. The workaround is not necessary anymore as Cask [4] allows to disable the checksum test for individual formulas. [1] https://github.com/Homebrew/homebrew-binary/commit/1394e42de04d07445f82f9512627e864ff4ca4c6 [2] https://github.com/Homebrew/homebrew-binary/commit/f8da22d6b8dbcfcfdb2dfa9ac1a5e5d8e05aac2b [3] https://github.com/caskroom/homebrew-cask/pull/29180 [4] https://caskroom.github.io/ Signed-off-by: Lars Schneider <larsxschneider@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> 23 January 2017, 18:55:00 UTC
c9a98dd contrib: remove git-convert-objects git-convert-objects, originally named git-convert-cache was used in early 2005 to convert ancient repositories where objects are named after the hash of their compressed contents to the current object naming sheme where they are named after the hash of their pre-compression contents. By now the need for conversion of the very early repositories is less relevant, we no longer need to keep it in contrib; remove it. Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> 19 January 2017, 22:56:47 UTC
e459b07 remote rename: more carefully determine whether a remote is configured One of the really nice features of the ~/.gitconfig file is that users can override defaults by their own preferred settings for all of their repositories. One such default that some users like to override is whether the "origin" remote gets auto-pruned or not. The user would simply call git config --global remote.origin.prune true and from now on all "origin" remotes would be pruned automatically when fetching into the local repository. There is just one catch: now Git thinks that the "origin" remote is configured, even if the repository config has no [remote "origin"] section at all, as it does not realize that the "prune" setting was configured globally and that there really is no "origin" remote configured in this repository. That is a problem e.g. when renaming a remote to a new name, when Git may be fooled into thinking that there is already a remote of that new name. Let's fix this by paying more attention to *where* the remote settings came from: if they are configured in the local repository config, we must not overwrite them. If they were configured elsewhere, we cannot overwrite them to begin with, as we only write the repository config. There is only one caller of remote_is_configured() (in `git fetch`) that may want to take remotes into account even if they were configured outside the repository config; all other callers essentially try to prevent the Git command from overwriting settings in the repository config. To accommodate that fact, the remote_is_configured() function now requires a parameter that states whether the caller is interested in all remotes, or only in those that were configured in the repository config. Many thanks to Jeff King whose tireless review helped with settling for nothing less than the current strategy. This fixes https://github.com/git-for-windows/git/issues/888 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> 19 January 2017, 22:04:23 UTC
af5bacf remote rename: demonstrate a bogus "remote exists" bug Some users like to set `remote.origin.prune = true` in their ~/.gitconfig so that all of their repositories use that default. However, our code is ill-prepared for this, mistaking that single entry to mean that there is already a remote of the name "origin", even if there is not. This patch adds a test case demonstrating this issue. Reported by Andrew Arnott. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> 19 January 2017, 22:04:16 UTC
019678d difftool: retire the scripted version It served its purpose, but now we have a builtin difftool. Time for the Perl script to enjoy Florida. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> 19 January 2017, 21:23:43 UTC
03831ef difftool: implement the functionality in the builtin This patch gives life to the skeleton added in the previous patch. The motivation for converting the difftool is that Perl scripts are not at all native on Windows, and that `git difftool` therefore is pretty slow on that platform, when there is no good reason for it to be slow. In addition, Perl does not really have access to Git's internals. That means that any script will always have to jump through unnecessary hoops, and it will often need to perform unnecessary work (e.g. when reading the entire config every time `git config` is called to query a single config value). The current version of the builtin difftool does not, however, make full use of the internals but instead chooses to spawn a couple of Git processes, still, to make for an easier conversion. There remains a lot of room for improvement, left later. Note: to play it safe, the original difftool is still called unless the config setting difftool.useBuiltin is set to true. The reason: this new, experimental, builtin difftool was shipped as part of Git for Windows v2.11.0, to allow for easier large-scale testing, but of course as an opt-in feature. The speedup is actually more noticable on Linux than on Windows: a quick test shows that t7800-difftool.sh runs in (2.183s/0.052s/0.108s) (real/user/sys) in a Linux VM, down from (6.529s/3.112s/0.644s), while on Windows, it is (36.064s/2.730s/7.194s), down from (47.637s/2.407s/6.863s). The culprit is most likely the overhead incurred from *still* having to shell out to mergetool-lib.sh and difftool--helper.sh. Still, it is an improvement. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> 19 January 2017, 21:22:36 UTC
830c912 documentation: retire unfinished documentation When looking for documentation for a specific function, you may be tempted to run git -C Documentation grep index_name_pos only to find the file technical/api-in-core-index.txt, which doesn't help for understanding the given function. It would be better to not find these functions in the documentation, such that people directly dive into the code instead. In the previous patches we have documented * index_name_pos() * remove_index_entry_at() * add_[file_]to_index() in cache.h We already have documentation for: * add_index_entry() * read_index() Which leaves us with a TODO for: * cache -> the_index macros * refresh_index() * discard_index() * ie_match_stat() and ie_modified(); how they are different and when to use which. * write_index() that was renamed to write_locked_index * cache_tree_invalidate_path() * cache_tree_update() Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> 19 January 2017, 20:18:43 UTC
20cf41d cache.h: document add_[file_]to_index Helped-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> 19 January 2017, 20:18:06 UTC
3bd72ad cache.h: document remove_index_entry_at Do this by moving the existing documentation from read-cache.c to cache.h. Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> 19 January 2017, 20:17:57 UTC
12733e9 cache.h: document index_name_pos Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> 19 January 2017, 20:13:46 UTC
abd5a00 clear_delta_base_cache(): don't modify hashmap while iterating On Thu, Jan 19, 2017 at 03:03:46PM +0100, Ulrich Spörlein wrote: > > I suspect the patch below may fix things for you. It works around it by > > walking over the lru list (either is fine, as they both contain all > > entries, and since we're clearing everything, we don't care about the > > order). > > Confirmed. With the patch applied, I can import the whole 55G in one go > without any crashes or aborts. Thanks much! Thanks. Here it is rolled up with a commit message. -- >8 -- Subject: clear_delta_base_cache(): don't modify hashmap while iterating Removing entries while iterating causes fast-import to access an already-freed `struct packed_git`, leading to various confusing errors. What happens is that clear_delta_base_cache() drops the whole contents of the cache by iterating over the hashmap, calling release_delta_base_cache() on each entry. That function removes the item from the hashmap. The hashmap code may then shrink the table, but the hashmap_iter struct retains an offset from the old table. As a result, the next call to hashmap_iter_next() may claim that the iteration is done, even though some items haven't been visited. The only caller of clear_delta_base_cache() is fast-import, which wants to clear the cache because it is discarding the packed_git struct for its temporary pack. So by failing to remove all of the entries, we still have references to the freed packed_git. To make things even more confusing, this doesn't seem to trigger with the test suite, because it depends on complexities like the size of the hash table, which entries got cleared, whether we try to access them before they're evicted from the cache, etc. So I've been able to identify the problem with large imports like freebsd's svn import, or a fast-export of linux.git. But nothing that would be reasonable to run as part of the normal test suite. We can fix this easily by iterating over the lru linked list instead of the hashmap. They both contain the same entries, and we can use the "safe" variant of the list iterator, which exists for exactly this case. Let's also add a warning to the hashmap API documentation to reduce the chances of getting bit by this again. Reported-by: Ulrich Spörlein <uqs@freebsd.org> Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 19 January 2017, 19:17:20 UTC
787f75f Sixth batch for 2.12 18 January 2017, 23:15:36 UTC
6903f33 Merge branch 'sb/remove-gitview' Retire long unused/unmaintained gitview from the contrib/ area. * sb/remove-gitview: doc: git-gui browser does not default to HEAD doc: gitk: add the upstream repo location doc: gitk: remove gitview reference contrib: remove gitview 18 January 2017, 23:12:18 UTC
0abfede Merge branch 'js/asciidoctor-tweaks' Adjust documentation to help AsciiDoctor render better while not breaking the rendering done by AsciiDoc. * js/asciidoctor-tweaks: asciidoctor: fix user-manual to be built by `asciidoctor` giteveryday: unbreak rendering with AsciiDoctor 18 January 2017, 23:12:17 UTC
0c0e0fd Merge branch 'sb/unpack-trees-cleanup' Code cleanup. * sb/unpack-trees-cleanup: unpack-trees: factor progress setup out of check_updates unpack-trees: remove unneeded continue unpack-trees: move checkout state into check_updates 18 January 2017, 23:12:17 UTC
7cef7fa Merge branch 'rh/mergetool-regression-fix' "git mergetool" without any pathspec on the command line that is run from a subdirectory became no-op in Git v2.11 by mistake, which has been fixed. * rh/mergetool-regression-fix: mergetool: fix running in subdir when rerere enabled mergetool: take the "-O" out of $orderfile t7610: add test case for rerere+mergetool+subdir bug t7610: spell 'git reset --hard' consistently t7610: don't assume the checked-out commit t7610: always work on a test-specific branch t7610: delete some now-unnecessary 'git reset --hard' lines t7610: run 'git reset --hard' after each test to clean up t7610: don't rely on state from previous test t7610: use test_when_finished for cleanup tasks t7610: move setup code to the 'setup' test case t7610: update branch names to match test number rev-parse doc: pass "--" to rev-parse in the --prefix example .mailmap: record canonical email for Richard Hansen 18 January 2017, 23:12:16 UTC
1c16df2 Merge branch 'bw/realpath-wo-chdir' The implementation of "real_path()" was to go there with chdir(2) and call getcwd(3), but this obviously wouldn't be usable in a threaded environment. Rewrite it to manually resolve relative paths including symbolic links in path components. * bw/realpath-wo-chdir: real_path: set errno when max number of symlinks is exceeded real_path: prevent redefinition of MAXSYMLINKS 18 January 2017, 23:12:16 UTC
5918bdc Merge branch 'jk/execv-dashed-external' Typing ^C to pager, which usually does not kill it, killed Git and took the pager down as a collateral damage in certain process-tree structure. This has been fixed. * jk/execv-dashed-external: execv_dashed_external: wait for child on signal death execv_dashed_external: stop exiting with negative code execv_dashed_external: use child_process struct 18 January 2017, 23:12:16 UTC
60dae46 Merge branch 'sp/cygwin-build-fixes' Build updates for Cygwin. * sp/cygwin-build-fixes: Makefile: put LIBS after LDFLAGS for imap-send Makefile: POSIX windres 18 January 2017, 23:12:15 UTC
00880a1 Merge branch 'sb/pathspec-errors' Running "git add a/b" when "a" is a submodule correctly errored out, but without a meaningful error message. * sb/pathspec-errors: pathspec: give better message for submodule related pathspec error 18 January 2017, 23:12:15 UTC
c7f352f Merge branch 'pb/test-must-fail-is-for-git' Test cleanup. * pb/test-must-fail-is-for-git: t9813: avoid using pipes don't use test_must_fail with grep 18 January 2017, 23:12:15 UTC
fe9ec8b Merge branch 'bw/pathspec-cleanup' Code clean-up in the pathspec API. * bw/pathspec-cleanup: pathspec: rename prefix_pathspec to init_pathspec_item pathspec: small readability changes pathspec: create strip submodule slash helpers pathspec: create parse_element_magic helper pathspec: create parse_long_magic function pathspec: create parse_short_magic function pathspec: factor global magic into its own function pathspec: simpler logic to prefix original pathspec elements pathspec: always show mnemonic and name in unsupported_magic pathspec: remove unused variable from unsupported_magic pathspec: copy and free owned memory pathspec: remove the deprecated get_pathspec function ls-tree: convert show_recursive to use the pathspec struct interface dir: convert fill_directory to use the pathspec struct interface dir: remove struct path_simplify mv: remove use of deprecated 'get_pathspec()' 18 January 2017, 23:12:15 UTC
e51058f Merge branch 'js/mingw-test-push-unc-path' "git push \\server\share\dir" has recently regressed and then fixed. A test has retroactively been added for this breakage. * js/mingw-test-push-unc-path: mingw: add a regression test for pushing to UNC paths 18 January 2017, 23:12:14 UTC
8b5b0e8 Merge branch 'sb/submodule-cleanup-export-git-dir-env' Code cleanup. * sb/submodule-cleanup-export-git-dir-env: submodule.c: use GIT_DIR_ENVIRONMENT consistently 18 January 2017, 23:12:14 UTC
back to top