gitweb.git
Merge branch 'rs/describe-unique-abbrev'Junio C Hamano Tue, 13 Feb 2018 21:39:07 +0000 (13:39 -0800)

Merge branch 'rs/describe-unique-abbrev'

Code clean-up.

* rs/describe-unique-abbrev:
describe: use strbuf_add_unique_abbrev() for adding short hashes

Merge branch 'ks/submodule-doc-updates'Junio C Hamano Tue, 13 Feb 2018 21:39:07 +0000 (13:39 -0800)

Merge branch 'ks/submodule-doc-updates'

Doc updates.

* ks/submodule-doc-updates:
Doc/git-submodule: improve readability and grammar of a sentence
Doc/gitsubmodules: make some changes to improve readability and syntax

Merge branch 'cl/t9001-cleanup'Junio C Hamano Tue, 13 Feb 2018 21:39:07 +0000 (13:39 -0800)

Merge branch 'cl/t9001-cleanup'

Test clean-up.

* cl/t9001-cleanup:
t9001: use existing helper in send-email test

Merge branch 'gs/retire-mru'Junio C Hamano Tue, 13 Feb 2018 21:39:06 +0000 (13:39 -0800)

Merge branch 'gs/retire-mru'

Retire mru API as it does not give enough abstraction over
underlying list API to be worth it.

* gs/retire-mru:
mru: Replace mru.[ch] with list.h implementation

Merge branch 'ot/mru-on-list'Junio C Hamano Tue, 13 Feb 2018 21:39:05 +0000 (13:39 -0800)

Merge branch 'ot/mru-on-list'

The first step to getting rid of mru API and using the
doubly-linked list API directly instead.

* ot/mru-on-list:
mru: use double-linked list from list.h

Merge branch 'jh/partial-clone'Junio C Hamano Tue, 13 Feb 2018 21:39:04 +0000 (13:39 -0800)

Merge branch 'jh/partial-clone'

The machinery to clone & fetch, which in turn involves packing and
unpacking objects, have been told how to omit certain objects using
the filtering mechanism introduced by the jh/object-filtering
topic, and also mark the resulting pack as a promisor pack to
tolerate missing objects, taking advantage of the mechanism
introduced by the jh/fsck-promisors topic.

* jh/partial-clone:
t5616: test bulk prefetch after partial fetch
fetch: inherit filter-spec from partial clone
t5616: end-to-end tests for partial clone
fetch-pack: restore save_commit_buffer after use
unpack-trees: batch fetching of missing blobs
clone: partial clone
partial-clone: define partial clone settings in config
fetch: support filters
fetch: refactor calculation of remote list
fetch-pack: test support excluding large blobs
fetch-pack: add --no-filter
fetch-pack, index-pack, transport: partial clone
upload-pack: add object filtering for partial clone

Merge branch 'jh/fsck-promisors'Junio C Hamano Tue, 13 Feb 2018 21:39:03 +0000 (13:39 -0800)

Merge branch 'jh/fsck-promisors'

In preparation for implementing narrow/partial clone, the machinery
for checking object connectivity used by gc and fsck has been
taught that a missing object is OK when it is referenced by a
packfile specially marked as coming from trusted repository that
promises to make them available on-demand and lazily.

* jh/fsck-promisors:
gc: do not repack promisor packfiles
rev-list: support termination at promisor objects
sha1_file: support lazily fetching missing objects
introduce fetch-object: fetch one promisor object
index-pack: refactor writing of .keep files
fsck: support promisor objects as CLI argument
fsck: support referenced promisor objects
fsck: support refs pointing to promisor objects
fsck: introduce partialclone extension
extension.partialclone: introduce partial clone extension

Merge branch 'ab/simplify-perl-makefile'Junio C Hamano Tue, 13 Feb 2018 21:39:03 +0000 (13:39 -0800)

Merge branch 'ab/simplify-perl-makefile'

The build procedure for perl/ part has been greatly simplified by
weaning ourselves off of MakeMaker.

* ab/simplify-perl-makefile:
perl: treat PERLLIB_EXTRA as an extra path again
perl: avoid *.pmc and fix Error.pm further
Makefile: replace perl/Makefile.PL with simple make rules

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

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>

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>

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>

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
...

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>

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>

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>

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>

git-gui: avoid exception upon Ctrl+T in an empty listJohannes Schindelin Tue, 9 Jan 2018 14:32:58 +0000 (15:32 +0100)

git-gui: avoid exception upon Ctrl+T in an empty list

Previously unstaged files can be staged by clicking on them and then
pressing Ctrl+T. Conveniently, the next unstaged file is selected
automatically so that the unstaged files can be staged by repeatedly
pressing Ctrl+T.

When a user hits Ctrl+T one time too many, though, Git GUI used to throw
this exception:

expected number but got ""
expected number but got ""
while executing
"expr {int([lindex [$w tag ranges in_diff] 0])}"
(procedure "toggle_or_diff" line 13)
invoked from within
"toggle_or_diff toggle .vpane.files.workdir.list "
(command bound to event)

Let's just avoid that by skipping the operation when there are no more
files to stage.

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

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

git gui: fix staging a second line to a 1-line fileJohannes Schindelin Tue, 9 Jan 2018 14:32:54 +0000 (15:32 +0100)

git gui: fix staging a second line to a 1-line file

When a 1-line file is augmented by a second line, and the user tries to
stage that single line via the "Stage Line" context menu item, we do not
want to see "apply: corrupt patch at line 5".

The reason for this error was that the hunk header looks like this:

@@ -1 +1,2 @@

but the existing code expects the original range always to contain a
comma. This problem is easily fixed by cutting the string "1 +1,2"
(that Git GUI formerly mistook for the starting line) at the space.

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

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

bisect: debug: convert struct object to object_idYasushi SHOJI Tue, 9 Jan 2018 11:03:56 +0000 (20:03 +0900)

bisect: debug: convert struct object to object_id

The commit f2fd0760 ("Convert struct object to object_id",
2015-11-10) converted struct object to object_id but forgot to
adjust a few callers in a debug function show_list(), which is
ifdef'ed to noop, in bisect.c.

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

Merge branch 'ew/empty-merge-with-dirty-index-maint... Junio C Hamano Tue, 9 Jan 2018 18:41:37 +0000 (10:41 -0800)

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

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

merge-recursive: do not look at the index during recurs... Junio C Hamano Tue, 9 Jan 2018 18:05:51 +0000 (10:05 -0800)

merge-recursive: do not look at the index during recursive merge

When merging another branch into ours, if their tree is the same as
the common ancestor's, we can declare that our tree represents the
result of three-way merge. In such a case, the recursive merge
backend incorrectly used to create a commit out of our index, even
when the index has changes.

A recent fix attempted to prevent this by adding a comparison
between "our" tree and the index, but forgot that this check must be
restricted only to the outermost merge. Inner merges performed by
the recursive backend across merge bases are by definition made from
scratch without having any local changes added to the index. The
call to index_has_changes() during an inner merge is working on the
index that has no relation to the merge being performed, preventing
legitimate merges from getting carried out.

Fix it by limiting the check to the outermost merge.

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

l10n: ru.po: update Russian translationDimitriy Ryazantcev Tue, 9 Jan 2018 10:21:52 +0000 (12:21 +0200)

l10n: ru.po: update Russian translation

Signed-off-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com>

l10n: TEAMS: Add ko team membersChangwoo Ryu Tue, 9 Jan 2018 02:32:47 +0000 (11:32 +0900)

l10n: TEAMS: Add ko team members

Add Gwan-gyeong Mun and Sihyeon Jang.

Signed-off-by: Changwoo Ryu <cwryu@debian.org>

Merge branch 'ko/merge-l10n' of https://github.com... Jiang Xin Tue, 9 Jan 2018 01:47:11 +0000 (09:47 +0800)

Merge branch 'ko/merge-l10n' of https://github.com/git-l10n-ko/git-l10n-ko

* 'ko/merge-l10n' of https://github.com/git-l10n-ko/git-l10n-ko:
l10n: ko.po: Update Korean translation

oidset: don't return value from oidset_initThomas Gummerer Sun, 7 Jan 2018 23:04:04 +0000 (23:04 +0000)

oidset: don't return value from oidset_init

c3a9ad3117 ("oidset: add iterator methods to oidset", 2017-11-21)
introduced a 'oidset_init()' function in oidset.h, which has void as
return type, but returns an expression.

This makes the solaris compiler fail with:

"oidset.h", line 30: void function cannot return value

As the return type is void, and even the return type of the expression
we're trying to return (oidmap_init) is void just remove the return
statement to fix the compiler error.

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

stash: don't delete untracked files that match pathspecThomas Gummerer Sat, 6 Jan 2018 00:24:20 +0000 (00:24 +0000)

stash: don't delete untracked files that match pathspec

Currently when 'git stash push -- <pathspec>' is used, untracked files
that match the pathspec will be deleted, even though they do not end up
in a stash anywhere.

This is because the original commit introducing the pathspec feature in
git stash push (df6bba0937 ("stash: teach 'push' (and 'create_stash') to
honor pathspec", 2017-02-28)) used the sequence of 'git reset <pathspec>
&& git ls-files --modified <pathspec> | git checkout-index && git clean
<pathspec>'.

The intention was to emulate what 'git reset --hard -- <pathspec>' would
do. The call to 'git clean' was supposed to clean up the files that
were unstaged by 'git reset'. This would work fine if the pathspec
doesn't match any files that were untracked before 'git stash push --
<pathspec>'. However if <pathspec> matches a file that was untracked
before invoking the 'stash' command, all untracked files matching the
pathspec would inadvertently be deleted as well, even though they
wouldn't end up in the stash, and are therefore lost.

This behaviour was never what was intended, only blobs that also end up
in the stash should be reset to their state in HEAD, previously
untracked files should be left alone.

To achieve this, first match what's in the index and what's in the
working tree by adding all changes to the index, ask diff-index what
changed between HEAD and the current index, and then apply that patch in
reverse to get rid of the changes, which includes removal of added
files and resurrection of removed files.

Reported-by: Reid Price <reid.price@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>

send-email: add test for Linux's get_maintainer.plAlex Bennée Mon, 8 Jan 2018 10:34:34 +0000 (11:34 +0100)

send-email: add test for Linux's get_maintainer.pl

We had a regression that broke Linux's get_maintainer.pl. Using
Mail::Address to parse email addresses fixed it, but let's protect
against future regressions.

Note that we need --cc-cmd to be relative because this option doesn't
accept spaces in script names (probably to allow --cc-cmd="executable
--option"), while --smtp-server needs to be absolute.

Patch-edited-by: Matthieu Moy <git@matthieu-moy.fr>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Matthieu Moy <git@matthieu-moy.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

perl/Git: remove now useless email-address parsing... Matthieu Moy Mon, 8 Jan 2018 10:34:33 +0000 (11:34 +0100)

perl/Git: remove now useless email-address parsing code

We now use Mail::Address unconditionaly, hence parse_mailboxes is now
dead code. Remove it and its tests.

Signed-off-by: Matthieu Moy <git@matthieu-moy.fr>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: ko.po: Update Korean translationChangwoo Ryu Mon, 8 Jan 2018 01:25:27 +0000 (10:25 +0900)

l10n: ko.po: Update Korean translation

Signed-off-by: Changwoo Ryu <cwryu@debian.org>
Signed-off-by: Sihyeon Jang <uneedsihyeon@gmail.com>
Signed-off-by: Gwan-gyeong Mun <elongbug@gmail.com>
Reviewed-by: Changwoo Ryu <cwryu@debian.org>

Merge branch '2.16' of https://github.com/ChrisADR... Jiang Xin Mon, 8 Jan 2018 02:59:24 +0000 (10:59 +0800)

Merge branch '2.16' of https://github.com/ChrisADR/git-po

* '2.16' of https://github.com/ChrisADR/git-po:
l10n: es.po: Spanish translation 2.16.0 round 2

Merge branch 'fr_2.16-rc1' of git://github.com/jnavila/gitJiang Xin Mon, 8 Jan 2018 01:17:24 +0000 (09:17 +0800)

Merge branch 'fr_2.16-rc1' of git://github.com/jnavila/git

* 'fr_2.16-rc1' of git://github.com/jnavila/git:
l10n: fr.po 2.16 round 2

l10n: fr.po 2.16 round 2Jean-Noel Avila Sun, 7 Jan 2018 17:57:48 +0000 (18:57 +0100)

l10n: fr.po 2.16 round 2

Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>

l10n: es.po: Spanish translation 2.16.0 round 2Christopher Díaz Riveros Sun, 7 Jan 2018 17:15:35 +0000 (12:15 -0500)

l10n: es.po: Spanish translation 2.16.0 round 2

Signed-off-by: Christopher Díaz Riveros <chrisadr@gentoo.org>

l10n: vi.po(3288t): Updated Vietnamese translation... Tran Ngoc Quan Sun, 7 Jan 2018 01:20:27 +0000 (08:20 +0700)

l10n: vi.po(3288t): Updated Vietnamese translation for v2.16.0 round 2

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>

l10n: git.pot: v2.16.0 round 2 (8 new, 4 removed)Jiang Xin Sat, 6 Jan 2018 23:50:31 +0000 (07:50 +0800)

l10n: git.pot: v2.16.0 round 2 (8 new, 4 removed)

Generate po/git.pot from v2.16.0-rc1 for git v2.16.0 l10n round 2.

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

Merge branch 'master' of git://github.com/git-l10n... Jiang Xin Sat, 6 Jan 2018 23:49:43 +0000 (07:49 +0800)

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

* 'master' of git://github.com/git-l10n/git-po:
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
l10n: Update Spanish translation
l10n: zh_CN translate parameter name
l10n: zh_CN Fix typo
l10n: Fixes to Catalan translation

Merge branch '2.16' of https://github.com/ChrisADR... Jiang Xin Sat, 6 Jan 2018 02:26:30 +0000 (10:26 +0800)

Merge branch '2.16' of https://github.com/ChrisADR/git-po

* '2.16' of https://github.com/ChrisADR/git-po:
l10n: es.po: Update Spanish Translation v2.16.0

Merge branch 'fr_2.16' of git://github.com/jnavila/gitJiang Xin Sat, 6 Jan 2018 02:24:52 +0000 (10:24 +0800)

Merge branch 'fr_2.16' of git://github.com/jnavila/git

* 'fr_2.16' of git://github.com/jnavila/git:
l10n: fr.po v2.16.0 round 1
l10n: fr.po: "worktree list" mistranslated as prune

Git 2.16-rc1 v2.16.0-rc1Junio C Hamano Fri, 5 Jan 2018 21:45:17 +0000 (13:45 -0800)

Git 2.16-rc1

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

Merge branch 'js/sequencer-cleanups'Junio C Hamano Fri, 5 Jan 2018 21:28:11 +0000 (13:28 -0800)

Merge branch 'js/sequencer-cleanups'

Code cleanup.

* js/sequencer-cleanups:
sequencer: do not invent whitespace when transforming OIDs
sequencer: report when noop has an argument
sequencer: remove superfluous conditional
sequencer: strip bogus LF at end of error messages
rebase: do not continue when the todo list generation failed

Merge branch 'jh/memihash-opt'Junio C Hamano Fri, 5 Jan 2018 21:28:11 +0000 (13:28 -0800)

Merge branch 'jh/memihash-opt'

Squelch compiler warning.

* jh/memihash-opt:
t/helper/test-lazy-name-hash: fix compilation