gitweb.git
Merge branch 'ma/roll-back-lockfiles' into nextJunio C Hamano Tue, 6 Mar 2018 23:11:47 +0000 (15:11 -0800)

Merge branch 'ma/roll-back-lockfiles' into next

Some codepaths used to take a lockfile and did not roll it back;
they are automatically rolled back at program exit, so there is no
real "breakage", but it still is a good practice to roll back when
you are done with a lockfile.

* ma/roll-back-lockfiles:
sequencer: do not roll back lockfile unnecessarily
merge: always roll back lock in `checkout_fast_forward()`
merge-recursive: always roll back lock in `merge_recursive_generic()`
sequencer: always roll back lock in `do_recursive_merge()`
sequencer: make lockfiles non-static

Merge branch 'en/rename-directory-detection' into nextJunio C Hamano Tue, 6 Mar 2018 23:11:46 +0000 (15:11 -0800)

Merge branch 'en/rename-directory-detection' into next

Rename detection logic in "diff" family that is used in "merge" has
learned to guess when all of x/a, x/b and x/c have moved to z/a,
z/b and z/c, it is likely that x/d added in the meantime would also
want to move to z/d by taking the hint that the entire directory
'x' moved to 'z'. A bug causing dirty files involved in a rename
to be overwritten during merge has also been fixed as part of this
work.

* en/rename-directory-detection: (29 commits)
merge-recursive: ensure we write updates for directory-renamed file
merge-recursive: avoid spurious rename/rename conflict from dir renames
directory rename detection: new testcases showcasing a pair of bugs
merge-recursive: fix remaining directory rename + dirty overwrite cases
merge-recursive: fix overwriting dirty files involved in renames
merge-recursive: avoid clobbering untracked files with directory renames
merge-recursive: apply necessary modifications for directory renames
merge-recursive: when comparing files, don't include trees
merge-recursive: check for file level conflicts then get new name
merge-recursive: add computation of collisions due to dir rename & merging
merge-recursive: check for directory level conflicts
merge-recursive: add get_directory_renames()
merge-recursive: make a helper function for cleanup for handle_renames
merge-recursive: split out code for determining diff_filepairs
merge-recursive: make !o->detect_rename codepath more obvious
merge-recursive: fix leaks of allocated renames and diff_filepairs
merge-recursive: introduce new functions to handle rename logic
merge-recursive: move the get_renames() function
directory rename detection: tests for handling overwriting dirty files
directory rename detection: tests for handling overwriting untracked files
...

Merge branch 'nd/diff-stat-with-summary' into nextJunio C Hamano Tue, 6 Mar 2018 23:11:46 +0000 (15:11 -0800)

Merge branch 'nd/diff-stat-with-summary' into next

"git diff" and friends learned "--compact-summary" that shows the
information usually given with the "--summary" option on the same
line as the diffstat output of the "--stat" option (which saves
vertical space and keeps info on a single path at the same place).

* nd/diff-stat-with-summary:
diff: add --compact-summary
diff.c: refactor pprint_rename() to use strbuf

Merge branch 'nd/worktree-move' into nextJunio C Hamano Tue, 6 Mar 2018 23:11:43 +0000 (15:11 -0800)

Merge branch 'nd/worktree-move' into next

"git worktree" learned move and remove subcommands.

* nd/worktree-move:
t2028: fix minor error and issues in newly-added "worktree move" tests

t2028: fix minor error and issues in newly-added "workt... Eric Sunshine Sun, 4 Mar 2018 05:26:47 +0000 (00:26 -0500)

t2028: fix minor error and issues in newly-added "worktree move" tests

Recently-added "git worktree move" tests include a minor error and a few
small issues. Specifically:

* checking non-existence of wrong file ("source" instead of
"destination")

* unneeded redirect (">empty")

* unused variable ("toplevel")

* restoring a worktree location by means of a separate test somewhat
distant from the test which moved it rather than using
test_when_finished() to restore it in a self-contained fashion

* having git command on the left-hand-side of a pipe ("git foo | grep")

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Acked-by: Duy Nguyen <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Revert "Merge branch 'ps/contains-id-error-message... Junio C Hamano Tue, 6 Mar 2018 21:29:32 +0000 (13:29 -0800)

Revert "Merge branch 'ps/contains-id-error-message' into next"

This reverts commit 9623d6817b680fa341cf7f37172995286db177a8, reversing
changes made to 565a3141ceb4e3c738fb5c1752bb8a7d638bc3a9.

Revert "Merge branch 'ps/contains-id-error-message... Junio C Hamano Tue, 6 Mar 2018 21:29:24 +0000 (13:29 -0800)

Revert "Merge branch 'ps/contains-id-error-message' into next"

This reverts commit a2c8e1f0510403956f3eb488235cbc552503236b, reversing
changes made to cb683e0bf615cfbbe729b561a6ca9484c4bf4596.

Merge branch 'bp/untracked-cache-noflush' into nextJunio C Hamano Fri, 2 Mar 2018 20:18:31 +0000 (12:18 -0800)

Merge branch 'bp/untracked-cache-noflush' into next

Writing out the index file when the only thing that changed in it
is the untracked cache information is often wasteful, and this has
been optimized out.

* bp/untracked-cache-noflush:
untracked cache: use git_env_bool() not getenv() for customization
dir.c: don't flag the index as dirty for changes to the untracked cache

Merge branch 'ab/gc-auto-in-commit' into nextJunio C Hamano Fri, 2 Mar 2018 20:18:30 +0000 (12:18 -0800)

Merge branch 'ab/gc-auto-in-commit' into next

"git commit" used to run "gc --auto" near the end, which was lost
when the command was reimplemented in C by mistake.

* ab/gc-auto-in-commit:
commit: run git gc --auto just before the post-commit hook

Merge branch 'ag/userdiff-go-funcname' into nextJunio C Hamano Fri, 2 Mar 2018 20:18:30 +0000 (12:18 -0800)

Merge branch 'ag/userdiff-go-funcname' into next

"git diff" and friends learned funcname patterns for Go language
source files.

* ag/userdiff-go-funcname:
userdiff: add built-in pattern for golang

Merge branch 'rs/perf-repeat-thrice-by-default' into... Junio C Hamano Fri, 2 Mar 2018 20:18:30 +0000 (12:18 -0800)

Merge branch 'rs/perf-repeat-thrice-by-default' into next

Perf test regression fix.

* rs/perf-repeat-thrice-by-default:
perf: use GIT_PERF_REPEAT_COUNT=3 by default even without config file

Merge branch 'mk/doc-pretty-fill' into nextJunio C Hamano Fri, 2 Mar 2018 20:18:29 +0000 (12:18 -0800)

Merge branch 'mk/doc-pretty-fill' into next

Docfix.

* mk/doc-pretty-fill:
docs/pretty-formats: fix typo '% <(<N>)' -> '%<|(<N>)'

Merge branch 'jc/test-must-be-empty' into nextJunio C Hamano Fri, 2 Mar 2018 20:18:28 +0000 (12:18 -0800)

Merge branch 'jc/test-must-be-empty' into next

Test framework tweak to catch developer thinko.

* jc/test-must-be-empty:
test_must_be_empty: make sure the file exists, not just empty

Merge branch 'ds/mark-parents-uninteresting-optim'... Junio C Hamano Fri, 2 Mar 2018 20:18:27 +0000 (12:18 -0800)

Merge branch 'ds/mark-parents-uninteresting-optim' into next

Micro optimization in revision traversal code.

* ds/mark-parents-uninteresting-optim:
revision.c: reduce object database queries

Merge branch 'ds/find-unique-abbrev-optim' into nextJunio C Hamano Fri, 2 Mar 2018 20:18:26 +0000 (12:18 -0800)

Merge branch 'ds/find-unique-abbrev-optim' into next

While finding unique object name abbreviation, the code may
accidentally have read beyond the end of the array of object names
in a pack.

* ds/find-unique-abbrev-optim:
sha1_name: fix uninitialized memory errors

Merge branch 'sg/subtree-signed-commits' into nextJunio C Hamano Fri, 2 Mar 2018 20:18:25 +0000 (12:18 -0800)

Merge branch 'sg/subtree-signed-commits' into next

"git subtree" script (in contrib/) scripted around "git log", whose
output got affected by end-user configuration like log.showsignature

* sg/subtree-signed-commits:
subtree: fix add and pull for GPG-signed commits

Merge branch 'rv/grep-cleanup' into nextJunio C Hamano Fri, 2 Mar 2018 20:18:24 +0000 (12:18 -0800)

Merge branch 'rv/grep-cleanup' into next

Threaded "git grep" has been optimized to avoid allocation in code
section that is covered under a mutex.

* rv/grep-cleanup:
grep: simplify grep_oid and grep_file
grep: move grep_source_init outside critical section

Merge branch 'ot/ref-filter-cleanup' into nextJunio C Hamano Fri, 2 Mar 2018 20:18:24 +0000 (12:18 -0800)

Merge branch 'ot/ref-filter-cleanup' into next

Code cleanup.

* ot/ref-filter-cleanup:
ref-filter: get rid of goto
ref-filter: get rid of duplicate code

Merge branch 'nd/worktree-move' into nextJunio C Hamano Fri, 2 Mar 2018 20:18:23 +0000 (12:18 -0800)

Merge branch 'nd/worktree-move' into next

"git worktree" learned move and remove subcommands.

* nd/worktree-move:
worktree remove: allow it when $GIT_WORK_TREE is already gone
worktree remove: new command
worktree move: refuse to move worktrees with submodules
worktree move: accept destination as directory
worktree move: new command
worktree.c: add update_worktree_location()
worktree.c: add validate_worktree()

Merge branch 'nd/parseopt-completion' into nextJunio C Hamano Fri, 2 Mar 2018 20:18:22 +0000 (12:18 -0800)

Merge branch 'nd/parseopt-completion' into next

Teach parse-options API an option to help the completion script,
and make use of the mechanism in command line completion.

* nd/parseopt-completion: (41 commits)
completion: use __gitcomp_builtin in _git_worktree
completion: use __gitcomp_builtin in _git_tag
completion: use __gitcomp_builtin in _git_status
completion: use __gitcomp_builtin in _git_show_branch
completion: use __gitcomp_builtin in _git_rm
completion: use __gitcomp_builtin in _git_revert
completion: use __gitcomp_builtin in _git_reset
completion: use __gitcomp_builtin in _git_replace
remote: force completing --mirror= instead of --mirror
completion: use __gitcomp_builtin in _git_remote
completion: use __gitcomp_builtin in _git_push
completion: use __gitcomp_builtin in _git_pull
completion: use __gitcomp_builtin in _git_notes
completion: use __gitcomp_builtin in _git_name_rev
completion: use __gitcomp_builtin in _git_mv
completion: use __gitcomp_builtin in _git_merge_base
completion: use __gitcomp_builtin in _git_merge
completion: use __gitcomp_builtin in _git_ls_remote
completion: use __gitcomp_builtin in _git_ls_files
completion: use __gitcomp_builtin in _git_init
...

Merge branch 'sg/travis-build-during-script-phase'... Junio C Hamano Fri, 2 Mar 2018 20:18:22 +0000 (12:18 -0800)

Merge branch 'sg/travis-build-during-script-phase' into next

Build the executable in 'script' phase in Travis CI integration, to
follow the established practice, rather than during 'before_script'
phase. This allows the CI categorize the failures better ('failed'
is project's fault, 'errored' is build environment's).

* sg/travis-build-during-script-phase:
travis-ci: build Git during the 'script' phase

Merge branch 'jh/status-no-ahead-behind' into nextJunio C Hamano Fri, 2 Mar 2018 20:18:20 +0000 (12:18 -0800)

Merge branch 'jh/status-no-ahead-behind' into next

"git status" can spend a lot of cycles to compute the relation
between the current branch and its upstream, which can now be
disabled with "--no-ahead-behind" option.

* jh/status-no-ahead-behind:
status: support --no-ahead-behind in long format
status: update short status to respect --no-ahead-behind
status: add --[no-]ahead-behind to status and commit for V2 format.
stat_tracking_info: return +1 when branches not equal

Merge branch 'ps/contains-id-error-message' into nextJunio C Hamano Fri, 2 Mar 2018 20:18:20 +0000 (12:18 -0800)

Merge branch 'ps/contains-id-error-message' into next

"git tag --contains no-such-commit" gave a full list of options
after giving an error message.

* ps/contains-id-error-message:
parse-options: remove the unused parse_opt_commits() function
ref-filter: mark a file-local symbol as static

parse-options: remove the unused parse_opt_commits... Ramsay Jones Fri, 2 Mar 2018 02:56:05 +0000 (02:56 +0000)

parse-options: remove the unused parse_opt_commits() function

Commit fcfba37337 ('ref-filter: make "--contains <id>" less chatty if
<id> is invalid', 2018-02-23), removed the last use of the callback
function parse_opt_commits(). Remove this function declaration and
definition, since it is now dead code.

Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

ref-filter: mark a file-local symbol as staticRamsay Jones Fri, 2 Mar 2018 02:54:02 +0000 (02:54 +0000)

ref-filter: mark a file-local symbol as static

Commit fcfba37337 ('ref-filter: make "--contains <id>" less chatty if
<id> is invalid', 2018-02-23) added the add_str_to_commit_list()
function, which causes sparse to issue a "... not declared. Should it
be static?" warning for that symbol.

Indeed, the function is only used in this one compilation unit. Mark
it static.

Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

userdiff: add built-in pattern for golangAlban Gruin Thu, 1 Mar 2018 11:19:07 +0000 (12:19 +0100)

userdiff: add built-in pattern for golang

This adds xfuncname and word_regex patterns for golang, a quite
popular programming language. It also includes test cases for the
xfuncname regex (t4018) and updated documentation.

The xfuncname regex finds functions, structs and interfaces. Although
the Go language prohibits the opening brace from being on its own
line, the regex does not makes it mandatory, to be able to match
`func` statements like this:

func foo(bar int,
baz int) {
}

This is covered by the test case t4018/golang-long-func.

The word_regex pattern finds identifiers, integers, floats, complex
numbers and operators, according to the go specification.

Signed-off-by: Alban Gruin <alban.gruin@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

commit: run git gc --auto just before the post-commit... Ævar Arnfjörð Bjarmason Wed, 28 Feb 2018 23:04:25 +0000 (23:04 +0000)

commit: run git gc --auto just before the post-commit hook

Change the behavior of git-commit back to what it was back in
d4bb43ee27 ("Invoke "git gc --auto" from commit, merge, am and
rebase.", 2007-09-05) when it was git-commit.sh.

Shortly afterwards in f5bbc3225c ("Port git commit to C.", 2007-11-08)
when it was ported to C, the "git gc --auto" invocation went away.

Since that unintended regression, git gc --auto only ran for git-am,
git-merge, git-fetch, and git-receive-pack. It was possible to
write a script that would "git commit" a lot of data locally, and gc
would never run.

One such repository that was locally committing generated zone file
changes had grown to a size of ~60GB before a daily cronjob was added
to "git gc", bringing it down to less than 1GB. This will make such
cases work without intervention.

I think fixing such pathological cases where the repository will grow
forever is a worthwhile trade-off for spending a couple of
milliseconds calling "git gc --auto" (in the common cases where it
doesn't do anything).

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sync with 'master'Junio C Hamano Wed, 28 Feb 2018 22:56:55 +0000 (14:56 -0800)

Sync with 'master'

Sixth batch for 2.17Junio C Hamano Wed, 28 Feb 2018 21:39:24 +0000 (13:39 -0800)

Sixth batch for 2.17

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'jk/push-options-via-transport-fix'Junio C Hamano Wed, 28 Feb 2018 21:37:58 +0000 (13:37 -0800)

Merge branch 'jk/push-options-via-transport-fix'

"git push" over http transport did not unquote the push-options
correctly.

* jk/push-options-via-transport-fix:
remote-curl: unquote incoming push-options
t5545: factor out http repository setup

Merge branch 'tz/do-not-clean-spec-file'Junio C Hamano Wed, 28 Feb 2018 21:37:58 +0000 (13:37 -0800)

Merge branch 'tz/do-not-clean-spec-file'

We no longer create any *.spec file, so "make clean" should not
remove it.

* tz/do-not-clean-spec-file:
Makefile: remove *.spec from clean target

Merge branch 'tg/worktree-create-tracking'Junio C Hamano Wed, 28 Feb 2018 21:37:56 +0000 (13:37 -0800)

Merge branch 'tg/worktree-create-tracking'

Hotfix for a recent topic.

* tg/worktree-create-tracking:
git-worktree.txt: fix indentation of example and text of 'add' command
git-worktree.txt: fix missing ")" typo

Merge branch 'gs/test-unset-xdg-cache-home'Junio C Hamano Wed, 28 Feb 2018 21:37:56 +0000 (13:37 -0800)

Merge branch 'gs/test-unset-xdg-cache-home'

Test update.

* gs/test-unset-xdg-cache-home:
test-lib.sh: unset XDG_CACHE_HOME

Merge branch 'tk/apply-dev-null-verify-name-fix'Junio C Hamano Wed, 28 Feb 2018 21:37:55 +0000 (13:37 -0800)

Merge branch 'tk/apply-dev-null-verify-name-fix'

Many places in "git apply" knew that "/dev/null" that signals
"there is no such file on this side of the diff" can be followed by
whitespace and garbage when parsing a patch, except for one, which
made an otherwise valid patch (e.g. ones from subversion) rejected.

* tk/apply-dev-null-verify-name-fix:
apply: handle Subversion diffs with /dev/null gracefully
apply: demonstrate a problem applying svn diffs

Merge branch 'sb/status-doc-fix'Junio C Hamano Wed, 28 Feb 2018 21:37:54 +0000 (13:37 -0800)

Merge branch 'sb/status-doc-fix'

Docfix.

* sb/status-doc-fix:
Documentation/git-status: clarify status table for porcelain mode

Merge branch 'es/worktree-add-post-checkout-hook'Junio C Hamano Wed, 28 Feb 2018 21:37:53 +0000 (13:37 -0800)

Merge branch 'es/worktree-add-post-checkout-hook'

"git worktree add" learned to run the post-checkout hook, just like
"git clone" runs it upon the initial checkout.

* es/worktree-add-post-checkout-hook:
worktree: add: fix 'post-checkout' not knowing new worktree location

Merge branch 'nd/am-quit'Junio C Hamano Wed, 28 Feb 2018 21:37:52 +0000 (13:37 -0800)

Merge branch 'nd/am-quit'

"git am" has learned the "--quit" option, in addition to the existing
"--abort" option; having the pair mirrors a few other commands like
"rebase" and "cherry-pick".

* nd/am-quit:
am: support --quit

untracked cache: use git_env_bool() not getenv() for... Junio C Hamano Wed, 28 Feb 2018 21:21:09 +0000 (13:21 -0800)

untracked cache: use git_env_bool() not getenv() for customization

GIT_DISABLE_UNTRACKED_CACHE and GIT_TEST_UNTRACKED_CACHE are only
sensed for their presense by using getenv(); use git_env_bool()
instead so that GIT_DISABLE_UNTRACKED_CACHE=false would work as
naïvely expected.

Also rename GIT_TEST_UNTRACKED_CACHE to GIT_FORCE_UNTRACKED_CACHE
to express what it does more honestly. Forcing its use may be one
useful thing to do while testing the feature, but testing does not
have to be the only use of the knob.

While at it, avoid repeated calls to git_env_bool() by capturing the
return value from the first call in a static variable.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: do not roll back lockfile unnecessarilyMartin Ågren Wed, 28 Feb 2018 19:07:58 +0000 (20:07 +0100)

sequencer: do not roll back lockfile unnecessarily

If `commit_lock_file()` or `hold_lock_file_for_update()` fail, there is
no need to call `rollback_lock_file()` on the lockfile. It doesn't hurt
either, but it does make different callers in this file inconsistent,
which might be confusing.

While at it, remove a trailing '.' from a recurring error message.

Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

merge: always roll back lock in `checkout_fast_forward()`Martin Ågren Wed, 28 Feb 2018 19:07:57 +0000 (20:07 +0100)

merge: always roll back lock in `checkout_fast_forward()`

This function originated in builtin/merge.c. It was moved to merge.c in
commit db699a8a1f (Move try_merge_command and checkout_fast_forward to
libgit.a, 2012-10-26), but was used from sequencer.c even before that.

If a problem occurs, the function returns without rolling back the
lockfile. Teach it to do so.

Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

merge-recursive: always roll back lock in `merge_recurs... Martin Ågren Wed, 28 Feb 2018 19:07:56 +0000 (20:07 +0100)

merge-recursive: always roll back lock in `merge_recursive_generic()`

If we return early, or if `active_cache_changed` is false, we forget to
roll back the lockfile.

Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sync with masterJunio C Hamano Wed, 28 Feb 2018 00:17:30 +0000 (16:17 -0800)

Sync with master

* master:
Fifth batch for 2.17

diff: add --compact-summaryNguyễn Thái Ngọc Duy Sat, 24 Feb 2018 14:09:59 +0000 (21:09 +0700)

diff: add --compact-summary

Certain information is currently shown with --summary, but when used
in combination with --stat it's a bit hard to read since info of the
same file is in two places (--stat and --summary).

On top of that, commits that add or remove files double the number of
display lines, which could be a lot if you add or remove a lot of
files.

--compact-summary embeds most of --summary back in --stat in the
little space between the file name part and the graph line, e.g. with
commit 0433d533f1:

Documentation/merge-config.txt | 4 +
builtin/merge.c | 2 +
...-pull-verify-signatures.sh (new +x) | 81 ++++++++++++++
t/t7612-merge-verify-signatures.sh | 45 ++++++++
4 files changed, 132 insertions(+)

It helps both condensing information and saving some text
space. What's new in diffstat is:

- A new 0644 file is shown as (new)
- A new 0755 file is shown as (new +x)
- A new symlink is shown as (new +l)
- A deleted file is shown as (gone)
- A mode change adding executable bit is shown as (mode +x)
- A mode change removing it is shown as (mode -x)

Note that --compact-summary does not contain all the information
--summary provides. Rewrite percentage is not shown but it could be
added later, like R50% or C20%.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

revision.c: reduce object database queriesDerrick Stolee Sun, 25 Feb 2018 01:34:56 +0000 (20:34 -0500)

revision.c: reduce object database queries

In mark_parents_uninteresting(), we check for the existence of an
object file to see if we should treat a commit as parsed. The result
is to set the "parsed" bit on the commit.

Modify the condition to only check has_object_file() if the result
would change the parsed bit.

When a local branch is different from its upstream ref, "git status"
will compute ahead/behind counts. This uses paint_down_to_common()
and hits mark_parents_uninteresting(). On a copy of the Linux repo
with a local instance of "master" behind the remote branch
"origin/master" by ~60,000 commits, we find the performance of
"git status" went from 1.42 seconds to 1.32 seconds, for a relative
difference of -7.0%.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

perf: use GIT_PERF_REPEAT_COUNT=3 by default even witho... René Scharfe Sun, 25 Feb 2018 13:18:05 +0000 (14:18 +0100)

perf: use GIT_PERF_REPEAT_COUNT=3 by default even without config file

9ba95ed23c (perf/run: update get_var_from_env_or_config() for
subsections) stopped setting a default value for GIT_PERF_REPEAT_COUNT
if no perf config file is present, because get_var_from_env_or_config
returns early in that case.

Fix it by setting the default value after calling this function. Its
fifth parameter is not used for any other variable, so remove the
associated code.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: always roll back lock in `do_recursive_merge()`Martin Ågren Tue, 27 Feb 2018 21:30:10 +0000 (22:30 +0100)

sequencer: always roll back lock in `do_recursive_merge()`

If we return early, we forget to roll back the lockfile. Do so.

Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: make lockfiles non-staticMartin Ågren Tue, 27 Feb 2018 21:30:09 +0000 (22:30 +0100)

sequencer: make lockfiles non-static

After 076aa2cbd (tempfile: auto-allocate tempfiles on heap, 2017-09-05),
we can have lockfiles on the stack.

One of these functions fails to always roll back the lock. That will be
fixed in the next commit.

Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sha1_name: fix uninitialized memory errorsDerrick Stolee Tue, 27 Feb 2018 11:47:04 +0000 (06:47 -0500)

sha1_name: fix uninitialized memory errors

During abbreviation checks, we navigate to the position within a
pack-index that an OID would be inserted and check surrounding OIDs
for the maximum matching prefix. This position may be beyond the
last position, because the given OID is lexicographically larger
than every OID in the pack. Then nth_packed_object_oid() does not
initialize "oid".

Use the return value of nth_packed_object_oid() to prevent these
errors.

Also the comment about checking near-by objects miscounts the
neighbours. If we have a hit at "first", we check "first-1" and
"first+1" to make sure we have sufficiently long abbreviation not to
match either. If we do not have a hit, "first" is the smallest
among the objects that are larger than what we want to name, so we
check that and "first-1" to make sure we have sufficiently long
abbreviation not to match either. In either case, we only check up
to two near-by objects.

Reported-by: Christian Couder <christian.couder@gmail.com>
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

docs/pretty-formats: fix typo '% <(<N>)' -> '%<|(<N>)'Mårten Kongstad Tue, 27 Feb 2018 20:17:44 +0000 (21:17 +0100)

docs/pretty-formats: fix typo '% <(<N>)' -> '%<|(<N>)'

Remove erroneous space between % and < in '% <(<N>)'.

Signed-off-by: Mårten Kongstad <marten.kongstad@gmail.com>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

merge-recursive: ensure we write updates for directory... Elijah Newren Wed, 14 Feb 2018 18:52:06 +0000 (10:52 -0800)

merge-recursive: ensure we write updates for directory-renamed file

When a file is present in HEAD before the merge and the other side of the
merge does not modify that file, we try to avoid re-writing the file and
making it stat-dirty. However, when a file is present in HEAD before the
merge and was in a directory that was renamed by the other side of the
merge, we have to move the file to a new location and re-write it.
Update the code that checks whether we can skip the update to also work in
the presence of directory renames.

Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

merge-recursive: avoid spurious rename/rename conflict... Elijah Newren Wed, 14 Feb 2018 18:52:05 +0000 (10:52 -0800)

merge-recursive: avoid spurious rename/rename conflict from dir renames

If a file on one side of history was renamed, and merely modified on the
other side, then applying a directory rename to the modified side gives us
a rename/rename(1to2) conflict. We should only apply directory renames to
pairs representing either adds or renames.

Making this change means that a directory rename testcase that was
previously reported as a rename/delete conflict will now be reported as a
modify/delete conflict.

Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

directory rename detection: new testcases showcasing... Elijah Newren Wed, 14 Feb 2018 18:52:04 +0000 (10:52 -0800)

directory rename detection: new testcases showcasing a pair of bugs

Add a testcase showing spurious rename/rename(1to2) conflicts occurring
due to directory rename detection.

Also add a pair of testcases dealing with moving directory hierarchies
around that were suggested by Stefan Beller as "food for thought" during
his review of an earlier patch series, but which actually uncovered a
bug. Round things out with a test that is a cross between the two
testcases that showed existing bugs in order to make sure we aren't
merely addressing problems in isolation but in general.

Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

merge-recursive: fix remaining directory rename + dirty... Elijah Newren Wed, 14 Feb 2018 18:52:03 +0000 (10:52 -0800)

merge-recursive: fix remaining directory rename + dirty overwrite cases

Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

merge-recursive: fix overwriting dirty files involved... Elijah Newren Wed, 14 Feb 2018 18:52:02 +0000 (10:52 -0800)

merge-recursive: fix overwriting dirty files involved in renames

This fixes an issue that existed before my directory rename detection
patches that affects both normal renames and renames implied by
directory rename detection. Additional codepaths that only affect
overwriting of dirty files that are involved in directory rename
detection will be added in a subsequent commit.

Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

merge-recursive: avoid clobbering untracked files with... Elijah Newren Wed, 14 Feb 2018 18:52:01 +0000 (10:52 -0800)

merge-recursive: avoid clobbering untracked files with directory renames

Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

merge-recursive: apply necessary modifications for... Elijah Newren Wed, 14 Feb 2018 18:52:00 +0000 (10:52 -0800)

merge-recursive: apply necessary modifications for directory renames

This commit hooks together all the directory rename logic by making the
necessary changes to the rename struct, it's dst_entry, and the
diff_filepair under consideration.

Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

test_must_be_empty: make sure the file exists, not... Junio C Hamano Tue, 27 Feb 2018 21:27:29 +0000 (13:27 -0800)

test_must_be_empty: make sure the file exists, not just empty

The helper function test_must_be_empty is meant to make sure the
given file is empty, but its implementation is:

if test -s "$1"
then
... not empty, we detected a failure ...
fi

Surely, the file having non-zero size is a sign that the condition
"the file must be empty" is violated, but it misses the case where
the file does not even exist. It is an accident waiting to happen
with a buggy test like this:

git frotz 2>error-message &&
test_must_be_empty errro-message

that won't get caught until you deliberately break 'git frotz' and
notice why the test does not fail.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'ps/contains-id-error-message' into nextJunio C Hamano Tue, 27 Feb 2018 19:15:17 +0000 (11:15 -0800)

Merge branch 'ps/contains-id-error-message' into next

"git tag --contains no-such-commit" gave a full list of options
after giving an error message.

* ps/contains-id-error-message:
ref-filter: make "--contains <id>" less chatty if <id> is invalid

Merge branch 'bw/perl-timegm-timelocal-fix' into nextJunio C Hamano Tue, 27 Feb 2018 19:15:16 +0000 (11:15 -0800)

Merge branch 'bw/perl-timegm-timelocal-fix' into next

Y2k20 fix ;-) for our perl scripts.

* bw/perl-timegm-timelocal-fix:
perl: call timegm and timelocal with 4-digit year

Merge branch 'jk/strbuf-read-file-close-error' into... Junio C Hamano Tue, 27 Feb 2018 19:15:16 +0000 (11:15 -0800)

Merge branch 'jk/strbuf-read-file-close-error' into next

Code clean-up.

* jk/strbuf-read-file-close-error:
strbuf_read_file(): preserve errno across close() call

Merge branch 'bw/c-plus-plus' into nextJunio C Hamano Tue, 27 Feb 2018 19:15:15 +0000 (11:15 -0800)

Merge branch 'bw/c-plus-plus' into next

Avoid using identifiers that clash with C++ keywords. Even though
it is not a goal to compile Git with C++ compilers, changes like
this help use of code analysis tools that targets C++ on our
codebase.

* bw/c-plus-plus: (37 commits)
replace: rename 'new' variables
trailer: rename 'template' variables
tempfile: rename 'template' variables
wrapper: rename 'template' variables
environment: rename 'namespace' variables
diff: rename 'template' variables
environment: rename 'template' variables
init-db: rename 'template' variables
unpack-trees: rename 'new' variables
trailer: rename 'new' variables
submodule: rename 'new' variables
split-index: rename 'new' variables
remote: rename 'new' variables
ref-filter: rename 'new' variables
read-cache: rename 'new' variables
line-log: rename 'new' variables
imap-send: rename 'new' variables
http: rename 'new' variables
entry: rename 'new' variables
diffcore-delta: rename 'new' variables
...

Merge branch 'rs/strbuf-read-file-or-whine' into nextJunio C Hamano Tue, 27 Feb 2018 19:15:15 +0000 (11:15 -0800)

Merge branch 'rs/strbuf-read-file-or-whine' into next

Code clean-up.

* rs/strbuf-read-file-or-whine:
sequencer: factor out strbuf_read_file_or_whine()

Merge branch 'ms/non-ascii-ticks' into nextJunio C Hamano Tue, 27 Feb 2018 19:15:14 +0000 (11:15 -0800)

Merge branch 'ms/non-ascii-ticks' into next

Doc markup fix.

* ms/non-ascii-ticks:
Documentation/gitsubmodules.txt: avoid non-ASCII apostrophes

Merge branch 'jk/test-helper-v-output-fix' into nextJunio C Hamano Tue, 27 Feb 2018 19:15:13 +0000 (11:15 -0800)

Merge branch 'jk/test-helper-v-output-fix' into next

Test framework update.

* jk/test-helper-v-output-fix:
t: send verbose test-helper output to fd 4

Merge branch 'jk/cached-commit-buffer' into nextJunio C Hamano Tue, 27 Feb 2018 19:15:13 +0000 (11:15 -0800)

Merge branch 'jk/cached-commit-buffer' into next

Code clean-up.

* jk/cached-commit-buffer:
revision: drop --show-all option
commit: drop uses of get_cached_commit_buffer()

Merge branch 'bw/doc-submodule-recurse-config-with... Junio C Hamano Tue, 27 Feb 2018 19:15:13 +0000 (11:15 -0800)

Merge branch 'bw/doc-submodule-recurse-config-with-clone' into next

Doc update.

* bw/doc-submodule-recurse-config-with-clone:
submodule: indicate that 'submodule.recurse' doesn't apply to clone

Merge branch 'jc/allow-ff-merging-kept-tags' into nextJunio C Hamano Tue, 27 Feb 2018 19:15:12 +0000 (11:15 -0800)

Merge branch 'jc/allow-ff-merging-kept-tags' into next

Since Git 1.7.9, "git merge" defaulted to --no-ff (i.e. even when
the side branch being merged is a descendant of the current commit,
create a merge commit instead of fast-forwarding) when merging a
tag object. This was appropriate default for integrators who pull
signed tags from their downstream contributors, but caused an
unnecessary merges when used by downstream contributors who
habitually "catch up" their topic branches with tagged releases
from the upstream. Update "git merge" to default to --no-ff only
when merging a tag object that does *not* sit at its usual place in
refs/tags/ hierarchy, and allow fast-forwarding otherwise, to
mitigate the problem.

* jc/allow-ff-merging-kept-tags:
merge: allow fast-forward when merging a tracked tag

Merge branch 'ab/simplify-perl-makefile' into nextJunio C Hamano Tue, 27 Feb 2018 19:15:12 +0000 (11:15 -0800)

Merge branch 'ab/simplify-perl-makefile' into next

Hotfix for a topic already in 'master'.

* ab/simplify-perl-makefile:
Makefile: generate Git(3pm) as dependency of the 'doc' and 'man' targets

Merge branch 'pw/add-p-single' into nextJunio C Hamano Tue, 27 Feb 2018 19:15:11 +0000 (11:15 -0800)

Merge branch 'pw/add-p-single' into next

"git add -p" used to offer "/" (look for a matching hunk) as a
choice, even there was only one hunk, which has been corrected.
Also the single-key help is now given only for keys that are
enabled (e.g. help for '/' won't be shown when there is only one
hunk).

* pw/add-p-single:
add -p: improve error messages
add -p: only bind search key if there's more than one hunk
add -p: only display help for active keys

Merge branch 'sg/t6300-modernize' into nextJunio C Hamano Tue, 27 Feb 2018 19:15:11 +0000 (11:15 -0800)

Merge branch 'sg/t6300-modernize' into next

Test update.

* sg/t6300-modernize:
t6300-for-each-ref: fix "more than one quoting style" tests

Merge branch 'sb/color-h-cleanup' into nextJunio C Hamano Tue, 27 Feb 2018 19:15:10 +0000 (11:15 -0800)

Merge branch 'sb/color-h-cleanup' into next

Devdoc update.

* sb/color-h-cleanup:
color.h: document and modernize header

Merge branch 'nd/rebase-show-current-patch' into nextJunio C Hamano Tue, 27 Feb 2018 19:15:10 +0000 (11:15 -0800)

Merge branch 'nd/rebase-show-current-patch' into next

The new "--show-current-patch" option gives an end-user facing way
to get the diff being applied when "git rebase" (and "git am")
stops with a conflict.

* nd/rebase-show-current-patch:
rebase: introduce and use pseudo-ref REBASE_HEAD
rebase: add --show-current-patch
am: add --show-current-patch

Merge branch 'xz/send-email-batch-size' into nextJunio C Hamano Tue, 27 Feb 2018 19:15:10 +0000 (11:15 -0800)

Merge branch 'xz/send-email-batch-size' into next

"git send-email" learned to complain when the batch-size option is
not defined when the relogin-delay option is, since these two are
mutually required.

* xz/send-email-batch-size:
send-email: error out when relogin delay is missing

Merge branch 'ab/fetch-prune' into nextJunio C Hamano Tue, 27 Feb 2018 19:15:09 +0000 (11:15 -0800)

Merge branch 'ab/fetch-prune' into next

Clarify how configured fetch refspecs interact with the "--prune"
option of "git fetch", and also add a handy short-hand for getting
rid of stale tags that are locally held.

* ab/fetch-prune:
fetch: make the --prune-tags work with <url>
fetch: add a --prune-tags option and fetch.pruneTags config
fetch tests: add scaffolding for the new fetch.pruneTags
git-fetch & config doc: link to the new PRUNING section
git remote doc: correct dangerous lies about what prune does
git fetch doc: add a new section to explain the ins & outs of pruning
fetch tests: fetch <url> <spec> as well as fetch [<remote>]
fetch tests: expand case/esac for later change
fetch tests: double quote a variable for interpolation
fetch tests: test --prune and refspec interaction
fetch tests: add a tag to be deleted to the pruning tests
fetch tests: re-arrange arguments for future readability
fetch tests: refactor in preparation for testing tag pruning
remote: add a macro for "refs/tags/*:refs/tags/*"
fetch: stop accessing "remote" variable indirectly
fetch: trivially refactor assignment to ref_nr
fetch: don't redundantly NULL something calloc() gave us

Merge branch 'sm/mv-dry-run-update' into nextJunio C Hamano Tue, 27 Feb 2018 19:15:08 +0000 (11:15 -0800)

Merge branch 'sm/mv-dry-run-update' into next

Code clean-up.

* sm/mv-dry-run-update:
mv: remove unneeded 'if (!show_only)'
t7001: add test case for --dry-run

Merge branch 'nm/tag-edit' into nextJunio C Hamano Tue, 27 Feb 2018 19:15:07 +0000 (11:15 -0800)

Merge branch 'nm/tag-edit' into next

"git tag" learned an explicit "--edit" option that allows the
message given via "-m" and "-F" to be further edited.

* nm/tag-edit:
tag: add --edit option

Fifth batch for 2.17Junio C Hamano Tue, 27 Feb 2018 18:35:18 +0000 (10:35 -0800)

Fifth batch for 2.17

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sync with maintJunio C Hamano Tue, 27 Feb 2018 18:53:19 +0000 (10:53 -0800)

Sync with maint

Merge branch 'ys/bisect-object-id-missing-conversion... Junio C Hamano Tue, 27 Feb 2018 18:43:55 +0000 (10:43 -0800)

Merge branch 'ys/bisect-object-id-missing-conversion-fix' into maint

Fix for a commented-out code to adjust it to a rather old API change.

* ys/bisect-object-id-missing-conversion-fix:
bisect: debug: convert struct object to object_id

Merge branch 'sb/submodule-update-reset-fix' into maintJunio C Hamano Tue, 27 Feb 2018 18:43:54 +0000 (10:43 -0800)

Merge branch 'sb/submodule-update-reset-fix' into maint

When resetting the working tree files recursively, the working tree
of submodules are now also reset to match.

* sb/submodule-update-reset-fix:
submodule: submodule_move_head omits old argument in forced case
unpack-trees: oneway_merge to update submodules
t/lib-submodule-update.sh: fix test ignoring ignored files in submodules
t/lib-submodule-update.sh: clarify test

Merge branch 'ab/commit-m-with-fixup' into maintJunio C Hamano Tue, 27 Feb 2018 18:43:54 +0000 (10:43 -0800)

Merge branch 'ab/commit-m-with-fixup' into maint

"git commit --fixup" did not allow "-m<message>" option to be used
at the same time; allow it to annotate resulting commit with more
text.

* ab/commit-m-with-fixup:
commit: add support for --fixup <commit> -m"<extra message>"
commit doc: document that -c, -C, -F and --fixup with -m error

Merge branch 'nd/ita-wt-renames-in-status' into maintJunio C Hamano Tue, 27 Feb 2018 18:39:34 +0000 (10:39 -0800)

Merge branch 'nd/ita-wt-renames-in-status' into maint

"git status" after moving a path in the working tree (hence making
it appear "removed") and then adding with the -N option (hence
making that appear "added") detected it as a rename, but did not
report the old and new pathnames correctly.

* nd/ita-wt-renames-in-status:
wt-status.c: handle worktree renames
wt-status.c: rename rename-related fields in wt_status_change_data
wt-status.c: catch unhandled diff status codes
wt-status.c: coding style fix
Use DIFF_DETECT_RENAME for detect_rename assignments
t2203: test status output with porcelain v2 format

Merge branch 'jt/binsearch-with-fanout'Junio C Hamano Tue, 27 Feb 2018 18:34:03 +0000 (10:34 -0800)

Merge branch 'jt/binsearch-with-fanout'

Refactor the code to binary search starting from a fan-out table
(which is how the packfile is indexed with object names) into a
reusable helper.

* jt/binsearch-with-fanout:
packfile: refactor hash search with fanout table
packfile: remove GIT_DEBUG_LOOKUP log statements

Merge branch 'rd/typofix'Junio C Hamano Tue, 27 Feb 2018 18:34:03 +0000 (10:34 -0800)

Merge branch 'rd/typofix'

Typofix.

* rd/typofix:
Correct mispellings of ".gitmodule" to ".gitmodules"
t/: correct obvious typo "detahced"

Merge branch 'jk/test-hashmap-updates'Junio C Hamano Tue, 27 Feb 2018 18:34:02 +0000 (10:34 -0800)

Merge branch 'jk/test-hashmap-updates'

Code clean-up.

* jk/test-hashmap-updates:
test-hashmap: use "unsigned int" for hash storage
test-hashmap: simplify alloc_test_entry
test-hashmap: use strbuf_getline rather than fgets
test-hashmap: use xsnprintf rather than snprintf
test-hashmap: check allocation computation for overflow
test-hashmap: use ALLOC_ARRAY rather than bare malloc

Merge branch 'jk/sq-dequote-on-bogus-input'Junio C Hamano Tue, 27 Feb 2018 18:34:02 +0000 (10:34 -0800)

Merge branch 'jk/sq-dequote-on-bogus-input'

Code to unquote single-quoted string (used in the parser for
configuration files, etc.) did not diagnose bogus input correctly
and produced bogus results instead.

* jk/sq-dequote-on-bogus-input:
sq_dequote: fix extra consumption of source string

Merge branch 'bp/fsmonitor'Junio C Hamano Tue, 27 Feb 2018 18:34:01 +0000 (10:34 -0800)

Merge branch 'bp/fsmonitor'

Doc update for a recently added feature.

* bp/fsmonitor:
fsmonitor: update documentation to remove reference to invalid config settings

Merge branch 'bc/doc-interpret-trailers-grammofix'Junio C Hamano Tue, 27 Feb 2018 18:34:00 +0000 (10:34 -0800)

Merge branch 'bc/doc-interpret-trailers-grammofix'

Docfix.

* bc/doc-interpret-trailers-grammofix:
docs/interpret-trailers: fix agreement error

Merge branch 'as/ll-i18n'Junio C Hamano Tue, 27 Feb 2018 18:33:58 +0000 (10:33 -0800)

Merge branch 'as/ll-i18n'

Some messages in low level start-up codepath have been i18n-ized.

* as/ll-i18n:
Mark messages for translations

Merge branch 'sg/doc-test-must-fail-args'Junio C Hamano Tue, 27 Feb 2018 18:33:58 +0000 (10:33 -0800)

Merge branch 'sg/doc-test-must-fail-args'

Devdoc update.

* sg/doc-test-must-fail-args:
t: document 'test_must_fail ok=<signal-name>'

Merge branch 'sb/describe-blob'Junio C Hamano Tue, 27 Feb 2018 18:33:57 +0000 (10:33 -0800)

Merge branch 'sb/describe-blob'

"git describe $garbage" stopped giving any errors when the garbage
happens to be a string with 40 hexadecimal letters.

* sb/describe-blob:
describe: confirm that blobs actually exist

Merge branch 'rs/check-ignore-multi'Junio C Hamano Tue, 27 Feb 2018 18:33:56 +0000 (10:33 -0800)

Merge branch 'rs/check-ignore-multi'

"git check-ignore" with multiple paths got confused when one is a
file and the other is a directory, which has been fixed.

* rs/check-ignore-multi:
check-ignore: fix mix of directories and other file types

Merge branch 'rj/sparse-updates'Junio C Hamano Tue, 27 Feb 2018 18:33:55 +0000 (10:33 -0800)

Merge branch 'rj/sparse-updates'

Devtool update.

* rj/sparse-updates:
Makefile: suppress a sparse warning for pack-revindex.c
config.mak.uname: remove SPARSE_FLAGS setting for cygwin

Merge branch 'jk/t0002-simplify'Junio C Hamano Tue, 27 Feb 2018 18:33:55 +0000 (10:33 -0800)

Merge branch 'jk/t0002-simplify'

Code cleanup.

* jk/t0002-simplify:
t0002: simplify error checking

Merge branch 'js/packet-read-line-check-null'Junio C Hamano Tue, 27 Feb 2018 18:33:54 +0000 (10:33 -0800)

Merge branch 'js/packet-read-line-check-null'

Some low level protocol codepath could crash when they get an
unexpected flush packet, which is now fixed.

* js/packet-read-line-check-null:
always check for NULL return from packet_read_line()
correct error messages for NULL packet_read_line()

Merge branch 'js/fix-merge-arg-quoting-in-rebase-p'Junio C Hamano Tue, 27 Feb 2018 18:33:54 +0000 (10:33 -0800)

Merge branch 'js/fix-merge-arg-quoting-in-rebase-p'

"git rebase -p" mangled log messages of a merge commit, which is
now fixed.

* js/fix-merge-arg-quoting-in-rebase-p:
rebase -p: fix incorrect commit message when calling `git merge`.

Merge branch 'jk/gettext-poison'Junio C Hamano Tue, 27 Feb 2018 18:33:54 +0000 (10:33 -0800)

Merge branch 'jk/gettext-poison'

Test updates.

* jk/gettext-poison:
git-sh-i18n: check GETTEXT_POISON before USE_GETTEXT_SCHEME
t0205: drop redundant test

Merge branch 'jk/doc-do-not-write-extern'Junio C Hamano Tue, 27 Feb 2018 18:33:53 +0000 (10:33 -0800)

Merge branch 'jk/doc-do-not-write-extern'

Devdoc update.

* jk/doc-do-not-write-extern:
CodingGuidelines: mention "static" and "extern"

Merge branch 'bp/name-hash-dirname-fix'Junio C Hamano Tue, 27 Feb 2018 18:33:53 +0000 (10:33 -0800)

Merge branch 'bp/name-hash-dirname-fix'

"git add" files in the same directory, but spelling the directory
path in different cases on case insensitive filesystem, corrupted
the name hash data structure and led to unexpected results. This
has been corrected.

* bp/name-hash-dirname-fix:
name-hash: properly fold directory names in adjust_dirname_case()

Merge branch 'jc/blame-missing-path'Junio C Hamano Tue, 27 Feb 2018 18:33:50 +0000 (10:33 -0800)

Merge branch 'jc/blame-missing-path'

"git blame HEAD COPYING" in a bare repository failed to run, while
"git blame HEAD -- COPYING" run just fine. This has been corrected.

* jc/blame-missing-path:
blame: tighten command line parser