gitweb.git
t7505: style fixesPhillip Wood Wed, 24 Jan 2018 12:34:20 +0000 (12:34 +0000)

t7505: style fixes

Fix the indentation and style of the hook script in preparation for
further changes.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

mailinfo: avoid segfault when can't open filesJuan F. Codagnone Wed, 24 Jan 2018 16:56:47 +0000 (13:56 -0300)

mailinfo: avoid segfault when can't open files

If <msg> or <patch> files can't be opened, then mailinfo() returns an
error before it even initializes mi->p_hdr_data or mi->s_hdr_data.
When cmd_mailinfo() then calls clear_mailinfo(), we dereference the
NULL pointers trying to free their contents.

Signed-off-by: Juan F. Codagnone <jcodagnone@gmail.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

read-cache: don't write index twice if we can't write... Nguyễn Thái Ngọc Duy Wed, 24 Jan 2018 09:38:29 +0000 (16:38 +0700)

read-cache: don't write index twice if we can't write shared index

In a0a967568e ("update-index --split-index: do not split if $GIT_DIR is
read only", 2014-06-13), we tried to make sure we can still write an
index, even if the shared index can not be written.

We did so by just calling 'do_write_locked_index()' just before
'write_shared_index()'. 'do_write_locked_index()' always at least
closes the tempfile nowadays, and used to close or commit the lockfile
if COMMIT_LOCK or CLOSE_LOCK were given at the time this feature was
introduced. COMMIT_LOCK or CLOSE_LOCK is passed in by most callers of
'write_locked_index()'.

After calling 'write_shared_index()', we call 'write_split_index()',
which calls 'do_write_locked_index()' again, which then tries to use the
closed lockfile again, but in fact fails to do so as it's already
closed. This eventually leads to a segfault.

Make sure to write the main index only once.

[nd: most of the commit message and investigation done by Thomas, I only
tweaked the solution a bit]

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

mru: Replace mru.[ch] with list.h implementationGargi Sharma Tue, 23 Jan 2018 23:46:51 +0000 (18:46 -0500)

mru: Replace mru.[ch] with list.h implementation

Replace the custom calls to mru.[ch] with calls to list.h. This patch is
the final step in removing the mru API completely and inlining the logic.
This patch leads to significant code reduction and the mru API hence, is
not a useful abstraction anymore.

Signed-off-by: Gargi Sharma <gs051095@gmail.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

First batch after 2.16Junio C Hamano Tue, 23 Jan 2018 21:21:10 +0000 (13:21 -0800)

First batch after 2.16

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

Merge branch 'nd/add-i-ignore-submodules'Junio C Hamano Tue, 23 Jan 2018 21:16:41 +0000 (13:16 -0800)

Merge branch 'nd/add-i-ignore-submodules'

"git add -p" was taught to ignore local changes to submodules as
they do not interfere with the partial addition of regular changes
anyway.

* nd/add-i-ignore-submodules:
add--interactive: ignore submodule changes except HEAD

Merge branch 'mm/send-email-fallback-to-local-mail... Junio C Hamano Tue, 23 Jan 2018 21:16:41 +0000 (13:16 -0800)

Merge branch 'mm/send-email-fallback-to-local-mail-address'

Instead of maintaining home-grown email address parsing code, ship
a copy of reasonably recent Mail::Address to be used as a fallback
in 'git send-email' when the platform lacks it.

* mm/send-email-fallback-to-local-mail-address:
send-email: add test for Linux's get_maintainer.pl
perl/Git: remove now useless email-address parsing code
send-email: add and use a local copy of Mail::Address

Merge branch 'ab/doc-cat-file-e-still-shows-errors'Junio C Hamano Tue, 23 Jan 2018 21:16:41 +0000 (13:16 -0800)

Merge branch 'ab/doc-cat-file-e-still-shows-errors'

Doc update.

* ab/doc-cat-file-e-still-shows-errors:
cat-file doc: document that -e will return some output

Merge branch 'as/read-tree-prefix-doc-fix'Junio C Hamano Tue, 23 Jan 2018 21:16:41 +0000 (13:16 -0800)

Merge branch 'as/read-tree-prefix-doc-fix'

Doc update.

* as/read-tree-prefix-doc-fix:
doc/read-tree: remove obsolete remark

Merge branch 'ys/bisect-object-id-missing-conversion... Junio C Hamano Tue, 23 Jan 2018 21:16:40 +0000 (13:16 -0800)

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

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 'tg/stash-with-pathspec-fix'Junio C Hamano Tue, 23 Jan 2018 21:16:39 +0000 (13:16 -0800)

Merge branch 'tg/stash-with-pathspec-fix'

"git stash -- <pathspec>" incorrectly blew away untracked files in
the directory that matched the pathspec, which has been corrected.

* tg/stash-with-pathspec-fix:
stash: don't delete untracked files that match pathspec

Merge branch 'sb/submodule-update-reset-fix'Junio C Hamano Tue, 23 Jan 2018 21:16:39 +0000 (13:16 -0800)

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

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 'bw/oidmap-autoinit'Junio C Hamano Tue, 23 Jan 2018 21:16:39 +0000 (13:16 -0800)

Merge branch 'bw/oidmap-autoinit'

Code clean-up.

* bw/oidmap-autoinit:
oidmap: ensure map is initialized

Merge branch 'ab/commit-m-with-fixup'Junio C Hamano Tue, 23 Jan 2018 21:16:38 +0000 (13:16 -0800)

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

"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 'cc/codespeed'Junio C Hamano Tue, 23 Jan 2018 21:16:38 +0000 (13:16 -0800)

Merge branch 'cc/codespeed'

"perf" test output can be sent to codespeed server.

* cc/codespeed:
perf/run: read GIT_PERF_REPO_NAME from perf.repoName
perf/run: learn to send output to codespeed server
perf/run: learn about perf.codespeedOutput
perf/run: add conf_opts argument to get_var_from_env_or_config()
perf/aggregate: implement codespeed JSON output
perf/aggregate: refactor printing results
perf/aggregate: fix checking ENV{GIT_PERF_SUBSECTION}

Merge branch 'ab/perf-grep-threads'Junio C Hamano Tue, 23 Jan 2018 21:16:37 +0000 (13:16 -0800)

Merge branch 'ab/perf-grep-threads'

More perf tests for threaded grep

* ab/perf-grep-threads:
perf: amend the grep tests to test grep.threads

Merge branch 'sb/diff-blobfind-pickaxe'Junio C Hamano Tue, 23 Jan 2018 21:16:37 +0000 (13:16 -0800)

Merge branch 'sb/diff-blobfind-pickaxe'

"diff" family of commands learned "--find-object=<object-id>" option
to limit the findings to changes that involve the named object.

* sb/diff-blobfind-pickaxe:
diff: use HAS_MULTI_BITS instead of counting bits manually
diff: properly error out when combining multiple pickaxe options
diffcore: add a pickaxe option to find a specific blob
diff: introduce DIFF_PICKAXE_KINDS_MASK
diff: migrate diff_flags.pickaxe_ignore_case to a pickaxe_opts bit
diff.h: make pickaxe_opts an unsigned bit field

Merge branch 'jk/abort-clone-with-existing-dest'Junio C Hamano Tue, 23 Jan 2018 21:16:37 +0000 (13:16 -0800)

Merge branch 'jk/abort-clone-with-existing-dest'

"git clone $there $here" is allowed even when here directory exists
as long as it is an empty directory, but the command incorrectly
removed it upon a failure of the operation.

* jk/abort-clone-with-existing-dest:
clone: do not clean up directories we didn't create
clone: factor out dir_exists() helper
t5600: modernize style
t5600: fix outdated comment about unborn HEAD

Merge branch 'jc/merge-symlink-ours-theirs'Junio C Hamano Tue, 23 Jan 2018 21:16:37 +0000 (13:16 -0800)

Merge branch 'jc/merge-symlink-ours-theirs'

"git merge -Xours/-Xtheirs" learned to use our/their version when
resolving a conflicting updates to a symbolic link.

* jc/merge-symlink-ours-theirs:
merge: teach -Xours/-Xtheirs to symbolic link merge

Merge branch 'rs/lose-leak-pending'Junio C Hamano Tue, 23 Jan 2018 21:16:36 +0000 (13:16 -0800)

Merge branch 'rs/lose-leak-pending'

API clean-up around revision traversal.

* rs/lose-leak-pending:
commit: remove unused function clear_commit_marks_for_object_array()
revision: remove the unused flag leak_pending
checkout: avoid using the rev_info flag leak_pending
bundle: avoid using the rev_info flag leak_pending
bisect: avoid using the rev_info flag leak_pending
object: add clear_commit_marks_all()
ref-filter: use clear_commit_marks_many() in do_merge_filter()
commit: use clear_commit_marks_many() in remove_redundant()
commit: avoid allocation in clear_commit_marks_many()

Merge branch 'jm/svn-pushmergeinfo-fix'Junio C Hamano Tue, 23 Jan 2018 21:16:36 +0000 (13:16 -0800)

Merge branch 'jm/svn-pushmergeinfo-fix'

"git svn dcommit" did not take into account the fact that a
svn+ssh:// URL with a username@ (typically used for pushing) refers
to the same SVN repository without the username@ and failed when
svn.pushmergeinfo option is set.

* jm/svn-pushmergeinfo-fix:
git-svn: fix svn.pushmergeinfo handling of svn+ssh usernames.

Merge branch 'nd/ita-wt-renames-in-status'Junio C Hamano Tue, 23 Jan 2018 21:16:28 +0000 (13:16 -0800)

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

"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 'dk/describe-all-output-fix'Junio C Hamano Tue, 23 Jan 2018 21:16:28 +0000 (13:16 -0800)

Merge branch 'dk/describe-all-output-fix'

An old regression in "git describe --all $annotated_tag^0" has been
fixed.

* dk/describe-all-output-fix:
describe: prepend "tags/" when describing tags with embedded name

fsck: fix leak when traversing treesEric Wong Sat, 20 Jan 2018 07:43:51 +0000 (07:43 +0000)

fsck: fix leak when traversing trees

While fsck_walk/fsck_walk_tree/parse_tree populates "struct tree"
idempotently, it is still up to the fsck_walk caller to call
free_tree_buffer.

Fixes: ad2db4030e42890e ("fsck: remove redundant parse_tree() invocation")

Signed-off-by: Eric Wong <e@80x24.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Use MOVE_ARRAYSZEDER Gábor Mon, 22 Jan 2018 17:50:09 +0000 (18:50 +0100)

Use MOVE_ARRAY

Use the helper macro MOVE_ARRAY to move arrays. This is shorter and
safer, as it automatically infers the size of elements.

Patch generated by Coccinelle and contrib/coccinelle/array.cocci in
Travis CI's static analysis build job.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sync with v2.16.1Junio C Hamano Mon, 22 Jan 2018 05:14:54 +0000 (21:14 -0800)

Sync with v2.16.1

* maint:
Git 2.16.1
t5601-clone: test case-conflicting files on case-insensitive filesystem
repository: pre-initialize hash algo pointer

Git 2.16.1 v2.16.1Junio C Hamano Mon, 22 Jan 2018 05:14:25 +0000 (21:14 -0800)

Git 2.16.1

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

Start 2.17 cycleJunio C Hamano Mon, 22 Jan 2018 05:14:09 +0000 (21:14 -0800)

Start 2.17 cycle

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

Merge branch 'bc/hash-algo' into maintJunio C Hamano Mon, 22 Jan 2018 05:12:37 +0000 (21:12 -0800)

Merge branch 'bc/hash-algo' into maint

* bc/hash-algo:
t5601-clone: test case-conflicting files on case-insensitive filesystem
repository: pre-initialize hash algo pointer

t5601-clone: test case-conflicting files on case-insens... Eric Sunshine Sun, 21 Jan 2018 08:07:28 +0000 (03:07 -0500)

t5601-clone: test case-conflicting files on case-insensitive filesystem

A recently introduced regression caused a segfault at clone time on
case-insensitive filesystems when filenames differing only in case are
present. This bug has already been fixed (repository: pre-initialize
hash algo pointer, 2018-01-18), but it's not the first time similar
problems have arisen. Therefore, introduce a test to catch this case and
protect against future regressions.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

merge-recursive: add explanation for src_entry and... Elijah Newren Fri, 5 Jan 2018 20:20:01 +0000 (12:20 -0800)

merge-recursive: add explanation for src_entry and dst_entry

If I have to walk through the debugger and inspect the values found in
here in order to figure out their meaning, despite having known these
things inside and out some years back, then they probably need a comment
for the casual reader to explain their purpose.

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 logic ordering issueElijah Newren Fri, 5 Jan 2018 20:20:00 +0000 (12:20 -0800)

merge-recursive: fix logic ordering issue

merge_trees() did a variety of work, including:
* Calling get_unmerged() to get unmerged entries
* Calling record_df_conflict_files() with all unmerged entries to
do some work to ensure we could handle D/F conflicts correctly
* Calling get_renames() to check for renames.

An easily overlooked issue is that get_renames() can create more
unmerged entries and add them to the list, which have the possibility of
being involved in D/F conflicts. So the call to
record_df_conflict_files() should really be moved after all the rename
detection. I didn't come up with any testcases demonstrating any bugs
with the old ordering, but I suspect there were some for both normal
renames and for directory renames. Fix the ordering.

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

Tighten and correct a few testcases for merging and... Elijah Newren Fri, 5 Jan 2018 20:19:59 +0000 (12:19 -0800)

Tighten and correct a few testcases for merging and cherry-picking

t3501 had a testcase originally added in 05f2dfb965 (cherry-pick:
demonstrate a segmentation fault, 2016-11-26) to ensure cherry-pick
wouldn't segfault when working with a dirty file involved in a rename.
While the segfault was fixed, there was another problem this test
demonstrated: namely, that git would overwrite a dirty file involved in a
rename. Further, the test encoded a "successful merge" and overwriting of
this file as correct behavior. Modify the test so that it would still
catch the segfault, but to require the correct behavior. Mark it as
test_expect_failure for now too, since this second bug is not yet fixed.

t7607 had a test added in 30fd3a5425 (merge overwrites unstaged changes in
renamed file, 2012-04-15) specific to looking for a merge overwriting a
dirty file involved in a rename, but it too actually encoded what I would
term incorrect behavior: it expected the merge to succeed. Fix that, and
add a few more checks to make sure that the merge really does produce the
expected results.

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

repository: pre-initialize hash algo pointerbrian m. carlson Fri, 19 Jan 2018 04:18:25 +0000 (04:18 +0000)

repository: pre-initialize hash algo pointer

There are various git subcommands (among them, clone) which don't set up
the repository (that is, they lack RUN_SETUP or RUN_SETUP_GENTLY) but
end up needing to have information about the hash algorithm in use.
Because the hash algorithm is part of struct repository and it's only
initialized in repository setup, we can end up dereferencing a NULL
pointer in some cases if we call one of these subcommands and look up
the empty blob or empty tree values.

A "git clone" of a project that has two paths that differ only in
case suffers from this if it is run on a case insensitive platform.
When the command attempts to check out one of these two paths after
checking out the other one, the checkout codepath needs to see if
the version that is already on the filesystem (which should not
happen if the FS were case sensitive) is dirty, and it needs to
exercise the hashing code at that point.

In the future, we can add a command line option for this or read it
from the configuration, but until we're ready to expose that
functionality to the user, simply initialize the repository
structure to use the current hash algorithm, SHA-1.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

files_initial_transaction_commit(): only unlock if... Mathias Rav Thu, 18 Jan 2018 13:38:41 +0000 (14:38 +0100)

files_initial_transaction_commit(): only unlock if locked

Running git clone --single-branch --mirror -b TAGNAME previously
triggered the following error message:

fatal: multiple updates for ref 'refs/tags/TAGNAME' not allowed.

This error condition is handled in files_initial_transaction_commit().

42c7f7ff9 ("commit_packed_refs(): remove call to `packed_refs_unlock()`", 2017-06-23)
introduced incorrect unlocking in the error path of this function,
which changes the error message to

fatal: BUG: packed_refs_unlock() called when not locked

Move the call to packed_refs_unlock() above the "cleanup:" label
since the unlocking should only be done in the last error path.

Signed-off-by: Mathias Rav <m@git.strova.dk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sha1_file: improve sha1_file_name() perfsChristian Couder Thu, 18 Jan 2018 10:08:54 +0000 (11:08 +0100)

sha1_file: improve sha1_file_name() perfs

As sha1_file_name() could be performance sensitive, let's
make it faster by using strbuf_addstr() and strbuf_addc()
instead of strbuf_addf().

Helped-by: Derrick Stolee <stolee@gmail.com>
Helped-by: Jeff Hostetler <git@jeffhostetler.com>
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

http: support omitting data from tracesJonathan Tan Fri, 19 Jan 2018 00:28:02 +0000 (16:28 -0800)

http: support omitting data from traces

GIT_TRACE_CURL provides a way to debug what is being sent and received
over HTTP, with automatic redaction of sensitive information. But it
also logs data transmissions, which significantly increases the log file
size, sometimes unnecessarily. Add an option "GIT_TRACE_CURL_NO_DATA" to
allow the user to omit such data transmissions.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

http: support cookie redaction when tracingJonathan Tan Fri, 19 Jan 2018 00:28:01 +0000 (16:28 -0800)

http: support cookie redaction when tracing

When using GIT_TRACE_CURL, Git already redacts the "Authorization:" and
"Proxy-Authorization:" HTTP headers. Extend this redaction to a
user-specified list of cookies, specified through the
"GIT_REDACT_COOKIES" environment variable.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

cocci: use format keyword instead of a literal stringRené Scharfe Fri, 19 Jan 2018 17:05:59 +0000 (18:05 +0100)

cocci: use format keyword instead of a literal string

There's a rule in strbuf.cocci for converting trivial uses of
strbuf_addf() to strbuf_addstr() in order to simplify the code and
improve performance a bit. Coccinelle 1.0.0~rc19.deb-3 on Travis CI
lets the "%s" in that rule match format strings like "%d" as well for
some reason, though, leading to invalid proposed patches.

Use the "format" keyword to let Coccinelle parse the format string and
match the conversion specifier with a trivial regular expression
instead. This works fine with both Coccinelle 1.0.0~rc19.deb-3 and
1.0.4.deb-3+b3 (the current version on Debian testing).

Reported-by: SZEDER Gábor <szeder.dev@gmail.com>
Tested-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

packfile: use get_be64() for large offsetsDerrick Stolee Wed, 17 Jan 2018 19:08:23 +0000 (14:08 -0500)

packfile: use get_be64() for large offsets

The pack-index version 2 format uses two 4-byte integers in
network-byte order to represent one 8-byte value. The current
implementation has several code clones for stitching these integers
together.

Use get_be64() to create an 8-byte integer from two 4-byte integers
represented this way.

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

run-command.c: print new cwd in trace_run_command()Nguyễn Thái Ngọc Duy Thu, 18 Jan 2018 09:45:12 +0000 (16:45 +0700)

run-command.c: print new cwd in trace_run_command()

If a command sets a new env variable GIT_DIR=.git, we need more context
to know where that '.git' is related to.

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

run-command.c: print env vars in trace_run_command()Nguyễn Thái Ngọc Duy Thu, 18 Jan 2018 09:45:11 +0000 (16:45 +0700)

run-command.c: print env vars in trace_run_command()

Occasionally submodule code could execute new commands with GIT_DIR set
to some submodule. GIT_TRACE prints just the command line which makes it
hard to tell that it's not really executed on this repository.

Print the env delta (compared to parent environment) in this case.

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

run-command.c: print program 'git' when tracing git_cmd... Nguyễn Thái Ngọc Duy Thu, 18 Jan 2018 09:45:10 +0000 (16:45 +0700)

run-command.c: print program 'git' when tracing git_cmd mode

We normally print full command line, including the program and its
argument. When git_cmd is set, we have a special code path to run the
right "git" program and child_process.argv[0] will not contain the
program name anymore. As a result, we print just the command
arguments.

I thought it was a regression when the code was refactored and git_cmd
added, but apparently it's not. git_cmd mode was introduced before
tracing was added in 8852f5d704 (run_command(): respect GIT_TRACE -
2008-07-07) so it's more like an oversight in 8852f5d704.

Fix it, print the program name "git" in git_cmd mode. It's nice to have
now. But it will be more important later when we start to print env
variables too, in shell syntax. The lack of a program name would look
confusing then.

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

run-command.c: introduce trace_run_command()Nguyễn Thái Ngọc Duy Thu, 18 Jan 2018 09:45:09 +0000 (16:45 +0700)

run-command.c: introduce trace_run_command()

This is the same as the old code that uses trace_argv_printf() in
run-command.c. This function will be improved in later patches to
print more information from struct child_process.

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

travis: run tests with GIT_TEST_SPLIT_INDEXThomas Gummerer Sun, 7 Jan 2018 22:30:15 +0000 (22:30 +0000)

travis: run tests with GIT_TEST_SPLIT_INDEX

Split index mode only has a few dedicated tests, but as the index is
involved in nearly every git operation, this doesn't quite cover all the
ways repositories with split index can break. To use split index mode
throughout the test suite a GIT_TEST_SPLIT_INDEX environment variable
can be set, which makes git split the index at random and thus
excercises the functionality much more thoroughly.

As this is not turned on by default, it is not executed nearly as often
as the test suite is run, so occationally breakages slip through. Try
to counteract that by running the test suite with GIT_TEST_SPLIT_INDEX
mode turned on on travis.

To avoid using too many cycles on travis only run split index mode in
the linux-gcc target only. The Linux build was chosen over the Mac OS
builds because it tends to be much faster to complete.

The linux gcc build was chosen over the linux clang build because the
linux clang build is the fastest build, so it can serve as an early
indicator if something is broken and we want to avoid spending the extra
cycles of running the test suite twice for that.

Helped-by: Lars Schneider <larsxschneider@gmail.com>
Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

split-index: don't write cache tree with null oid entriesThomas Gummerer Sun, 7 Jan 2018 22:30:14 +0000 (22:30 +0000)

split-index: don't write cache tree with null oid entries

In a96d3cc3f6 ("cache-tree: reject entries with null sha1", 2017-04-21)
we made sure that broken cache entries do not get propagated to new
trees. Part of that was making sure not to re-use an existing cache
tree that includes a null oid.

It did so by dropping the cache tree in 'do_write_index()' if one of
the entries contains a null oid. In split index mode however, there
are two invocations to 'do_write_index()', one for the shared index
and one for the split index. The cache tree is only written once, to
the split index.

As we only loop through the elements that are effectively being
written by the current invocation, that may not include the entry with
a null oid in the split index (when it is already written to the
shared index), where we write the cache tree. Therefore in split
index mode we may still end up writing the cache tree, even though
there is an entry with a null oid in the index.

Fix this by checking for null oids in prepare_to_write_split_index,
where we loop the entries of the shared index as well as the entries for
the split index.

This fixes t7009 with GIT_TEST_SPLIT_INDEX. Also add a new test that's
more specifically showing the problem.

Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

read-cache: fix reading the shared index for other... Thomas Gummerer Sun, 7 Jan 2018 22:30:13 +0000 (22:30 +0000)

read-cache: fix reading the shared index for other repos

read_index_from() takes a path argument for the location of the index
file. For reading the shared index in split index mode however it just
ignores that path argument, and reads it from the gitdir of the current
repository.

This works as long as an index in the_repository is read. Once that
changes, such as when we read the index of a submodule, or of a
different working tree than the current one, the gitdir of
the_repository will no longer contain the appropriate shared index,
and git will fail to read it.

For example t3007-ls-files-recurse-submodules.sh was broken with
GIT_TEST_SPLIT_INDEX set in 188dce131f ("ls-files: use repository
object", 2017-06-22), and t7814-grep-recurse-submodules.sh was also
broken in a similar manner, probably by introducing struct repository
there, although I didn't track down the exact commit for that.

be489d02d2 ("revision.c: --indexed-objects add objects from all
worktrees", 2017-08-23) breaks with split index mode in a similar
manner, not erroring out when it can't read the index, but instead
carrying on with pruning, without taking the index of the worktree into
account.

Fix this by passing an additional gitdir parameter to read_index_from,
to indicate where it should look for and read the shared index from.

read_cache_from() defaults to using the gitdir of the_repository. As it
is mostly a convenience macro, having to pass get_git_dir() for every
call seems overkill, and if necessary users can have more control by
using read_index_from().

Helped-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 2.16 v2.16.0Junio C Hamano Wed, 17 Jan 2018 21:06:51 +0000 (13:06 -0800)

Git 2.16

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

worktree: say that "add" takes an arbitrary commit... Junio C Hamano Wed, 17 Jan 2018 18:32:32 +0000 (10:32 -0800)

worktree: say that "add" takes an arbitrary commit in short-help

c4738aed ("worktree: add can be created from any commit-ish",
2017-11-26) taught "git worktree add" to start a new worktree
with an arbitrary commit-ish checked out, not limited to a tip
of a branch.

"git worktree --help" was updated to describe this, but we forgot to
update "git worktree -h".

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

sha1_file: remove static strbuf from sha1_file_name()Christian Couder Wed, 17 Jan 2018 17:54:54 +0000 (18:54 +0100)

sha1_file: remove static strbuf from sha1_file_name()

Using a static buffer in sha1_file_name() is error prone
and the performance improvements it gives are not needed
in many of the callers.

So let's get rid of this static buffer and, if necessary
or helpful, let's use one in the caller.

Suggested-by: Jeff Hostetler <git@jeffhostetler.com>
Helped-by: Kevin Daudt <me@ikke.info>
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge tag 'l10n-2.16.0-rnd2' of git://github.com/git... Junio C Hamano Tue, 16 Jan 2018 22:49:58 +0000 (14:49 -0800)

Merge tag 'l10n-2.16.0-rnd2' of git://github.com/git-l10n/git-po

l10n for Git 2.16.0 round 2

* tag 'l10n-2.16.0-rnd2' of git://github.com/git-l10n/git-po: (24 commits)
l10n: de.po: translate 72 new messages
l10n: de.po: improve messages when a branch starts to track another ref
l10n: bg.po: Updated Bulgarian translation (3288t)
l10n: TEAMS: add zh_CN team members
l10n: zh_CN: for git v2.16.0 l10n round 2
l10n: sv.po: Update Swedish translation (3288t0f0u)
l10n: ru.po: update Russian translation
l10n: TEAMS: Add ko team members
l10n: ko.po: Update Korean translation
l10n: fr.po 2.16 round 2
l10n: es.po: Spanish translation 2.16.0 round 2
l10n: vi.po(3288t): Updated Vietnamese translation for v2.16.0 round 2
l10n: git.pot: v2.16.0 round 2 (8 new, 4 removed)
l10n: es.po: Update Spanish Translation v2.16.0
l10n: fr.po v2.16.0 round 1
l10n: bg.po: Updated Bulgarian translation (3284t)
l10n: sv.po: Update Swedish translation (3284t0f0u)
l10n: fr.po: "worktree list" mistranslated as prune
l10n: git.pot: v2.16.0 round 1 (64 new, 25 removed)
l10n: fixes to German translation
...

diff.c: flush stdout before printing rename warningsNguyễn Thái Ngọc Duy Tue, 16 Jan 2018 09:23:49 +0000 (16:23 +0700)

diff.c: flush stdout before printing rename warnings

The diff output is buffered in a FILE object and could still be
partially buffered when we print these warnings (directly to fd 2).
The output is messed up like this

worktree.c | 138 +-
worktree.h warning: inexact rename detection was skipped due to too many files.
| 12 +-
wrapper.c | 83 +-

It gets worse if the warning is printed after color codes for the graph
part are already printed. You'll get a warning in green or red.

Flush stdout first, so we can get something like this instead:

xdiff/xutils.c | 42 +-
xdiff/xutils.h | 4 +-
1033 files changed, 150824 insertions(+), 69395 deletions(-)
warning: inexact rename detection was skipped due to too many files.

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

hashmap.h: remove unused variableRandall S. Becker Sun, 14 Jan 2018 18:07:48 +0000 (13:07 -0500)

hashmap.h: remove unused variable

In 'hashmap_enable_item_counting()', item is assigned but never
used. This causes a warning on HP NonStop. As the variable is
never used, fix this by just removing it.

Signed-off-by: Randall S. Becker <rsbecker@nexbridge.com>
Helped-by: Thomas Gummerer <t.gummerer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

describe: use strbuf_add_unique_abbrev() for adding... René Scharfe Mon, 15 Jan 2018 17:10:32 +0000 (18:10 +0100)

describe: use strbuf_add_unique_abbrev() for adding short hashes

Call strbuf_add_unique_abbrev() to add an abbreviated hash to a strbuf
instead of taking a detour through find_unique_abbrev() and its static
buffer. This is shorter and a bit more efficient.

Patch generated by Coccinelle (and contrib/coccinelle/strbuf.cocci).

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

read-cache.c: move tempfile creation/cleanup out of... Nguyễn Thái Ngọc Duy Sun, 14 Jan 2018 10:18:19 +0000 (17:18 +0700)

read-cache.c: move tempfile creation/cleanup out of write_shared_index

For one thing, we have more consistent cleanup procedure now and always
keep errno intact.

The real purpose is the ability to break out of write_locked_index()
early when mks_tempfile() fails in the next patch. It's more awkward to
do it if this mks_tempfile() is still inside write_shared_index().

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

read-cache.c: change type of "temp" in write_shared_index()Nguyễn Thái Ngọc Duy Sun, 14 Jan 2018 10:18:18 +0000 (17:18 +0700)

read-cache.c: change type of "temp" in write_shared_index()

This local variable 'temp' will be passed in from the caller in the next
patch. To reduce patch noise, let's change its type now while it's still
a local variable and get all the trival conversion out of the next patch.

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

convert_to_git(): safe_crlf/checksafe becomes int conv_... Torsten Bögershausen Sat, 13 Jan 2018 22:49:31 +0000 (23:49 +0100)

convert_to_git(): safe_crlf/checksafe becomes int conv_flags

When calling convert_to_git(), the checksafe parameter defined what
should happen if the EOL conversion (CRLF --> LF --> CRLF) does not
roundtrip cleanly. In addition, it also defined if line endings should
be renormalized (CRLF --> LF) or kept as they are.

checksafe was an safe_crlf enum with these values:
SAFE_CRLF_FALSE: do nothing in case of EOL roundtrip errors
SAFE_CRLF_FAIL: die in case of EOL roundtrip errors
SAFE_CRLF_WARN: print a warning in case of EOL roundtrip errors
SAFE_CRLF_RENORMALIZE: change CRLF to LF
SAFE_CRLF_KEEP_CRLF: keep all line endings as they are

In some cases the integer value 0 was passed as checksafe parameter
instead of the correct enum value SAFE_CRLF_FALSE. That was no problem
because SAFE_CRLF_FALSE is defined as 0.

FALSE/FAIL/WARN are different from RENORMALIZE and KEEP_CRLF. Therefore,
an enum is not ideal. Let's use a integer bit pattern instead and rename
the parameter to conv_flags to make it more generically usable. This
allows us to extend the bit pattern in a subsequent commit.

Reported-By: Randall S. Becker <rsbecker@nexbridge.com>
Helped-By: Lars Schneider <larsxschneider@gmail.com>
Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Lars Schneider <larsxschneider@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

add--interactive: ignore submodule changes except HEADNguyễn Thái Ngọc Duy Sat, 13 Jan 2018 12:10:38 +0000 (19:10 +0700)

add--interactive: ignore submodule changes except HEAD

For 'add -i' and 'add -p', the only action we can take on a dirty
submodule entry is update the index with a new value from its HEAD. The
content changes inside (from its own index, untracked files...) do not
matter, at least until 'git add -i' learns about launching a new
interactive add session inside a submodule.

Ignore all other submodules changes except HEAD. This reduces the number
of entries the user has to check through in 'git add -i', and the number
of 'no' they have to answer to 'git add -p' when dirty submodules are
present.

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

trace.c: move strbuf_release() out of print_trace_line()Nguyễn Thái Ngọc Duy Mon, 15 Jan 2018 10:59:45 +0000 (17:59 +0700)

trace.c: move strbuf_release() out of print_trace_line()

The function is about printing a trace line, not releasing the buffer it
receives too. Move strbuf_release() back outside. This makes it easier
to see how strbuf is managed.

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

trace: avoid unnecessary quotingJeff King Mon, 15 Jan 2018 10:59:44 +0000 (17:59 +0700)

trace: avoid unnecessary quoting

Trace output which contains arbitrary strings (e.g., the
arguments to commands which we are running) is always passed
through sq_quote_buf(). That function always adds
single-quotes, even if the output consists of vanilla
characters. This can make the output a bit hard to read.

Let's avoid the quoting if there are no characters which a
shell would interpret. Trace output doesn't necessarily need
to be shell-compatible, but:

- the shell language is a good ballpark for what humans
consider readable (well, humans versed in command line
tools)

- the run_command bits can be cut-and-pasted to a shell,
and we'll keep that property

- it covers any cases which would make the output
visually ambiguous (e.g., embedded whitespace or quotes)

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

sq_quote_argv: drop maxlen parameterJeff King Mon, 15 Jan 2018 10:59:43 +0000 (17:59 +0700)

sq_quote_argv: drop maxlen parameter

No caller passes anything but "0" for this parameter, which
requests that the function ignore it completely. In fact, in
all of history there was only one such caller, and it went
away in 7f51f8bc2b (alias: use run_command api to execute
aliases, 2011-01-07).

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

Doc/git-submodule: improve readability and grammar... Kaartic Sivaraam Sun, 14 Jan 2018 17:37:37 +0000 (23:07 +0530)

Doc/git-submodule: improve readability and grammar of a sentence

While at it, correctly quote important words.

Signed-off-by: Kaartic Sivaraam <kaartic.sivaraam@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Doc/gitsubmodules: make some changes to improve readabi... Kaartic Sivaraam Sun, 14 Jan 2018 17:37:36 +0000 (23:07 +0530)

Doc/gitsubmodules: make some changes to improve readability and syntax

* Only mention porcelain commands in examples

* Split a sentence for better readability

* Add missing apostrophes

* Clearly specify the advantages of using submodules

* Avoid abbreviations

* Use "Git" consistently

* Improve readability of certain lines

* Clarify when a submodule is considered active

Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Helped-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Kaartic Sivaraam <kaartic.sivaraam@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule: port submodule subcommand 'deinit' from... Prathamesh Chavan Sun, 14 Jan 2018 21:15:29 +0000 (02:45 +0530)

submodule: port submodule subcommand 'deinit' from shell to C

The same mechanism is used even for porting this submodule
subcommand, as used in the ported subcommands till now.
The function cmd_deinit in split up after porting into four
functions: module_deinit(), for_each_listed_submodule(),
deinit_submodule() and deinit_submodule_cb().

Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Prathamesh Chavan <pc44800@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule: port submodule subcommand 'sync' from shell... Prathamesh Chavan Sun, 14 Jan 2018 21:15:28 +0000 (02:45 +0530)

submodule: port submodule subcommand 'sync' from shell to C

Port the submodule subcommand 'sync' from shell to C using the same
mechanism as that used for porting submodule subcommand 'status'.
Hence, here the function cmd_sync() is ported from shell to C.
This is done by introducing four functions: module_sync(),
sync_submodule(), sync_submodule_cb() and print_default_remote().

The function print_default_remote() is introduced for getting
the default remote as stdout.

Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Prathamesh Chavan <pc44800@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: de.po: translate 72 new messagesRalf Thielow Tue, 2 Jan 2018 09:14:40 +0000 (10:14 +0100)

l10n: de.po: translate 72 new messages

Translate 72 new messages came from git.pot update in 18a907225 (l10n:
git.pot: v2.16.0 round 1 (64 new, 25 removed)) and 005c62fe4 (l10n:
git.pot: v2.16.0 round 2 (8 new, 4 removed)).

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Acked-by: Matthias Rüster <matthias.ruester@gmail.com>

l10n: de.po: improve messages when a branch starts... Ralf Thielow Sat, 16 Dec 2017 19:32:16 +0000 (20:32 +0100)

l10n: de.po: improve messages when a branch starts to track another ref

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>

RelNotes: minor typofixSZEDER Gábor Fri, 12 Jan 2018 10:47:36 +0000 (11:47 +0100)

RelNotes: minor typofix

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t9001: use existing helper in send-email testChristian Ludwig Fri, 12 Jan 2018 10:37:24 +0000 (11:37 +0100)

t9001: use existing helper in send-email test

Use the wrapper function around the sed statement like everywhere
else in the test. Unfortunately the wrapper function is defined
pretty late.

Move the wrapper to the top of the test file, so future users have it
available right away.

Signed-off-by: Christian Ludwig <chrissicool@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 2.16-rc2 v2.16.0-rc2Junio C Hamano Thu, 11 Jan 2018 21:20:41 +0000 (13:20 -0800)

Git 2.16-rc2

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

Merge branch 'jh/object-filtering'Junio C Hamano Thu, 11 Jan 2018 21:16:37 +0000 (13:16 -0800)

Merge branch 'jh/object-filtering'

Hotfix for a topic already in 'master'.

* jh/object-filtering:
oidset: don't return value from oidset_init

Merge branch 'tg/worktree-create-tracking'Junio C Hamano Thu, 11 Jan 2018 21:16:36 +0000 (13:16 -0800)

Merge branch 'tg/worktree-create-tracking'

Doc hotfix.

* tg/worktree-create-tracking:
Documentation/git-worktree.txt: add missing `

Merge branch 'js/test-with-ws-in-path'Junio C Hamano Thu, 11 Jan 2018 21:16:36 +0000 (13:16 -0800)

Merge branch 'js/test-with-ws-in-path'

Hot fix to a test.

* js/test-with-ws-in-path:
t3900: add some more quotes

l10n: bg.po: Updated Bulgarian translation (3288t)Alexander Shopov Thu, 11 Jan 2018 20:59:37 +0000 (21:59 +0100)

l10n: bg.po: Updated Bulgarian translation (3288t)

Signed-off-by: Alexander Shopov <ash@kambanaria.org>

Documentation/git-worktree.txt: add missing `Ralf Thielow Thu, 11 Jan 2018 18:18:21 +0000 (19:18 +0100)

Documentation/git-worktree.txt: add missing `

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

cat-file doc: document that -e will return some outputÆvar Arnfjörð Bjarmason Wed, 10 Jan 2018 12:55:53 +0000 (12:55 +0000)

cat-file doc: document that -e will return some output

The -e option added in 7950571ad7 ("A few more options for
git-cat-file", 2005-12-03) has always errored out with message on
stderr saying that the provided object is malformed, like this:

$ git cat-file -e malformed; echo $?
fatal: Not a valid object name malformed
128

A reader of this documentation may be misled into thinking that

if ! git cat-file -e "$object" [...]

as opposed to:

if ! git cat-file -e "$object" 2>/dev/null [...]

is sufficient to implement a truly silent test that checks whether
some arbitrary $object string was both valid, and pointed to an
object that exists.

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

t3900: add some more quotesBeat Bolli Wed, 10 Jan 2018 09:58:32 +0000 (10:58 +0100)

t3900: add some more quotes

In 89a70b80 ("t0302 & t3900: add forgotten quotes", 2018-01-03), quotes
were added to protect against spaces in $HOME. In the test_when_finished
command, two files are deleted which must be quoted individually.

[jc: with \$HOME in the test_when_finished command quoted, as
pointed out by j6t].

Signed-off-by: Beat Bolli <dev+git@drbeat.li>
Helped-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

RelNotes update before -rc2Junio C Hamano Wed, 10 Jan 2018 22:01:50 +0000 (14:01 -0800)

RelNotes update before -rc2

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

Merge branch 'js/perl-path-workaround-in-tests'Junio C Hamano Wed, 10 Jan 2018 22:01:31 +0000 (14:01 -0800)

Merge branch 'js/perl-path-workaround-in-tests'

* js/perl-path-workaround-in-tests:
mingw: handle GITPERLLIB in t0021 in a Windows-compatible way

Merge branch 'ew/empty-merge-with-dirty-index'Junio C Hamano Wed, 10 Jan 2018 22:01:25 +0000 (14:01 -0800)

Merge branch 'ew/empty-merge-with-dirty-index'

"git merge -s recursive" did not correctly abort when the index is
dirty, if the merged tree happened to be the same as the current
HEAD, which has been fixed.

* ew/empty-merge-with-dirty-index:
merge-recursive: do not look at the index during recursive merge

Merge branch 'ma/bisect-leakfix'Junio C Hamano Wed, 10 Jan 2018 22:01:25 +0000 (14:01 -0800)

Merge branch 'ma/bisect-leakfix'

A hotfix for a recent update that broke 'git bisect'.

* ma/bisect-leakfix:
bisect: fix a regression causing a segfault

Merge branch 'js/fix-merge-arg-quoting-in-rebase-p'Junio C Hamano Wed, 10 Jan 2018 22:01:24 +0000 (14:01 -0800)

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

"git rebase -p -X<option>" did not propagate the option properly
down to underlying merge strategy backend.

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

mingw: handle GITPERLLIB in t0021 in a Windows-compatib... Johannes Schindelin Sat, 6 Jan 2018 22:01:22 +0000 (23:01 +0100)

mingw: handle GITPERLLIB in t0021 in a Windows-compatible way

Git's assumption that all path lists are colon-separated is not only
wrong on Windows, it is not even an assumption that is compatible with
POSIX.

In the interest of time, let's not try to fix this properly but simply
work around the obvious breakage on Windows, where the MSYS2 Bash used
by Git for Windows to interpret the Git's Unix shell scripts will
automagically convert path lists in the environment to
semicolon-separated lists of Windows paths (with drive letter and the
corresponding colon and all that jazz).

In other words, we simply look whether there is a semicolon in
GITPERLLIB and split by semicolons if found instead of colons. This is
not fool-proof, of course, as the path list could consist of a single
path. But that is not the case in Git for Windows' test suite, there are
always two paths in GITPERLLIB.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: TEAMS: add zh_CN team membersJiang Xin Tue, 9 Jan 2018 01:55:12 +0000 (09:55 +0800)

l10n: TEAMS: add zh_CN team members

Add Fangyi Zhou to zh_CN l10n team members.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>

l10n: zh_CN: for git v2.16.0 l10n round 2Jiang Xin Sun, 31 Dec 2017 02:50:17 +0000 (10:50 +0800)

l10n: zh_CN: for git v2.16.0 l10n round 2

Translate 72 messages (3288t0f0u) for git v2.16.0-rc1.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Reviewed-by: 依云 <lilydjwg@gmail.com>
Reviewed-by: Fangyi Zhou <fangyi.zhou@yuriko.moe>

Merge branch 'master' of git://github.com/nafmo/git... Jiang Xin Wed, 10 Jan 2018 03:30:04 +0000 (11:30 +0800)

Merge branch 'master' of git://github.com/nafmo/git-l10n-sv

* 'master' of git://github.com/nafmo/git-l10n-sv:
l10n: sv.po: Update Swedish translation (3288t0f0u)

Merge branch 'russian-l10n' of https://github.com/DJm00... Jiang Xin Wed, 10 Jan 2018 03:28:56 +0000 (11:28 +0800)

Merge branch 'russian-l10n' of https://github.com/DJm00n/git-po-ru

* 'russian-l10n' of https://github.com/DJm00n/git-po-ru:
l10n: ru.po: update Russian translation

Merge branch 'jk/doc-diff-options'Junio C Hamano Tue, 9 Jan 2018 22:32:57 +0000 (14:32 -0800)

Merge branch 'jk/doc-diff-options'

Doc update.

* jk/doc-diff-options:
docs/diff-options: clarify scope of diff-filter types

Merge branch 'bw/protocol-v1'Junio C Hamano Tue, 9 Jan 2018 22:32:56 +0000 (14:32 -0800)

Merge branch 'bw/protocol-v1'

Test fix for a topic already in 'master'.

* bw/protocol-v1:
http: fix v1 protocol tests with apache httpd < 2.4

Merge branch 'sg/travis-check-untracked'Junio C Hamano Tue, 9 Jan 2018 22:32:55 +0000 (14:32 -0800)

Merge branch 'sg/travis-check-untracked'

* sg/travis-check-untracked:
travis-ci: check that all build artifacts are .gitignore-d
travis-ci: don't store P4 and Git LFS in the working tree

Merge branch 'js/test-with-ws-in-path'Junio C Hamano Tue, 9 Jan 2018 22:32:55 +0000 (14:32 -0800)

Merge branch 'js/test-with-ws-in-path'

Test fixes.

* js/test-with-ws-in-path:
t0302 & t3900: add forgotten quotes
Allow the test suite to pass in a directory whose name contains spaces

Merge branch 'bc/submitting-patches-in-asciidoc'Junio C Hamano Tue, 9 Jan 2018 22:32:54 +0000 (14:32 -0800)

Merge branch 'bc/submitting-patches-in-asciidoc'

Doc readability update.

* bc/submitting-patches-in-asciidoc:
doc/SubmittingPatches: improve text formatting

Merge branch 'sg/travis-skip-identical-test'Junio C Hamano Tue, 9 Jan 2018 22:32:54 +0000 (14:32 -0800)

Merge branch 'sg/travis-skip-identical-test'

Avoid repeatedly testing the same tree in TravisCI that have been
tested successfully already.

* sg/travis-skip-identical-test:
travis-ci: record and skip successfully built trees
travis-ci: create the cache directory early in the build process
travis-ci: print the "tip of branch is exactly at tag" message in color

Merge branch 'ab/dc-sha1-loose-ends'Junio C Hamano Tue, 9 Jan 2018 22:32:53 +0000 (14:32 -0800)

Merge branch 'ab/dc-sha1-loose-ends'

Tying loose ends for the recent integration work of
collision-detecting SHA-1 implementation.

* ab/dc-sha1-loose-ends:
Makefile: NO_OPENSSL=1 should no longer imply BLK_SHA1=1

Merge branch 'sg/travis-fixes'Junio C Hamano Tue, 9 Jan 2018 22:32:53 +0000 (14:32 -0800)

Merge branch 'sg/travis-fixes'

Assorted updates for TravisCI integration.

* sg/travis-fixes:
travis-ci: only print test failures if there are test results available
travis-ci: save prove state for the 32 bit Linux build
travis-ci: don't install default addon packages for the 32 bit Linux build
travis-ci: fine tune the use of 'set -x' in 'ci/*' scripts

doc/read-tree: remove obsolete remarkAndreas G. Schacker Tue, 9 Jan 2018 15:30:34 +0000 (16:30 +0100)

doc/read-tree: remove obsolete remark

Earlier versions of `git read-tree` required the `--prefix` option value
to end with a slash. This restriction was eventually lifted without a
corresponding amendment to the documentation.

Signed-off-by: Andreas G. Schacker <andreas.schacker@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: sv.po: Update Swedish translation (3288t0f0u)Peter Krefting Tue, 9 Jan 2018 19:10:14 +0000 (20:10 +0100)

l10n: sv.po: Update Swedish translation (3288t0f0u)

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>

Merge branch 'js/misc-git-gui-stuff' of ../git-guiJunio C Hamano Tue, 9 Jan 2018 19:07:03 +0000 (11:07 -0800)

Merge branch 'js/misc-git-gui-stuff' of ../git-gui

* 'js/misc-git-gui-stuff' of ../git-gui:
git-gui: allow Ctrl+T to toggle multiple paths
git-gui: fix exception when trying to stage with empty file list
git-gui: avoid exception upon Ctrl+T in an empty list
git gui: fix staging a second line to a 1-line file

git-gui: allow Ctrl+T to toggle multiple pathsJohannes Schindelin Tue, 9 Jan 2018 14:33:04 +0000 (15:33 +0100)

git-gui: allow Ctrl+T to toggle multiple paths

It is possible to select multiple files in the "Unstaged Changes" and
the "Staged Changes" lists. But when hitting Ctrl+T, surprisingly only
one entry is handled, not all selected ones.

Let's just use the same code path as for the "Stage To Commit" and the
"Unstage From Commit" menu items.

This fixes https://github.com/git-for-windows/git/issues/1012

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-gui: fix exception when trying to stage with empty... Johannes Schindelin Tue, 9 Jan 2018 14:33:01 +0000 (15:33 +0100)

git-gui: fix exception when trying to stage with empty file list

If there is nothing to stage, there is nothing to stage. Let's not try
to, even if the file list contains nothing at all.

This fixes https://github.com/git-for-windows/git/issues/1075

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>