gitweb.git
Merge branch 'jk/difftool-in-subdir'Junio C Hamano Mon, 8 Aug 2016 21:48:39 +0000 (14:48 -0700)

Merge branch 'jk/difftool-in-subdir'

"git difftool <paths>..." started in a subdirectory failed to
interpret the paths relative to that directory, which has been
fixed.

* jk/difftool-in-subdir:
difftool: use Git::* functions instead of passing around state
difftool: avoid $GIT_DIR and $GIT_WORK_TREE
difftool: fix argument handling in subdirs

Merge branch 'va/i18n'Junio C Hamano Mon, 8 Aug 2016 21:48:38 +0000 (14:48 -0700)

Merge branch 'va/i18n'

More i18n marking.

* va/i18n:
i18n: config: unfold error messages marked for translation
i18n: notes: mark comment for translation

Merge branch 'js/rebase-i-progress-tidy'Junio C Hamano Mon, 8 Aug 2016 21:48:38 +0000 (14:48 -0700)

Merge branch 'js/rebase-i-progress-tidy'

Regression fix for an i18n topic already in 'master'.

* js/rebase-i-progress-tidy:
rebase-interactive: trim leading whitespace from progress count

Merge branch 'jk/reflog-date'Junio C Hamano Mon, 8 Aug 2016 21:48:37 +0000 (14:48 -0700)

Merge branch 'jk/reflog-date'

The reflog output format is documented better, and a new format
--date=unix to report the seconds-since-epoch (without timezone)
has been added.

* jk/reflog-date:
date: clarify --date=raw description
date: add "unix" format
date: document and test "raw-local" mode
doc/pretty-formats: explain shortening of %gd
doc/pretty-formats: describe index/time formats for %gd
doc/rev-list-options: explain "-g" output formats
doc/rev-list-options: clarify "commit@{Nth}" for "-g" option

Merge branch 'cp/completion-clone-recurse-submodules'Junio C Hamano Mon, 8 Aug 2016 21:48:37 +0000 (14:48 -0700)

Merge branch 'cp/completion-clone-recurse-submodules'

* cp/completion-clone-recurse-submodules:
completion: add option '--recurse-submodules' to 'git clone'

Merge branch 'jk/t4205-cleanup'Junio C Hamano Mon, 8 Aug 2016 21:48:36 +0000 (14:48 -0700)

Merge branch 'jk/t4205-cleanup'

Test modernization.

* jk/t4205-cleanup:
t4205: indent here documents
t4205: drop top-level &&-chaining

Merge branch 'da/subtree-modernize'Junio C Hamano Mon, 8 Aug 2016 21:48:35 +0000 (14:48 -0700)

Merge branch 'da/subtree-modernize'

Style fixes for "git subtree" (in contrib/).

* da/subtree-modernize:
subtree: adjust function definitions to match CodingGuidelines
subtree: adjust style to match CodingGuidelines

Merge branch 'nd/fetch-ref-summary'Junio C Hamano Mon, 8 Aug 2016 21:48:34 +0000 (14:48 -0700)

Merge branch 'nd/fetch-ref-summary'

Hotfix of a test in a topic that has already been merged to 'master'.

* nd/fetch-ref-summary:
t5510: skip tests under GETTEXT_POISON build

Merge branch 'ew/git-svn-http-tests'Junio C Hamano Mon, 8 Aug 2016 21:48:34 +0000 (14:48 -0700)

Merge branch 'ew/git-svn-http-tests'

Tests for "git svn" have been taught to reuse the lib-httpd test
infrastructure when testing the subversion integration that
interacts with subversion repositories served over the http://
protocol.

* ew/git-svn-http-tests:
git svn: migrate tests to use lib-httpd
t/t91*: do not say how to avoid the tests

Merge branch 'js/t4130-rename-without-ino'Junio C Hamano Mon, 8 Aug 2016 21:48:33 +0000 (14:48 -0700)

Merge branch 'js/t4130-rename-without-ino'

Windows port was failing some tests in t4130, due to the lack of
inum in the returned values by its lstat(2) emulation.

* js/t4130-rename-without-ino:
t4130: work around Windows limitation

Tenth batch for 2.10Junio C Hamano Thu, 4 Aug 2016 21:40:34 +0000 (14:40 -0700)

Tenth batch for 2.10

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

Merge branch 'jc/grep-commandline-vs-configuration'Junio C Hamano Thu, 4 Aug 2016 21:39:18 +0000 (14:39 -0700)

Merge branch 'jc/grep-commandline-vs-configuration'

"git -c grep.patternType=extended log --basic-regexp" misbehaved
because the internal API to access the grep machinery was not
designed well.

* jc/grep-commandline-vs-configuration:
grep: further simplify setting the pattern type

Merge branch 'sb/submodule-clone-retry'Junio C Hamano Thu, 4 Aug 2016 21:39:17 +0000 (14:39 -0700)

Merge branch 'sb/submodule-clone-retry'

An earlier tweak to make "submodule update" retry a failing clone
of submodules was buggy and caused segfault, which has been fixed.

* sb/submodule-clone-retry:
submodule-helper: fix indexing in clone retry error reporting path
git-submodule: forward exit code of git-submodule--helper more faithfully

Merge branch 'sb/pack-protocol-doc-nak'Junio C Hamano Thu, 4 Aug 2016 21:39:16 +0000 (14:39 -0700)

Merge branch 'sb/pack-protocol-doc-nak'

A doc update.

* sb/pack-protocol-doc-nak:
Documentation: pack-protocol correct NAK response

Ninth batch of topics for 2.10Junio C Hamano Wed, 3 Aug 2016 22:13:16 +0000 (15:13 -0700)

Ninth batch of topics for 2.10

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

Merge branch 'jk/diff-do-not-reuse-wtf-needs-cleaning'Junio C Hamano Wed, 3 Aug 2016 22:10:29 +0000 (15:10 -0700)

Merge branch 'jk/diff-do-not-reuse-wtf-needs-cleaning'

There is an optimization used in "git diff $treeA $treeB" to borrow
an already checked-out copy in the working tree when it is known to
be the same as the blob being compared, expecting that open/mmap of
such a file is faster than reading it from the object store, which
involves inflating and applying delta. This however kicked in even
when the checked-out copy needs to go through the convert-to-git
conversion (including the clean filter), which defeats the whole
point of the optimization. The optimization has been disabled when
the conversion is necessary.

* jk/diff-do-not-reuse-wtf-needs-cleaning:
diff: do not reuse worktree files that need "clean" conversion

Merge branch 'rs/submodule-config-code-cleanup'Junio C Hamano Wed, 3 Aug 2016 22:10:28 +0000 (15:10 -0700)

Merge branch 'rs/submodule-config-code-cleanup'

Code cleanup.

* rs/submodule-config-code-cleanup:
submodule-config: fix test binary crashing when no arguments given
submodule-config: combine early return code into one goto
submodule-config: passing name reference for .gitmodule blobs
submodule-config: use explicit empty string instead of strbuf in config_from()

Merge branch 'jk/push-progress'Junio C Hamano Wed, 3 Aug 2016 22:10:27 +0000 (15:10 -0700)

Merge branch 'jk/push-progress'

"git push" and "git clone" learned to give better progress meters
to the end user who is waiting on the terminal.

* jk/push-progress:
receive-pack: send keepalives during quiet periods
receive-pack: turn on connectivity progress
receive-pack: relay connectivity errors to sideband
receive-pack: turn on index-pack resolving progress
index-pack: add flag for showing delta-resolution progress
clone: use a real progress meter for connectivity check
check_connected: add progress flag
check_connected: relay errors to alternate descriptor
check_everything_connected: use a struct with named options
check_everything_connected: convert to argv_array
rev-list: add optional progress reporting
check_everything_connected: always pass --quiet to rev-list

Merge branch 'jt/fetch-large-handshake-window-on-http'Junio C Hamano Wed, 3 Aug 2016 22:10:27 +0000 (15:10 -0700)

Merge branch 'jt/fetch-large-handshake-window-on-http'

"git fetch" exchanges batched have/ack messages between the sender
and the receiver, initially doubling every time and then falling
back to enlarge the window size linearly. The "smart http"
transport, being an half-duplex protocol, outgrows the preset limit
too quickly and becomes inefficient when interacting with a large
repository. The internal mechanism learned to grow the window size
more aggressively when working with the "smart http" transport.

* jt/fetch-large-handshake-window-on-http:
fetch-pack: grow stateless RPC windows exponentially

Merge branch 'jk/git-jump'Junio C Hamano Wed, 3 Aug 2016 22:10:27 +0000 (15:10 -0700)

Merge branch 'jk/git-jump'

"git jump" script (in contrib/) has been updated a bit.

* jk/git-jump:
contrib/git-jump: fix typo in README
contrib/git-jump: add whitespace-checking mode
contrib/git-jump: fix greedy regex when matching hunks

Merge branch 'mm/status-suggest-merge-abort'Junio C Hamano Wed, 3 Aug 2016 22:10:26 +0000 (15:10 -0700)

Merge branch 'mm/status-suggest-merge-abort'

"git status" learned to suggest "merge --abort" during a conflicted
merge, just like it already suggests "rebase --abort" during a
conflicted rebase.

* mm/status-suggest-merge-abort:
status: suggest 'git merge --abort' when appropriate

Merge branch 'jk/parse-options-concat'Junio C Hamano Wed, 3 Aug 2016 22:10:25 +0000 (15:10 -0700)

Merge branch 'jk/parse-options-concat'

Users of the parse_options_concat() API function need to allocate
extra slots in advance and fill them with OPT_END() when they want
to decide the set of supported options dynamically, which makes the
code error-prone and hard to read. This has been corrected by tweaking
the API to allocate and return a new copy of "struct option" array.

* jk/parse-options-concat:
parse_options: allocate a new array when concatenating

Merge branch 'sb/push-options'Junio C Hamano Wed, 3 Aug 2016 22:10:24 +0000 (15:10 -0700)

Merge branch 'sb/push-options'

"git push" learned to accept and pass extra options to the
receiving end so that hooks can read and react to them.

* sb/push-options:
add a test for push options
push: accept push options
receive-pack: implement advertising and receiving push options
push options: {pre,post}-receive hook learns about push options

Merge branch 'ew/http-walker'Junio C Hamano Wed, 3 Aug 2016 22:10:24 +0000 (15:10 -0700)

Merge branch 'ew/http-walker'

Dumb http transport on the client side has been optimized.

* ew/http-walker:
list: avoid incompatibility with *BSD sys/queue.h
http-walker: reduce O(n) ops with doubly-linked list
http: avoid disconnecting on 404s for loose objects
http-walker: remove unused parameter from fetch_object

Merge branch 'pm/build-persistent-https-with-recent-go'Junio C Hamano Wed, 3 Aug 2016 22:10:23 +0000 (15:10 -0700)

Merge branch 'pm/build-persistent-https-with-recent-go'

The build procedure for "git persistent-https" helper (in contrib/)
has been updated so that it can be built with more recent versions
of Go.

* pm/build-persistent-https-with-recent-go:
contrib/persistent-https: use Git version for build label
contrib/persistent-https: update ldflags syntax for Go 1.7+

Merge branch 'da/subtree-2.9-regression'Junio C Hamano Wed, 3 Aug 2016 22:10:22 +0000 (15:10 -0700)

Merge branch 'da/subtree-2.9-regression'

"git merge" in Git v2.9 was taught to forbid merging an unrelated
lines of history by default, but that is exactly the kind of thing
the "--rejoin" mode of "git subtree" (in contrib/) wants to do.
"git subtree" has been taught to use the "--allow-unrelated-histories"
option to override the default.

* da/subtree-2.9-regression:
subtree: fix "git subtree split --rejoin"
t7900-subtree.sh: fix quoting and broken && chains

Merge branch 'os/no-verify-skips-commit-msg-too'Junio C Hamano Wed, 3 Aug 2016 22:10:22 +0000 (15:10 -0700)

Merge branch 'os/no-verify-skips-commit-msg-too'

"git commit --help" said "--no-verify" is only about skipping the
pre-commit hook, and failed to say that it also skipped the
commit-msg hook.

* os/no-verify-skips-commit-msg-too:
commit: describe that --no-verify skips the commit-msg hook in the help text

t4130: work around Windows limitationJohannes Sixt Wed, 3 Aug 2016 06:15:03 +0000 (08:15 +0200)

t4130: work around Windows limitation

On Windows, it is already pretty expensive to try to recreate the stat()
data that Git assumes is cheap to obtain. To make things halfway decent
in performance, we even have to skip emulating the inode and to
determine the number of hard links.

This is not a huge problem, usually, as either the size or the mtime or
the ctime are tell-tale enough to say when a file has changed, and even
if not, those changes are typically made after the index file was
written, triggering a rehashing of the files' contents.

The t4130-apply-criss-cross-rename test case, however, requires the
inode to determine that files of equal size were swapped, as renaming
files does not update their mtime. Every once in a while, t4130 fails
on Windows because of this missing piece.

Equal file sizes are not crucial for the test cases, however. Hence,
generate files with different sizes so that there is some property that
the swapped files can be discovered reliably even on Windows.

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

Sync with maintJunio C Hamano Thu, 28 Jul 2016 21:21:18 +0000 (14:21 -0700)

Sync with maint

* maint:
Some fixes for 2.9.3

Eighth batch of topics for 2.10Junio C Hamano Thu, 28 Jul 2016 20:14:53 +0000 (13:14 -0700)

Eighth batch of topics for 2.10

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

t9100: portability fixJunio C Hamano Thu, 28 Jul 2016 21:20:13 +0000 (14:20 -0700)

t9100: portability fix

Do not say "export VAR=VAL"; "VAR=VAL && export VAR" is always more
portable.

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

difftool: use Git::* functions instead of passing aroun... David Aguilar Tue, 19 Jul 2016 03:57:56 +0000 (20:57 -0700)

difftool: use Git::* functions instead of passing around state

Call Git::command() and friends directly wherever possible.
This makes it clear that these operations can be invoked directly
without needing to manage the current directory and related GIT_*
environment variables.

Eliminate find_repository() since we can now use wc_path() and
not worry about side-effects involving environment variables.

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

difftool: avoid $GIT_DIR and $GIT_WORK_TREEDavid Aguilar Tue, 19 Jul 2016 03:57:55 +0000 (20:57 -0700)

difftool: avoid $GIT_DIR and $GIT_WORK_TREE

Environment variables are global and hard to reason about.
Use the `--git-dir` and `--work-tree` arguments when invoking `git`
instead of relying on the environment.

Add a test to ensure that difftool's dir-diff feature works when these
variables are present in the environment.

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rebase-interactive: trim leading whitespace from progre... Johannes Sixt Thu, 28 Jul 2016 17:47:23 +0000 (19:47 +0200)

rebase-interactive: trim leading whitespace from progress count

Interactive rebase uses 'wc -l' to write the current patch number
in a progress report. Some implementations of 'wc -l' produce spaces
before the number, leading to ugly output such as

Rebasing ( 3/8)

Remove the spaces using a trivial arithmetic evaluation.

Before 9588c52 (i18n: rebase-interactive: mark strings for
translation) this was not a problem because printf was used to
generate the text. Since that commit, the count is interpolated
directly from a shell variable into the text, where the spaces
remain. The total number of patches does not have this problem
even though it is interpolated from a shell variable in the same
manner, because the variable is set by an arithmetic evaluation.

Later in the script, there is a virtually identical case where
leading spaces are trimmed, but it uses a pattern substitution:

todocount=$(git stripspace --strip-comments <"$todo" | wc -l)
todocount=${todocount##* }

I did not choose this idiom because it adds a line of code, and
there is already an arithmetic evaluation in the vicinity of the
line that is changed here.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'master' of git://git.bogomips.org/git-svnJunio C Hamano Thu, 28 Jul 2016 20:13:53 +0000 (13:13 -0700)

Merge branch 'master' of git://git.bogomips.org/git-svn

* 'master' of git://git.bogomips.org/git-svn:
git-svn: allow --version to work anywhere
git-svn: document svn.authorsProg in config

submodule-config: fix test binary crashing when no... Heiko Voigt Thu, 28 Jul 2016 12:50:05 +0000 (14:50 +0200)

submodule-config: fix test binary crashing when no arguments given

Since arg[0] will be NULL without any argument here and starts_with()
does not like NULL-pointers.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule-config: combine early return code into one... Heiko Voigt Thu, 28 Jul 2016 12:49:47 +0000 (14:49 +0200)

submodule-config: combine early return code into one goto

So we have simpler return handling code and all the cleanup code in
almost one place.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule-config: passing name reference for .gitmodule... Heiko Voigt Thu, 28 Jul 2016 12:49:11 +0000 (14:49 +0200)

submodule-config: passing name reference for .gitmodule blobs

Commit 959b5455 (submodule: implement a config API for lookup of
.gitmodules values, 2015-08-18) implemented the initial version of the
submodule config cache. During development of that initial version we
extracted the function gitmodule_sha1_from_commit(). During that process
we missed that the strbuf rev was still used in config_from() and now is
left empty. Lets fix this by also returning this string.

This means that now when reading .gitmodules from revisions, the error
messages also contain a reference to the blob they are from.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Some fixes for 2.9.3Junio C Hamano Thu, 28 Jul 2016 18:28:32 +0000 (11:28 -0700)

Some fixes for 2.9.3

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

Merge branch 'ak/lazy-prereq-mktemp' into maintJunio C Hamano Thu, 28 Jul 2016 18:26:03 +0000 (11:26 -0700)

Merge branch 'ak/lazy-prereq-mktemp' into maint

A test that unconditionally used "mktemp" learned that the command
is not necessarily available everywhere.

* ak/lazy-prereq-mktemp:
t7610: test for mktemp before test execution

Merge branch 'nd/icase' into maintJunio C Hamano Thu, 28 Jul 2016 18:26:03 +0000 (11:26 -0700)

Merge branch 'nd/icase' into maint

"git grep -i" has been taught to fold case in non-ascii locales
correctly.

* nd/icase:
grep.c: reuse "icase" variable
diffcore-pickaxe: support case insensitive match on non-ascii
diffcore-pickaxe: Add regcomp_or_die()
grep/pcre: support utf-8
gettext: add is_utf8_locale()
grep/pcre: prepare locale-dependent tables for icase matching
grep: rewrite an if/else condition to avoid duplicate expression
grep/icase: avoid kwsset when -F is specified
grep/icase: avoid kwsset on literal non-ascii strings
test-regex: expose full regcomp() to the command line
test-regex: isolate the bug test code
grep: break down an "if" stmt in preparation for next changes

Merge branch 'sb/submodule-parallel-fetch' into maintJunio C Hamano Thu, 28 Jul 2016 18:26:02 +0000 (11:26 -0700)

Merge branch 'sb/submodule-parallel-fetch' into maint

Fix recently introduced codepaths that are involved in parallel
submodule operations, which gave up on reading too early, and
could have wasted CPU while attempting to write under a corner
case condition.

* sb/submodule-parallel-fetch:
hoist out handle_nonblock function for xread and xwrite
xwrite: poll on non-blocking FDs
xread: retry after poll on EAGAIN/EWOULDBLOCK

Merge branch 'dk/blame-move-no-reason-for-1-line-contex... Junio C Hamano Thu, 28 Jul 2016 18:26:01 +0000 (11:26 -0700)

Merge branch 'dk/blame-move-no-reason-for-1-line-context' into maint

"git blame -M" missed a single line that was moved within the file.

* dk/blame-move-no-reason-for-1-line-context:
blame: require 0 context lines while finding moved lines with -M

Merge branch 'jk/test-match-signal' into maintJunio C Hamano Thu, 28 Jul 2016 18:26:00 +0000 (11:26 -0700)

Merge branch 'jk/test-match-signal' into maint

The test framework learned a new helper test_match_signal to
check an exit code from getting killed by an expected signal.

* jk/test-match-signal:
t/lib-git-daemon: use test_match_signal
test_must_fail: use test_match_signal
t0005: use test_match_signal as appropriate
tests: factor portable signal check out of t0005

Merge branch 'js/am-call-theirs-theirs-in-fallback... Junio C Hamano Thu, 28 Jul 2016 18:25:59 +0000 (11:25 -0700)

Merge branch 'js/am-call-theirs-theirs-in-fallback-3way' into maint

One part of "git am" had an oddball helper function that called
stuff from outside "his" as opposed to calling what we have "ours",
which was not gender-neutral and also inconsistent with the rest of
the system where outside stuff is usuall called "theirs" in
contrast to "ours".

* js/am-call-theirs-theirs-in-fallback-3way:
am: counteract gender bias

Merge branch 'js/t3404-grammo-fix' into maintJunio C Hamano Thu, 28 Jul 2016 18:25:58 +0000 (11:25 -0700)

Merge branch 'js/t3404-grammo-fix' into maint

Grammofix.

* js/t3404-grammo-fix:
t3404: fix a grammo (commands are ran -> commands are run)

Merge branch 'nd/doc-new-command' into maintJunio C Hamano Thu, 28 Jul 2016 18:25:57 +0000 (11:25 -0700)

Merge branch 'nd/doc-new-command' into maint

Typofix in a doc.

* nd/doc-new-command:
new-command.txt: correct the command description file

Merge branch 'ew/gc-auto-pack-limit-fix' into maintJunio C Hamano Thu, 28 Jul 2016 18:25:56 +0000 (11:25 -0700)

Merge branch 'ew/gc-auto-pack-limit-fix' into maint

"gc.autoPackLimit" when set to 1 should not trigger a repacking
when there is only one pack, but the code counted poorly and did
so.

* ew/gc-auto-pack-limit-fix:
gc: fix off-by-one error with gc.autoPackLimit

Merge branch 'js/color-on-windows-comment' into maintJunio C Hamano Thu, 28 Jul 2016 18:25:55 +0000 (11:25 -0700)

Merge branch 'js/color-on-windows-comment' into maint

For a long time, we carried an in-code comment that said our
colored output would work only when we use fprintf/fputs on
Windows, which no longer is the case for the past few years.

* js/color-on-windows-comment:
color.h: remove obsolete comment about limitations on Windows

Merge branch 'mm/doc-tt' into maintJunio C Hamano Thu, 28 Jul 2016 18:25:54 +0000 (11:25 -0700)

Merge branch 'mm/doc-tt' into maint

More mark-up updates to typeset strings that are expected to
literally typed by the end user in fixed-width font.

* mm/doc-tt:
doc: typeset HEAD and variants as literal
CodingGuidelines: formatting HEAD in documentation
doc: typeset long options with argument as literal
doc: typeset '--' as literal
doc: typeset long command-line options as literal
doc: typeset short command-line options as literal
Documentation/git-mv.txt: fix whitespace indentation

Merge branch 'js/sign-empty-commit-fix' into maintJunio C Hamano Thu, 28 Jul 2016 18:25:53 +0000 (11:25 -0700)

Merge branch 'js/sign-empty-commit-fix' into maint

"git commit --amend --allow-empty-message -S" for a commit without
any message body could have misidentified where the header of the
commit object ends.

* js/sign-empty-commit-fix:
commit -S: avoid invalid pointer with empty message

Merge branch 'ps/rebase-i-auto-unstash-upon-abort'... Junio C Hamano Thu, 28 Jul 2016 18:25:52 +0000 (11:25 -0700)

Merge branch 'ps/rebase-i-auto-unstash-upon-abort' into maint

"git rebase -i --autostash" did not restore the auto-stashed change
when the operation was aborted.

* ps/rebase-i-auto-unstash-upon-abort:
rebase -i: restore autostash on abort

Merge branch 'nd/ita-cleanup' into maintJunio C Hamano Thu, 28 Jul 2016 18:25:51 +0000 (11:25 -0700)

Merge branch 'nd/ita-cleanup' into maint

Git does not know what the contents in the index should be for a
path added with "git add -N" yet, so "git grep --cached" should not
show hits (or show lack of hits, with -L) in such a path, but that
logic does not apply to "git grep", i.e. searching in the working
tree files. But we did so by mistake, which has been corrected.

* nd/ita-cleanup:
grep: fix grepping for "intent to add" files
t7810-grep.sh: fix a whitespace inconsistency
t7810-grep.sh: fix duplicated test name

Merge branch 'js/find-commit-subject-ignore-leading... Junio C Hamano Thu, 28 Jul 2016 18:25:50 +0000 (11:25 -0700)

Merge branch 'js/find-commit-subject-ignore-leading-blanks' into maint

A helper function that takes the contents of a commit object and
finds its subject line did not ignore leading blank lines, as is
commonly done by other codepaths. Make it ignore leading blank
lines to match.

* js/find-commit-subject-ignore-leading-blanks:
reset --hard: skip blank lines when reporting the commit subject
sequencer: use skip_blank_lines() to find the commit subject
commit -C: skip blank lines at the beginning of the message
commit.c: make find_commit_subject() more robust
pretty: make the skip_blank_lines() function public

Merge branch 'dg/subtree-rebase-test' into maintJunio C Hamano Thu, 28 Jul 2016 18:25:49 +0000 (11:25 -0700)

Merge branch 'dg/subtree-rebase-test' into maint

Add a test to specify the desired behaviour that currently is not
available in "git rebase -Xsubtree=...".

* dg/subtree-rebase-test:
contrib/subtree: Add a test for subtree rebase that loses commits

Merge branch 'sb/submodule-deinit-all'Junio C Hamano Thu, 28 Jul 2016 17:34:45 +0000 (10:34 -0700)

Merge branch 'sb/submodule-deinit-all'

A comment update for a topic that was merged to Git v2.8.

* sb/submodule-deinit-all:
submodule deinit: remove outdated comment

Merge branch 'ew/find-perl-on-freebsd-in-local'Junio C Hamano Thu, 28 Jul 2016 17:34:44 +0000 (10:34 -0700)

Merge branch 'ew/find-perl-on-freebsd-in-local'

Recent FreeBSD stopped making perl available at /usr/bin/perl;
switch the default the built-in path to /usr/local/bin/perl on not
too ancient FreeBSD releases.

* ew/find-perl-on-freebsd-in-local:
config.mak.uname: correct perl path on FreeBSD

Merge branch 'ew/daemon-socket-keepalive'Junio C Hamano Thu, 28 Jul 2016 17:34:43 +0000 (10:34 -0700)

Merge branch 'ew/daemon-socket-keepalive'

Recent update to "git daemon" tries to enable the socket-level
KEEPALIVE, but when it is spawned via inetd, the standard input
file descriptor may not necessarily be connected to a socket.
Suppress an ENOTSOCK error from setsockopt().

* ew/daemon-socket-keepalive:
Windows: add missing definition of ENOTSOCK
daemon: ignore ENOTSOCK from setsockopt

Merge branch 'nd/pack-ofs-4gb-limit'Junio C Hamano Thu, 28 Jul 2016 17:34:42 +0000 (10:34 -0700)

Merge branch 'nd/pack-ofs-4gb-limit'

"git pack-objects" and "git index-pack" mostly operate with off_t
when talking about the offset of objects in a packfile, but there
were a handful of places that used "unsigned long" to hold that
value, leading to an unintended truncation.

* nd/pack-ofs-4gb-limit:
fsck: use streaming interface for large blobs in pack
pack-objects: do not truncate result in-pack object size on 32-bit systems
index-pack: correct "offset" type in unpack_entry_data()
index-pack: report correct bad object offsets even if they are large
index-pack: correct "len" type in unpack_data()
sha1_file.c: use type off_t* for object_info->disk_sizep
pack-objects: pass length to check_pack_crc() without truncation

Merge branch 'nd/worktree-lock'Junio C Hamano Thu, 28 Jul 2016 17:34:41 +0000 (10:34 -0700)

Merge branch 'nd/worktree-lock'

"git worktree prune" protected worktrees that are marked as
"locked" by creating a file in a known location. "git worktree"
command learned a dedicated command pair to create and remove such
a file, so that the users do not have to do this with editor.

* nd/worktree-lock:
worktree.c: find_worktree() search by path suffix
worktree: add "unlock" command
worktree: add "lock" command
worktree.c: add is_worktree_locked()
worktree.c: add is_main_worktree()
worktree.c: add find_worktree()

Merge branch 'rs/notes-merge-no-toctou'Junio C Hamano Thu, 28 Jul 2016 17:34:41 +0000 (10:34 -0700)

Merge branch 'rs/notes-merge-no-toctou'

"git notes merge" had a code to see if a path exists (and fails if
it does) and then open the path for writing (when it doesn't).
Replace it with open with O_EXCL.

* rs/notes-merge-no-toctou:
notes-merge: use O_EXCL to avoid overwriting existing files

Merge branch 'js/rebase-i-tests'Junio C Hamano Thu, 28 Jul 2016 17:34:40 +0000 (10:34 -0700)

Merge branch 'js/rebase-i-tests'

A few tests that specifically target "git rebase -i" have been
added.

* js/rebase-i-tests:
rebase -i: we allow extra spaces after fixup!/squash!
rebase -i: demonstrate a bug with --autosquash
t3404: add a test for the --gpg-sign option

i18n: config: unfold error messages marked for translationVasco Almeida Thu, 28 Jul 2016 13:14:03 +0000 (13:14 +0000)

i18n: config: unfold error messages marked for translation

Introduced in 473166b ("config: add 'origin_type' to config_source
struct", 2016-02-19), Git can inform the user about the origin of a
config error, but the implementation does not allow translators to
translate the keywords 'file', 'blob, 'standard input', and
'submodule-blob'. Moreover, for the second message, a reason for the
error is appended to the message, not allowing translators to translate
that reason either.

Unfold the message into several templates for each known origin_type.
That would result in better translation at the expense of code
verbosity.

Add enum config_oringin_type to ease management of the various
configuration origin types (blob, file, etc). Previously origin type
was considered from command line if cf->origin_type == NULL, i.e.,
uninitialized. Now we set origin_type to CONFIG_ORIGIN_CMDLINE in
git_config_from_parameters() and configset_add_value().

For error message in git_parse_source(), use xstrfmt() function to
prepare the message string, instead of doing something like it's done
for die_bad_number(), because intelligibility and code conciseness are
improved for that instance.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

i18n: notes: mark comment for translationVasco Almeida Thu, 28 Jul 2016 11:26:15 +0000 (11:26 +0000)

i18n: notes: mark comment for translation

Mark comment displayed when editing a note for translation.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

subtree: adjust function definitions to match CodingGui... David Aguilar Thu, 28 Jul 2016 00:16:50 +0000 (17:16 -0700)

subtree: adjust function definitions to match CodingGuidelines

We prefer a space between the function name and the parentheses, and no
space inside the parentheses.

The opening "{" should also be on the same line.

Suggested-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

subtree: adjust style to match CodingGuidelinesDavid Aguilar Thu, 28 Jul 2016 00:16:49 +0000 (17:16 -0700)

subtree: adjust style to match CodingGuidelines

Prefer "test" over "[ ... ]", use double-quotes around variables, break
long lines, and properly indent "case" statements.

Helped-by: Johannes Sixt <j6t@kdbg.org>
Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

date: clarify --date=raw descriptionJunio C Hamano Wed, 27 Jul 2016 20:07:29 +0000 (13:07 -0700)

date: clarify --date=raw description

"... in the internal raw Git format `%s %z` format." was clunky in
repeating "format" twice, and would not have helped those who do not
immediately get that these are strftime(3) conversion specifiers.

Explain them with words, and demote the mention of `%s %z` to a
hint to help those who know them.

Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

date: add "unix" formatJeff King Fri, 22 Jul 2016 19:51:49 +0000 (15:51 -0400)

date: add "unix" format

We already have "--date=raw", which is a Unix epoch
timestamp plus a contextual timezone (either the author's or
the local). But one may not care about the timezone and just
want the epoch timestamp by itself. It's not hard to parse
the two apart, but if you are using a pretty-print format,
you may want git to show the "finished" form that the user
will see.

We can accomodate this by adding a new date format, "unix",
which is basically "raw" without the timezone.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

date: document and test "raw-local" modeJeff King Wed, 27 Jul 2016 13:44:41 +0000 (09:44 -0400)

date: document and test "raw-local" mode

The "raw" format shows a Unix epoch timestamp, but with a
timezone tacked on. The timestamp is not _in_ that zone, but
it is extra information about the time (by default, the zone
the author was in).

The documentation claims that "raw-local" does not work. It
does, but the end result is rather subtle. Let's describe it
in better detail, and test to make sure it works (namely,
the epoch time doesn't change, but the zone does).

While we are rewording the documentation in this area, let's
not use the phrase "does not work" for the remaining option,
"--date=relative". It's vague; do we accept it or not? We do
accept it, but it has no effect (which is a reasonable
outcome). We should also refer to the option not as
"--relative" (which is the historical synonym, and does not
take "-local" at all), but as "--date=relative".

Helped-by: Jakub Narębski <jnareb@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4205: indent here documentsJeff King Wed, 27 Jul 2016 18:55:23 +0000 (14:55 -0400)

t4205: indent here documents

Our usual style in the test scripts is to indent here
documents with tabs, and use "<<-" to strip the tabs. The
result is easier to read.

This old test script did not do so in its inception, and
further tests added onto it followed the local style. Let's
bring it in line with our usual style.

Some of the tests actually care quite a bit about
whitespace, but none of them do so at the beginning of the
line (because they use things like qz_to_tab_space to avoid
depending on the literal whitespace), so we can do a fairly
mechanical conversion.

Most of the here-docs also use interpolation, so they have
been left as "<<-EOF". In a few cases, though, where
interpolation was not in use, I've converted them to
"<<-\EOF" to match our usual "don't interpolate unless you
need to" style.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4205: drop top-level &&-chainingJeff King Wed, 27 Jul 2016 18:55:02 +0000 (14:55 -0400)

t4205: drop top-level &&-chaining

The test currently does something like:

do_one() &&
do_two() &&
test_expect_success ...

We generally avoid performing actions at the top-level of
the script (outside of a test_expect block) for two reasons:

1. The test harness is not checking and reporting if they
fail.

2. Their output is not handled correctly (not hidden by
default, nor shown with "-v").

Using &&-chains seems like it should help with (1), but it
doesn't. If either of the commands fails, we simply skip
running the follow-on test entirely, and the test harness
has no idea.

We can fix this by pushing that setup into its own block.
It _could_ go into the following test block, but since the
result in this case is used by multiple tests, it's more
clear to mark it explicitly as a distinct setup step.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: add option '--recurse-submodules' to 'git... Chris Packham Wed, 27 Jul 2016 08:34:06 +0000 (20:34 +1200)

completion: add option '--recurse-submodules' to 'git clone'

Signed-off-by: Chris Packham <judge.packham@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

subtree: fix "git subtree split --rejoin"David Aguilar Tue, 26 Jul 2016 04:14:15 +0000 (21:14 -0700)

subtree: fix "git subtree split --rejoin"

"git merge" in v2.9 prevents merging unrelated histories.

"git subtree split --rejoin" creates unrelated histories when
creating a split repo from a raw sub-directory that did not
originate from an invocation of "git subtree add".

Restore the original behavior by passing --allow-unrelated-histories
when merging subtrees. This ensures that the synthetic history
created by "git subtree split" can be merged.

Add a test to ensure that this feature works as advertised.

Reported-by: Brett Cundal <brett.cundal@iugome.com>
Helped-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t7900-subtree.sh: fix quoting and broken && chainsDavid Aguilar Tue, 26 Jul 2016 04:14:14 +0000 (21:14 -0700)

t7900-subtree.sh: fix quoting and broken && chains

Allow whitespace in arguments to subtree_test_create_repo.
Add missing && chains.

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule deinit: remove outdated commentStefan Beller Tue, 26 Jul 2016 00:35:38 +0000 (17:35 -0700)

submodule deinit: remove outdated comment

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

commit: describe that --no-verify skips the commit... Orgad Shaneh Tue, 26 Jul 2016 14:00:15 +0000 (17:00 +0300)

commit: describe that --no-verify skips the commit-msg hook in the help text

This brings the short help in line with the documentation.

Signed-off-by: Orgad Shaneh <orgads@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t5510: skip tests under GETTEXT_POISON buildVasco Almeida Tue, 26 Jul 2016 12:58:54 +0000 (12:58 +0000)

t5510: skip tests under GETTEXT_POISON build

Skip tests when running under GETTEXT_POISON build and run them with
C_LOCALE_OUTPUT prerequisite.

These tests are irrelevant under GETTEXT_POISON because they test text
output alignment which GETTEXT_POISON turns useless.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

config.mak.uname: correct perl path on FreeBSDNguyễn Thái Ngọc Duy Mon, 25 Jul 2016 16:21:25 +0000 (18:21 +0200)

config.mak.uname: correct perl path on FreeBSD

It looks the the symlink /usr/bin/perl (to /usr/local/bin/perl) has
been removed at least on FreeBSD 10.3. See [1] for more information.

[1] https://svnweb.freebsd.org/ports/head/UPDATING?r1=386270&r2=386269&pathrev=386270&diff_format=c

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

Seventh batch of topics for 2.10Junio C Hamano Mon, 25 Jul 2016 21:17:28 +0000 (14:17 -0700)

Seventh batch of topics for 2.10

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

Merge branch 'rs/use-strbuf-addbuf'Junio C Hamano Mon, 25 Jul 2016 21:13:47 +0000 (14:13 -0700)

Merge branch 'rs/use-strbuf-addbuf'

Code cleanup.

* rs/use-strbuf-addbuf:
strbuf: avoid calling strbuf_grow() twice in strbuf_addbuf()
use strbuf_addbuf() for appending a strbuf to another

Merge branch 'ew/autoconf-pthread'Junio C Hamano Mon, 25 Jul 2016 21:13:46 +0000 (14:13 -0700)

Merge branch 'ew/autoconf-pthread'

Existing autoconf generated test for the need to link with pthread
library did not check all the functions from pthread libraries;
recent FreeBSD has some functions in libc but not others, and we
mistakenly thought linking with libc is enough when it is not.

* ew/autoconf-pthread:
configure.ac: stronger test for pthread linkage

Merge branch 'mh/blame-worktree'Junio C Hamano Mon, 25 Jul 2016 21:13:45 +0000 (14:13 -0700)

Merge branch 'mh/blame-worktree'

"git blame file" allowed the lineage of lines in the uncommitted,
unadded contents of "file" to be inspected, but it refused when
"file" did not appear in the current commit. When "file" was
created by renaming an existing file (but the change has not been
committed), this restriction was unnecessarily tight.

* mh/blame-worktree:
t/t8003-blame-corner-cases.sh: Use here documents
blame: allow to blame paths freshly added to the index

Merge branch 'js/fsck-name-object'Junio C Hamano Mon, 25 Jul 2016 21:13:44 +0000 (14:13 -0700)

Merge branch 'js/fsck-name-object'

When "git fsck" reports a broken link (e.g. a tree object contains
a blob that does not exist), both containing object and the object
that is referred to were reported with their 40-hex object names.
The command learned the "--name-objects" option to show the path to
the containing object from existing refs (e.g. "HEAD~24^2:file.txt").

* js/fsck-name-object:
fsck: optionally show more helpful info for broken links
fsck: give the error function a chance to see the fsck_options
fsck_walk(): optionally name objects on the go
fsck: refactor how to describe objects

Merge branch 'nd/cache-tree-ita'Junio C Hamano Mon, 25 Jul 2016 21:13:44 +0000 (14:13 -0700)

Merge branch 'nd/cache-tree-ita'

"git add -N dir/file && git write-tree" produced an incorrect tree
when there are other paths in the same directory that sorts after
"file".

* nd/cache-tree-ita:
cache-tree: do not generate empty trees as a result of all i-t-a subentries
cache-tree.c: fix i-t-a entry skipping directory updates sometimes
test-lib.sh: introduce and use $EMPTY_BLOB
test-lib.sh: introduce and use $EMPTY_TREE

Merge branch 'jk/push-scrub-url'Junio C Hamano Mon, 25 Jul 2016 21:13:43 +0000 (14:13 -0700)

Merge branch 'jk/push-scrub-url'

"git fetch http://user:pass@host/repo..." scrubbed the userinfo
part, but "git push" didn't.

* jk/push-scrub-url:
t5541: fix url scrubbing test when GPG is not set
push: anonymize URL in status output

Merge branch 'nd/test-helpers'Junio C Hamano Mon, 25 Jul 2016 21:13:42 +0000 (14:13 -0700)

Merge branch 'nd/test-helpers'

Build clean-up.

* nd/test-helpers:
t/test-lib.sh: fix running tests with --valgrind
Makefile: use VCSSVN_LIB to refer to svn library
Makefile: drop extra dependencies for test helpers

Merge branch 'jc/doc-diff-filter-exclude'Junio C Hamano Mon, 25 Jul 2016 21:13:41 +0000 (14:13 -0700)

Merge branch 'jc/doc-diff-filter-exclude'

Belated doc update for a feature added in v1.8.5.

* jc/doc-diff-filter-exclude:
diff: document diff-filter exclusion

Merge branch 'ls/travis-enable-httpd-tests'Junio C Hamano Mon, 25 Jul 2016 21:13:39 +0000 (14:13 -0700)

Merge branch 'ls/travis-enable-httpd-tests'

Allow http daemon tests in Travis CI tests.

* ls/travis-enable-httpd-tests:
travis-ci: enable web server tests t55xx on Linux

Merge branch 'jc/renormalize-merge-kill-safer-crlf'Junio C Hamano Mon, 25 Jul 2016 21:13:38 +0000 (14:13 -0700)

Merge branch 'jc/renormalize-merge-kill-safer-crlf'

"git merge" with renormalization did not work well with
merge-recursive, due to "safer crlf" conversion kicking in when it
shouldn't.

* jc/renormalize-merge-kill-safer-crlf:
merge: avoid "safer crlf" during recording of merge results
convert: unify the "auto" handling of CRLF

Merge branch 'rs/worktree-use-strbuf-absolute-path'Junio C Hamano Mon, 25 Jul 2016 21:13:37 +0000 (14:13 -0700)

Merge branch 'rs/worktree-use-strbuf-absolute-path'

Code simplification.

* rs/worktree-use-strbuf-absolute-path:
worktree: use strbuf_add_absolute_path() directly

Merge branch 'rs/rm-strbuf-optim'Junio C Hamano Mon, 25 Jul 2016 21:13:36 +0000 (14:13 -0700)

Merge branch 'rs/rm-strbuf-optim'

The use of strbuf in "git rm" to build filename to remove was a bit
suboptimal, which has been fixed.

* rs/rm-strbuf-optim:
rm: reuse strbuf for all remove_dir_recursively() calls

Merge branch 'rw/make-needs-librt'Junio C Hamano Mon, 25 Jul 2016 21:13:35 +0000 (14:13 -0700)

Merge branch 'rw/make-needs-librt'

Makefile assumed that -lrt is always available on platforms that
want to use clock_gettime() and CLOCK_MONOTONIC, which is not a
case for recent Mac OS X. The necessary symbols are often found in
libc on many modern systems and having -lrt on the command line, as
long as the library exists, had no effect, but when the platform
removes librt.a that is a different matter--having -lrt will break
the linkage.

This change could be seen as a regression for those who do need to
specify -lrt, as they now specifically ask for NEEDS_LIBRT when
building. Hopefully they are in the minority these days.

* rw/make-needs-librt:
config.mak.uname: define NEEDS_LIBRT under Linux, for now
Makefile: add NEEDS_LIBRT to optionally link with librt

Merge branch 'js/ignore-space-at-eol'Junio C Hamano Mon, 25 Jul 2016 21:13:35 +0000 (14:13 -0700)

Merge branch 'js/ignore-space-at-eol'

An age old bug that caused "git diff --ignore-space-at-eol"
misbehave has been fixed.

* js/ignore-space-at-eol:
diff: fix a double off-by-one with --ignore-space-at-eol
diff: demonstrate a bug with --patience and --ignore-space-at-eol

Merge branch 'mh/ref-iterators'Junio C Hamano Mon, 25 Jul 2016 21:13:33 +0000 (14:13 -0700)

Merge branch 'mh/ref-iterators'

The API to iterate over all the refs (i.e. for_each_ref(), etc.)
has been revamped.

* mh/ref-iterators:
for_each_reflog(): reimplement using iterators
dir_iterator: new API for iterating over a directory tree
for_each_reflog(): don't abort for bad references
do_for_each_ref(): reimplement using reference iteration
refs: introduce an iterator interface
ref_resolves_to_object(): new function
entry_resolves_to_object(): rename function from ref_resolves_to_object()
get_ref_cache(): only create an instance if there is a submodule
remote rm: handle symbolic refs correctly
delete_refs(): add a flags argument
refs: use name "prefix" consistently
do_for_each_ref(): move docstring to the header file
refs: remove unnecessary "extern" keywords

Merge branch 'mh/update-ref-errors'Junio C Hamano Mon, 25 Jul 2016 21:13:32 +0000 (14:13 -0700)

Merge branch 'mh/update-ref-errors'

Error handling in the codepaths that updates refs has been
improved.

* mh/update-ref-errors:
lock_ref_for_update(): avoid a symref resolution
lock_ref_for_update(): make error handling more uniform
t1404: add more tests of update-ref error handling
t1404: document function test_update_rejected
t1404: remove "prefix" argument to test_update_rejected
t1404: rename file to t1404-update-ref-errors.sh

Merge branch 'mh/split-under-lock'Junio C Hamano Mon, 25 Jul 2016 21:13:32 +0000 (14:13 -0700)

Merge branch 'mh/split-under-lock'

Further preparatory work on the refs API before the pluggable
backend series can land.

* mh/split-under-lock: (33 commits)
lock_ref_sha1_basic(): only handle REF_NODEREF mode
commit_ref_update(): remove the flags parameter
lock_ref_for_update(): don't resolve symrefs
lock_ref_for_update(): don't re-read non-symbolic references
refs: resolve symbolic refs first
ref_transaction_update(): check refname_is_safe() at a minimum
unlock_ref(): move definition higher in the file
lock_ref_for_update(): new function
add_update(): initialize the whole ref_update
verify_refname_available(): adjust constness in declaration
refs: don't dereference on rename
refs: allow log-only updates
delete_branches(): use resolve_refdup()
ref_transaction_commit(): correctly report close_ref() failure
ref_transaction_create(): disallow recursive pruning
refs: make error messages more consistent
lock_ref_sha1_basic(): remove unneeded local variable
read_raw_ref(): move docstring to header file
read_raw_ref(): improve docstring
read_raw_ref(): rename symref argument to referent
...

git svn: migrate tests to use lib-httpdEric Wong Sat, 23 Jul 2016 04:26:08 +0000 (04:26 +0000)

git svn: migrate tests to use lib-httpd

This allows us to use common test infrastructure and parallelize
the tests. For now, GIT_SVN_TEST_HTTPD=true needs to be set to
enable the SVN HTTP tests because we reuse the same test cases
for both file:// and http:// SVN repositories. SVN_HTTPD_PORT
is no longer honored.

Tested under Apache 2.2 and 2.4 on Debian 7.x (wheezy) and
8.x (jessie), respectively.

Cc: Clemens Buchacher <drizzd@aon.at>
Cc: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Eric Wong <e@80x24.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t/t91*: do not say how to avoid the testsMichael J Gruber Sat, 23 Jul 2016 04:26:07 +0000 (04:26 +0000)

t/t91*: do not say how to avoid the tests

Some of the tests "say" how to stop the svn tests from running, some do
not.

The test suite is directed at people reading t/README where we keep all
information about running the test suite (partly, with options etc.).

Remove said "say" occurences.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Eric Wong <e@80x24.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

grep: further simplify setting the pattern typeJunio C Hamano Fri, 22 Jul 2016 18:43:14 +0000 (11:43 -0700)

grep: further simplify setting the pattern type

When c5c31d33 (grep: move pattern-type bits support to top-level
grep.[ch], 2012-10-03) introduced grep_commit_pattern_type() helper
function, the intention was to allow the users of grep API to having
to fiddle only with .pattern_type_option (which can be set to "fixed",
"basic", "extended", and "pcre"), and then immediately before compiling
the pattern strings for use, call grep_commit_pattern_type() to have
it prepare various bits in the grep_opt structure (like .fixed,
.regflags, etc.).

However, grep_set_pattern_type_option() helper function the grep API
internally uses were left as an external function by mistake. This
function shouldn't have been made callable by the users of the API.

Later when the grep API was used in revision traversal machinery,
the caller then mistakenly started calling the function around
34a4ae55 (log --grep: use the same helper to set -E/-F options as
"git grep", 2012-10-03), instead of setting the .pattern_type_option
field and letting the grep_commit_pattern_type() to take care of the
details.

This caused an unnecessary bug that made a configured
grep.patternType take precedence over the command line options
(e.g. --basic-regexp, --fixed-strings) in "git log" family of
commands.

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

doc/pretty-formats: explain shortening of %gdJeff King Fri, 22 Jul 2016 19:51:41 +0000 (15:51 -0400)

doc/pretty-formats: explain shortening of %gd

The actual shortening rules aren't that interesting and
probably not worth getting into (I gloss over them here as
"shortened for human readability"). But the fact that %gD
shows whatever you gave on the command line is subtle and
worth mentioning. Since most people will feed a shortened
refname in the first place, it otherwise makes it hard to
understand the difference between the two.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>