git
8 years agoMerge branch 'rs/merge-add-strategies-simplification'
Junio C Hamano [Fri, 12 Aug 2016 16:47:36 +0000 (09:47 -0700)] 
Merge branch 'rs/merge-add-strategies-simplification'

A small code clean-up.

* rs/merge-add-strategies-simplification:
  merge: use string_list_split() in add_strategies()

8 years agoMerge branch 'rs/child-process-init'
Junio C Hamano [Fri, 12 Aug 2016 16:47:36 +0000 (09:47 -0700)] 
Merge branch 'rs/child-process-init'

A small code clean-up.

* rs/child-process-init:
  use CHILD_PROCESS_INIT to initialize automatic variables

8 years agoMerge branch 'js/import-tars-hardlinks'
Junio C Hamano [Fri, 12 Aug 2016 16:47:36 +0000 (09:47 -0700)] 
Merge branch 'js/import-tars-hardlinks'

"import-tars" fast-import script (in contrib/) used to ignore a
hardlink target and replaced it with an empty file, which has been
corrected to record the same blob as the other file the hardlink is
shared with.

* js/import-tars-hardlinks:
  import-tars: support hard links

8 years agoMerge branch 'ms/document-pack-window-memory-is-per-thread'
Junio C Hamano [Fri, 12 Aug 2016 16:47:35 +0000 (09:47 -0700)] 
Merge branch 'ms/document-pack-window-memory-is-per-thread'

* ms/document-pack-window-memory-is-per-thread:
  document git-repack interaction of pack.threads and pack.windowMemory

8 years agoMerge branch 'vs/completion-branch-fully-spelled-d-m-r'
Junio C Hamano [Fri, 12 Aug 2016 16:47:35 +0000 (09:47 -0700)] 
Merge branch 'vs/completion-branch-fully-spelled-d-m-r'

* vs/completion-branch-fully-spelled-d-m-r:
  completion: complete --delete, --move, and --remotes for git branch

8 years agoMerge branch 'sb/submodule-clone-retry'
Junio C Hamano [Fri, 12 Aug 2016 16:47:34 +0000 (09:47 -0700)] 
Merge branch 'sb/submodule-clone-retry'

Fix-up to an error codepath in a topic already in 'master'.

* sb/submodule-clone-retry:
  submodule--helper: use parallel processor correctly

8 years agoSync with maint
Junio C Hamano [Wed, 10 Aug 2016 19:38:02 +0000 (12:38 -0700)] 
Sync with maint

* maint:
  Yet another batch for 2.9.3

8 years agoTwelfth batch for 2.10
Junio C Hamano [Wed, 10 Aug 2016 19:35:40 +0000 (12:35 -0700)] 
Twelfth batch for 2.10

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'sb/submodule-update-dot-branch'
Junio C Hamano [Wed, 10 Aug 2016 19:33:20 +0000 (12:33 -0700)] 
Merge branch 'sb/submodule-update-dot-branch'

A few updates to "git submodule update".

Use of "| wc -l" break with BSD variant of 'wc'.

* sb/submodule-update-dot-branch:
  t7406: fix breakage on OSX
  submodule update: allow '.' for branch value
  submodule--helper: add remote-branch helper
  submodule-config: keep configured branch around
  submodule--helper: fix usage string for relative-path
  submodule update: narrow scope of local variable
  submodule update: respect depth in subsequent fetches
  t7406: future proof tests with hard coded depth

8 years agoMerge branch 'js/am-3-merge-recursive-direct'
Junio C Hamano [Wed, 10 Aug 2016 19:33:20 +0000 (12:33 -0700)] 
Merge branch 'js/am-3-merge-recursive-direct'

"git am -3" calls "git merge-recursive" when it needs to fall back
to a three-way merge; this call has been turned into an internal
subroutine call instead of spawning a separate subprocess.

* js/am-3-merge-recursive-direct:
  merge-recursive: flush output buffer even when erroring out
  merge_trees(): ensure that the callers release output buffer
  merge-recursive: offer an option to retain the output in 'obuf'
  merge-recursive: write the commit title in one go
  merge-recursive: flush output buffer before printing error messages
  am -3: use merge_recursive() directly again
  merge-recursive: switch to returning errors instead of dying
  merge-recursive: handle return values indicating errors
  merge-recursive: allow write_tree_from_memory() to error out
  merge-recursive: avoid returning a wholesale struct
  merge_recursive: abort properly upon errors
  prepare the builtins for a libified merge_recursive()
  merge-recursive: clarify code in was_tracked()
  die(_("BUG")): avoid translating bug messages
  die("bug"): report bugs consistently
  t5520: verify that `pull --rebase` shows the helpful advice when failing

8 years agoMerge branch 'js/commit-slab-decl-fix'
Junio C Hamano [Wed, 10 Aug 2016 19:33:20 +0000 (12:33 -0700)] 
Merge branch 'js/commit-slab-decl-fix'

* js/commit-slab-decl-fix:
  commit-slab.h: avoid duplicated global static variables
  config.c: avoid duplicated global static variables

8 years agoMerge branch 'jk/completion-diff-submodule'
Junio C Hamano [Wed, 10 Aug 2016 19:33:19 +0000 (12:33 -0700)] 
Merge branch 'jk/completion-diff-submodule'

* jk/completion-diff-submodule:
  completion: add completion for --submodule=* diff option

8 years agoMerge branch 'cc/mailmap-tuxfamily'
Junio C Hamano [Wed, 10 Aug 2016 19:33:18 +0000 (12:33 -0700)] 
Merge branch 'cc/mailmap-tuxfamily'

* cc/mailmap-tuxfamily:
  .mailmap: use Christian Couder's Tuxfamily address

8 years agoMerge branch 'jt/format-patch-from-config'
Junio C Hamano [Wed, 10 Aug 2016 19:33:18 +0000 (12:33 -0700)] 
Merge branch 'jt/format-patch-from-config'

"git format-patch" learned format.from configuration variable to
specify the default settings for its "--from" option.

* jt/format-patch-from-config:
  format-patch: format.from gives the default for --from

8 years agoMerge branch 'jk/push-force-with-lease-creation'
Junio C Hamano [Wed, 10 Aug 2016 19:33:18 +0000 (12:33 -0700)] 
Merge branch 'jk/push-force-with-lease-creation'

"git push --force-with-lease" already had enough logic to allow
ensuring that such a push results in creation of a ref (i.e. the
receiving end did not have another push from sideways that would be
discarded by our force-pushing), but didn't expose this possibility
to the users.  It does so now.

* jk/push-force-with-lease-creation:
  t5533: make it pass on case-sensitive filesystems
  push: allow pushing new branches with --force-with-lease
  push: add shorthand for --force-with-lease branch creation
  Documentation/git-push: fix placeholder formatting

8 years agoMerge branch 'jk/reset-ident-time-per-commit'
Junio C Hamano [Wed, 10 Aug 2016 19:33:17 +0000 (12:33 -0700)] 
Merge branch 'jk/reset-ident-time-per-commit'

Not-so-recent rewrite of "git am" that started making internal
calls into the commit machinery had an unintended regression, in
that no matter how many seconds it took to apply many patches, the
resulting committer timestamp for the resulting commits were all
the same.

* jk/reset-ident-time-per-commit:
  am: reset cached ident date for each patch

8 years agoYet another batch for 2.9.3
Junio C Hamano [Wed, 10 Aug 2016 18:56:56 +0000 (11:56 -0700)] 
Yet another batch for 2.9.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'jh/clean-smudge-f-doc' into maint
Junio C Hamano [Wed, 10 Aug 2016 18:55:34 +0000 (11:55 -0700)] 
Merge branch 'jh/clean-smudge-f-doc' into maint

A minor documentation update.

This was split out from a stalled jh/clean-smudge-annex topic
before discarding it.

* jh/clean-smudge-f-doc:
  clarify %f documentation

8 years agoMerge branch 'rs/use-strbuf-addstr' into maint
Junio C Hamano [Wed, 10 Aug 2016 18:55:33 +0000 (11:55 -0700)] 
Merge branch 'rs/use-strbuf-addstr' into maint

* rs/use-strbuf-addstr:
  use strbuf_addstr() instead of strbuf_addf() with "%s"
  use strbuf_addstr() for adding constant strings to a strbuf

8 years agoMerge branch 'cp/completion-clone-recurse-submodules' into maint
Junio C Hamano [Wed, 10 Aug 2016 18:55:33 +0000 (11:55 -0700)] 
Merge branch 'cp/completion-clone-recurse-submodules' into maint

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

8 years agoMerge branch 'jk/t4205-cleanup' into maint
Junio C Hamano [Wed, 10 Aug 2016 18:55:32 +0000 (11:55 -0700)] 
Merge branch 'jk/t4205-cleanup' into maint

Test modernization.

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

8 years agoMerge branch 'jc/hashmap-doc-init' into maint
Junio C Hamano [Wed, 10 Aug 2016 18:55:31 +0000 (11:55 -0700)] 
Merge branch 'jc/hashmap-doc-init' into maint

The API documentation for hashmap was unclear if hashmap_entry
can be safely discarded without any other consideration.  State
that it is safe to do so.

* jc/hashmap-doc-init:
  hashmap: clarify that hashmap_entry can safely be discarded

8 years agoMerge branch 'js/nedmalloc-gcc6-warnings' into maint
Junio C Hamano [Wed, 10 Aug 2016 18:55:31 +0000 (11:55 -0700)] 
Merge branch 'js/nedmalloc-gcc6-warnings' into maint

Squelch compiler warnings for netmalloc (in compat/) library.

* js/nedmalloc-gcc6-warnings:
  nedmalloc: work around overzealous GCC 6 warning
  nedmalloc: fix misleading indentation

8 years agoMerge branch 'nd/fbsd-lazy-mtime' into maint
Junio C Hamano [Wed, 10 Aug 2016 18:55:30 +0000 (11:55 -0700)] 
Merge branch 'nd/fbsd-lazy-mtime' into maint

FreeBSD can lie when asked mtime of a directory, which made the
untracked cache code to fall back to a slow-path, which in turn
caused tests in t7063 to fail because it wanted to verify the
behaviour of the fast-path.

* nd/fbsd-lazy-mtime:
  t7063: work around FreeBSD's lazy mtime update feature

8 years agoMerge branch 'ab/gitweb-link-html-escape' into maint
Junio C Hamano [Wed, 10 Aug 2016 18:55:30 +0000 (11:55 -0700)] 
Merge branch 'ab/gitweb-link-html-escape' into maint

The characters in the label shown for tags/refs for commits in
"gitweb" output are now properly escaped for proper HTML output.

* ab/gitweb-link-html-escape:
  gitweb: escape link body in format_ref_marker

8 years agoMerge branch 'js/t4130-rename-without-ino' into maint
Junio C Hamano [Wed, 10 Aug 2016 18:55:29 +0000 (11:55 -0700)] 
Merge branch 'js/t4130-rename-without-ino' into maint

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

8 years agoMerge branch 'jc/grep-commandline-vs-configuration' into maint
Junio C Hamano [Wed, 10 Aug 2016 18:55:29 +0000 (11:55 -0700)] 
Merge branch 'jc/grep-commandline-vs-configuration' into maint

"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

8 years agoMerge branch 'jk/diff-do-not-reuse-wtf-needs-cleaning' into maint
Junio C Hamano [Wed, 10 Aug 2016 18:55:28 +0000 (11:55 -0700)] 
Merge branch 'jk/diff-do-not-reuse-wtf-needs-cleaning' into maint

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

8 years agoMerge branch 'pm/build-persistent-https-with-recent-go' into maint
Junio C Hamano [Wed, 10 Aug 2016 18:55:27 +0000 (11:55 -0700)] 
Merge branch 'pm/build-persistent-https-with-recent-go' into maint

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+

8 years agoMerge branch 'da/subtree-2.9-regression' into maint
Junio C Hamano [Wed, 10 Aug 2016 18:55:26 +0000 (11:55 -0700)] 
Merge branch 'da/subtree-2.9-regression' into maint

"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

8 years agoMerge branch 'os/no-verify-skips-commit-msg-too' into maint
Junio C Hamano [Wed, 10 Aug 2016 18:55:25 +0000 (11:55 -0700)] 
Merge branch 'os/no-verify-skips-commit-msg-too' into maint

"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

8 years agoMerge branch 'rs/rm-strbuf-optim' into maint
Junio C Hamano [Wed, 10 Aug 2016 18:55:24 +0000 (11:55 -0700)] 
Merge branch 'rs/rm-strbuf-optim' into maint

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

8 years agoMerge branch 'jk/parse-options-concat' into maint
Junio C Hamano [Wed, 10 Aug 2016 18:55:23 +0000 (11:55 -0700)] 
Merge branch 'jk/parse-options-concat' into maint

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

8 years agoMerge branch 'ls/travis-enable-httpd-tests' into maint
Junio C Hamano [Wed, 10 Aug 2016 18:55:22 +0000 (11:55 -0700)] 
Merge branch 'ls/travis-enable-httpd-tests' into maint

Allow http daemon tests in Travis CI tests.

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

8 years agoMerge branch 'ew/autoconf-pthread' into maint
Junio C Hamano [Wed, 10 Aug 2016 18:55:20 +0000 (11:55 -0700)] 
Merge branch 'ew/autoconf-pthread' into maint

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

8 years agoMerge branch 'rs/help-c-source-with-gitattributes' into maint
Junio C Hamano [Wed, 10 Aug 2016 18:55:19 +0000 (11:55 -0700)] 
Merge branch 'rs/help-c-source-with-gitattributes' into maint

The .c/.h sources are marked as such in our .gitattributes file so
that "git diff -W" and friends would work better.

* rs/help-c-source-with-gitattributes:
  .gitattributes: set file type for C files

8 years agoMerge branch 'mm/status-suggest-merge-abort' into maint
Junio C Hamano [Wed, 10 Aug 2016 18:55:19 +0000 (11:55 -0700)] 
Merge branch 'mm/status-suggest-merge-abort' into maint

"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

8 years agot7406: fix breakage on OSX
Stefan Beller [Wed, 10 Aug 2016 17:56:07 +0000 (10:56 -0700)] 
t7406: fix breakage on OSX

On OSX `wc` prefixes the output of numbers with whitespace, such
that the `commit_count` would be "SP <NUMBER>". When using that in

    git submodule update --init --depth=$commit_count

the depth would be empty and the number is interpreted as the
pathspec.  Fix this by not using `wc` and rather instruct rev-list
to count.

Another way to fix this is to remove the `=` sign after the
`--depth` argument as then we are allowed to have more than just one
whitespace between `--depth` and the actual number.  Prefer the
solution of rev-list counting as that is expected to be slightly
faster and more self-contained within Git.

Reported-by: Lars Schneider <larsxschneider@gmail.com>
Helped-by: Junio C Hamano <gitster@pobox.com>,
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agodocument git-repack interaction of pack.threads and pack.windowMemory
Michael Stahl [Wed, 10 Aug 2016 10:39:35 +0000 (12:39 +0200)] 
document git-repack interaction of pack.threads and pack.windowMemory

Signed-off-by: Michael Stahl <mstahl@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agosubmodule--helper: use parallel processor correctly
Stefan Beller [Tue, 9 Aug 2016 21:29:13 +0000 (14:29 -0700)] 
submodule--helper: use parallel processor correctly

When developing another patch series I had a temporary state in
which git-clone would segfault, when the call was prepared in
prepare_to_clone_next_submodule. This lead to the call failing,
i.e. in `update_clone_task_finished` the task was scheduled to be
tried again.  The second call to prepare_to_clone_next_submodule
would return 0, as the segfaulted clone did create the .git file
already, such that was not considered to need to be cloned again. I
was seeing the "BUG: ce was a submodule before?\n" message, which
was the correct behavior at the time as my local code was
buggy. When trying to debug this failure, I tried to use printing
messages into the strbuf that is passed around, but these messages
were never printed as the die(..) doesn't flush the `err` strbuf.

When implementing the die() in 665b35ecc (2016-06-09, "submodule--helper:
initial clone learns retry logic"), I considered this condition to be
a severe condition, which should lead to an immediate abort as we do not
trust ourselves any more. However the queued messages in `err` are valuable
so let's not toss them out by immediately dying, but a graceful return.

Another thing to note: The error message itself was misleading. A return
value of 0 doesn't indicate the passed in `ce` is not a submodule any more,
but just that we do not consider cloning it any more.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agocompletion: add completion for --submodule=* diff option
Jacob Keller [Tue, 9 Aug 2016 18:34:46 +0000 (11:34 -0700)] 
completion: add completion for --submodule=* diff option

Teach git-completion.bash to complete --submodule= for git commands
which take diff options. Also teach completion for git-log to support
--diff-algorithms as well.

Signed-off-by: Jacob Keller <jacob.keller@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agocompletion: complete --delete, --move, and --remotes for git branch
Ville Skyttä [Tue, 9 Aug 2016 09:34:44 +0000 (12:34 +0300)] 
completion: complete --delete, --move, and --remotes for git branch

Signed-off-by: Ville Skyttä <ville.skytta@iki.fi>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agocommit-slab.h: avoid duplicated global static variables
Johannes Sixt [Tue, 9 Aug 2016 14:17:56 +0000 (16:17 +0200)] 
commit-slab.h: avoid duplicated global static variables

The gigantic define_commit_slab() macro repeats the definition of a
static variable that occurs earlier in the macro text. The purpose of
the repeated definition at the end of the macro is that it takes the
semicolon that occurs where the macro is used.

We cannot just remove the first definition of the variable because it
is referenced elsewhere in the macro text, and defining the macro later
would produce undefined identifier errors. We cannot have a "forward"
declaration, either. (This works only with "extern" global variables.)

The solution is to use a declaration of a struct that is already defined
earlier. This language construct can serve the same purpose as the
duplicated static variable definition, but without the confusion.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoconfig.c: avoid duplicated global static variables
Johannes Sixt [Tue, 9 Aug 2016 14:16:33 +0000 (16:16 +0200)] 
config.c: avoid duplicated global static variables

Repeating the definition of a static variable seems to be valid in C.
Nevertheless, it is bad style because it can cause confusion, definitely
when it becomes necessary to change the type.

d64ec16 (git config: reorganize to use parseopt, 2009-02-21) added two
static variables near the top of the file config.c without removing the
definitions of the two variables that occurs later in the file.

The two variables were needed earlier in the file in the newly
introduced parseopt structure. These references were removed later in
d0e08d6 (config: fix parsing of "git config --get-color some.key -1",
2014-11-20).

Remove the redundant, younger, definitions near the top of the file and
keep the original definitions that occur later.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years ago.mailmap: use Christian Couder's Tuxfamily address
Christian Couder [Mon, 8 Aug 2016 21:17:22 +0000 (23:17 +0200)] 
.mailmap: use Christian Couder's Tuxfamily address

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoSync with maint
Junio C Hamano [Mon, 8 Aug 2016 21:52:17 +0000 (14:52 -0700)] 
Sync with maint

* maint:
  Hopefully final batch for 2.9.3

8 years agoEleventh batch for 2.10
Junio C Hamano [Mon, 8 Aug 2016 21:52:08 +0000 (14:52 -0700)] 
Eleventh batch for 2.10

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'jc/hashmap-doc-init'
Junio C Hamano [Mon, 8 Aug 2016 21:48:45 +0000 (14:48 -0700)] 
Merge branch 'jc/hashmap-doc-init'

The API documentation for hashmap was unclear if hashmap_entry
can be safely discarded without any other consideration.  State
that it is safe to do so.

* jc/hashmap-doc-init:
  hashmap: clarify that hashmap_entry can safely be discarded

8 years agoMerge branch 'ew/build-time-pager-tweaks'
Junio C Hamano [Mon, 8 Aug 2016 21:48:44 +0000 (14:48 -0700)] 
Merge branch 'ew/build-time-pager-tweaks'

The build procedure learned PAGER_ENV knob that lists what default
environment variable settings to export for popular pagers.  This
mechanism is used to tweak the default settings to MORE on FreeBSD.

* ew/build-time-pager-tweaks:
  pager: move pager-specific setup into the build

8 years agoMerge branch 'sb/submodule-recommend-shallowness'
Junio C Hamano [Mon, 8 Aug 2016 21:48:44 +0000 (14:48 -0700)] 
Merge branch 'sb/submodule-recommend-shallowness'

Doc update.

* sb/submodule-recommend-shallowness:
  gitmodules: document shallow recommendation

8 years agoMerge branch 'jk/parseopt-string-list'
Junio C Hamano [Mon, 8 Aug 2016 21:48:43 +0000 (14:48 -0700)] 
Merge branch 'jk/parseopt-string-list'

A small memory leak in the command line parsing of "git blame"
has been plugged.

* jk/parseopt-string-list:
  blame: drop strdup of string literal

8 years agoMerge branch 'jh/clean-smudge-f-doc'
Junio C Hamano [Mon, 8 Aug 2016 21:48:43 +0000 (14:48 -0700)] 
Merge branch 'jh/clean-smudge-f-doc'

A minor documentation update.

* jh/clean-smudge-f-doc:
  clarify %f documentation

8 years agoMerge branch 'js/nedmalloc-gcc6-warnings'
Junio C Hamano [Mon, 8 Aug 2016 21:48:42 +0000 (14:48 -0700)] 
Merge branch 'js/nedmalloc-gcc6-warnings'

Squelch compiler warnings for netmalloc (in compat/) library.

* js/nedmalloc-gcc6-warnings:
  nedmalloc: work around overzealous GCC 6 warning
  nedmalloc: fix misleading indentation

8 years agoMerge branch 'nd/fbsd-lazy-mtime'
Junio C Hamano [Mon, 8 Aug 2016 21:48:42 +0000 (14:48 -0700)] 
Merge branch 'nd/fbsd-lazy-mtime'

FreeBSD can lie when asked mtime of a directory, which made the
untracked cache code to fall back to a slow-path, which in turn
caused tests in t7063 to fail because it wanted to verify the
behaviour of the fast-path.

* nd/fbsd-lazy-mtime:
  t7063: work around FreeBSD's lazy mtime update feature

8 years agoMerge branch 'nd/log-decorate-color-head-arrow'
Junio C Hamano [Mon, 8 Aug 2016 21:48:42 +0000 (14:48 -0700)] 
Merge branch 'nd/log-decorate-color-head-arrow'

An entry "git log --decorate" for the tip of the current branch is
shown as "HEAD -> name" (where "name" is the name of the branch);
paint the arrow in the same color as "HEAD", not in the color for
commits.

* nd/log-decorate-color-head-arrow:
  log: decorate HEAD -> branch with the same color for arrow and HEAD

8 years agoMerge branch 'rs/use-strbuf-addstr'
Junio C Hamano [Mon, 8 Aug 2016 21:48:41 +0000 (14:48 -0700)] 
Merge branch 'rs/use-strbuf-addstr'

* rs/use-strbuf-addstr:
  use strbuf_addstr() instead of strbuf_addf() with "%s"
  use strbuf_addstr() for adding constant strings to a strbuf

8 years agoMerge branch 'rs/st-mult'
Junio C Hamano [Mon, 8 Aug 2016 21:48:41 +0000 (14:48 -0700)] 
Merge branch 'rs/st-mult'

Micro optimization of st_mult() facility used to check the integer
overflow coming from multiplication to compute size of memory
allocation.

* rs/st-mult:
  pass constants as first argument to st_mult()

8 years agoMerge branch 'ib/t3700-add-chmod-x-updates'
Junio C Hamano [Mon, 8 Aug 2016 21:48:40 +0000 (14:48 -0700)] 
Merge branch 'ib/t3700-add-chmod-x-updates'

The t3700 test about "add --chmod=-x" have been made a bit more
robust and generally cleaned up.

* ib/t3700-add-chmod-x-updates:
  t3700: add a test_mode_in_index helper function
  t3700: merge two tests into one
  t3700: remove unwanted leftover files before running new tests

8 years agoMerge branch 'ab/gitweb-link-html-escape'
Junio C Hamano [Mon, 8 Aug 2016 21:48:40 +0000 (14:48 -0700)] 
Merge branch 'ab/gitweb-link-html-escape'

The characters in the label shown for tags/refs for commits in
"gitweb" output are now properly escaped for proper HTML output.

* ab/gitweb-link-html-escape:
  gitweb: escape link body in format_ref_marker

8 years agoMerge branch 'jk/pack-objects-optim'
Junio C Hamano [Mon, 8 Aug 2016 21:48:39 +0000 (14:48 -0700)] 
Merge branch 'jk/pack-objects-optim'

"git pack-objects" has a few options that tell it not to pack
objects found in certain packfiles, which require it to scan .idx
files of all available packs.  The codepaths involved in these
operations have been optimized for a common case of not having any
non-local pack and/or any .kept pack.

* jk/pack-objects-optim:
  pack-objects: compute local/ignore_pack_keep early
  pack-objects: break out of want_object loop early
  find_pack_entry: replace last_found_pack with MRU cache
  add generic most-recently-used list
  sha1_file: drop free_pack_by_name
  t/perf: add tests for many-pack scenarios

8 years agoMerge 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

8 years agoMerge 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

8 years agoMerge 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

8 years agoMerge 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

8 years agoMerge 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'

8 years agoMerge 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

8 years agoMerge 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

8 years agoMerge 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

8 years agoMerge 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

8 years agoMerge 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

8 years agoHopefully final batch for 2.9.3
Junio C Hamano [Mon, 8 Aug 2016 21:22:36 +0000 (14:22 -0700)] 
Hopefully final batch for 2.9.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'sb/pack-protocol-doc-nak' into maint
Junio C Hamano [Mon, 8 Aug 2016 21:21:47 +0000 (14:21 -0700)] 
Merge branch 'sb/pack-protocol-doc-nak' into maint

A doc update.

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

8 years agoMerge branch 'rs/submodule-config-code-cleanup' into maint
Junio C Hamano [Mon, 8 Aug 2016 21:21:46 +0000 (14:21 -0700)] 
Merge branch 'rs/submodule-config-code-cleanup' into maint

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()

8 years agoMerge branch 'sb/submodule-deinit-all' into maint
Junio C Hamano [Mon, 8 Aug 2016 21:21:46 +0000 (14:21 -0700)] 
Merge branch 'sb/submodule-deinit-all' into maint

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

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

8 years agoMerge branch 'rs/worktree-use-strbuf-absolute-path' into maint
Junio C Hamano [Mon, 8 Aug 2016 21:21:45 +0000 (14:21 -0700)] 
Merge branch 'rs/worktree-use-strbuf-absolute-path' into maint

Code simplification.

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

8 years agoMerge branch 'jc/doc-diff-filter-exclude' into maint
Junio C Hamano [Mon, 8 Aug 2016 21:21:44 +0000 (14:21 -0700)] 
Merge branch 'jc/doc-diff-filter-exclude' into maint

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

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

8 years agoMerge branch 'nd/test-helpers' into maint
Junio C Hamano [Mon, 8 Aug 2016 21:21:43 +0000 (14:21 -0700)] 
Merge branch 'nd/test-helpers' into maint

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

8 years agoMerge branch 'rs/use-strbuf-addbuf' into maint
Junio C Hamano [Mon, 8 Aug 2016 21:21:42 +0000 (14:21 -0700)] 
Merge branch 'rs/use-strbuf-addbuf' into maint

Code cleanup.

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

8 years agoMerge branch 'lf/recv-sideband-cleanup' into maint
Junio C Hamano [Mon, 8 Aug 2016 21:21:41 +0000 (14:21 -0700)] 
Merge branch 'lf/recv-sideband-cleanup' into maint

Code simplification.

* lf/recv-sideband-cleanup:
  sideband.c: small optimization of strbuf usage
  sideband.c: refactor recv_sideband()

8 years agoMerge branch 'ah/unpack-trees-advice-messages' into maint
Junio C Hamano [Mon, 8 Aug 2016 21:21:40 +0000 (14:21 -0700)] 
Merge branch 'ah/unpack-trees-advice-messages' into maint

Grammofix.

* ah/unpack-trees-advice-messages:
  unpack-trees: fix English grammar in do-this-before-that messages

8 years agoMerge branch 'lf/sideband-returns-void' into maint
Junio C Hamano [Mon, 8 Aug 2016 21:21:39 +0000 (14:21 -0700)] 
Merge branch 'lf/sideband-returns-void' into maint

A small internal API cleanup.

* lf/sideband-returns-void:
  upload-pack.c: make send_client_data() return void
  sideband.c: make send_sideband() return void

8 years agoMerge branch 'jk/send-pack-stdio' into maint
Junio C Hamano [Mon, 8 Aug 2016 21:21:39 +0000 (14:21 -0700)] 
Merge branch 'jk/send-pack-stdio' into maint

Code clean-up.

* jk/send-pack-stdio:
  write_or_die: remove the unused write_or_whine() function
  send-pack: use buffered I/O to talk to pack-objects

8 years agoMerge branch 'pb/commit-editmsg-path' into maint
Junio C Hamano [Mon, 8 Aug 2016 21:21:38 +0000 (14:21 -0700)] 
Merge branch 'pb/commit-editmsg-path' into maint

Code clean-up.

* pb/commit-editmsg-path:
  builtin/commit.c: memoize git-path for COMMIT_EDITMSG

8 years agoMerge branch 'ew/find-perl-on-freebsd-in-local' into maint
Junio C Hamano [Mon, 8 Aug 2016 21:21:37 +0000 (14:21 -0700)] 
Merge branch 'ew/find-perl-on-freebsd-in-local' into maint

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

8 years agoMerge branch 'ew/daemon-socket-keepalive' into maint
Junio C Hamano [Mon, 8 Aug 2016 21:21:37 +0000 (14:21 -0700)] 
Merge branch 'ew/daemon-socket-keepalive' into maint

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

8 years agoMerge branch 'nd/pack-ofs-4gb-limit' into maint
Junio C Hamano [Mon, 8 Aug 2016 21:21:36 +0000 (14:21 -0700)] 
Merge branch 'nd/pack-ofs-4gb-limit' into maint

"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

8 years agoMerge branch 'rs/notes-merge-no-toctou' into maint
Junio C Hamano [Mon, 8 Aug 2016 21:21:35 +0000 (14:21 -0700)] 
Merge branch 'rs/notes-merge-no-toctou' into maint

"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

8 years agoMerge branch 'js/ignore-space-at-eol' into maint
Junio C Hamano [Mon, 8 Aug 2016 21:21:35 +0000 (14:21 -0700)] 
Merge branch 'js/ignore-space-at-eol' into maint

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

8 years agoMerge branch 'jk/push-scrub-url' into maint
Junio C Hamano [Mon, 8 Aug 2016 21:21:34 +0000 (14:21 -0700)] 
Merge branch 'jk/push-scrub-url' into maint

"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

8 years agoMerge branch 'nd/cache-tree-ita' into maint
Junio C Hamano [Mon, 8 Aug 2016 21:21:32 +0000 (14:21 -0700)] 
Merge branch 'nd/cache-tree-ita' into maint

"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

8 years agoMerge branch 'mh/blame-worktree' into maint
Junio C Hamano [Mon, 8 Aug 2016 21:21:32 +0000 (14:21 -0700)] 
Merge branch 'mh/blame-worktree' into maint

"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

8 years agonedmalloc: work around overzealous GCC 6 warning
René Scharfe [Thu, 4 Aug 2016 21:56:54 +0000 (23:56 +0200)] 
nedmalloc: work around overzealous GCC 6 warning

With GCC 6, the strdup() function is declared with the "nonnull"
attribute, stating that it is not allowed to pass a NULL value as
parameter.

In nedmalloc()'s reimplementation of strdup(), Postel's Law is heeded
and NULL parameters are handled gracefully. GCC 6 complains about that
now because it thinks that NULL cannot be passed to strdup() anyway.

Because the callers in this project of strdup() must be prepared to
call any implementation of strdup() supplied by the platform, so it
is pointless to pretend that it is OK to call it with NULL.

Remove the conditional based on NULL-ness of the input; this
squelches the warning.  Check the return value of malloc() instead
to make sure we actually got the memory to write to.

See https://gcc.gnu.org/gcc-6/porting_to.html for details.

Diagnosed-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agomerge: use string_list_split() in add_strategies()
René Scharfe [Fri, 5 Aug 2016 21:01:35 +0000 (23:01 +0200)] 
merge: use string_list_split() in add_strategies()

Call string_list_split() for cutting a space separated list into pieces
instead of reimplementing it based on struct strategy.  The attr member
of struct strategy was not used split_merge_strategies(); it was a pure
string operation.  Also be nice and clean up once we're done splitting;
the old code didn't bother freeing any of the allocated memory.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agouse CHILD_PROCESS_INIT to initialize automatic variables
René Scharfe [Fri, 5 Aug 2016 20:38:44 +0000 (22:38 +0200)] 
use CHILD_PROCESS_INIT to initialize automatic variables

Initialize struct child_process variables already when they're defined.
That's shorter and saves a function call.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agouse strbuf_addstr() instead of strbuf_addf() with "%s"
René Scharfe [Fri, 5 Aug 2016 20:37:11 +0000 (22:37 +0200)] 
use strbuf_addstr() instead of strbuf_addf() with "%s"

Call strbuf_addstr() for adding a simple string to a strbuf instead of
using the heavier strbuf_addf().  This is shorter and documents the
intent more clearly.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoTenth batch for 2.10
Junio 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>
8 years agoMerge 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

8 years agoMerge 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

8 years agoMerge 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

8 years agopager: move pager-specific setup into the build
Eric Wong [Thu, 4 Aug 2016 11:40:25 +0000 (11:40 +0000)] 
pager: move pager-specific setup into the build

Allowing PAGER_ENV to be set at build-time allows us to move
pager-specific knowledge out of our build.  This allows us to
set a better default for FreeBSD more(1), which pretends not to
understand ANSI color escapes if the MORE environment variable
is left empty, but accepts the same variables as less(1)

Originally-from:
 https://public-inbox.org/git/xmqq61piw4yf.fsf@gitster.dls.corp.google.com/

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