git
7 years agoversion --build-options: report commit, too, if possible
Johannes Schindelin [Thu, 14 Dec 2017 23:34:38 +0000 (00:34 +0100)] 
version --build-options: report commit, too, if possible

In particular when local tags are used (or tags that are pushed to some
fork) to build Git, it is very hard to figure out from which particular
revision a particular Git executable was built. It gets worse when those
tags are deleted, or even updated.

Let's just report an exact, unabbreviated commit name in our build
options.

We need to be careful, though, to report when the current commit cannot
be determined, e.g. when building from a tarball without any associated
Git repository. This could be the case also when extracting Git's source
code into an unrelated Git worktree.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoversion --build-options: also report host CPU
Eric Sunshine [Thu, 14 Dec 2017 23:34:34 +0000 (00:34 +0100)] 
version --build-options: also report host CPU

It can be helpful for bug reports to include information about the
environment in which the bug occurs. "git version --build-options" can
help to supplement this information. In addition to the size of 'long'
already reported by --build-options, also report the host's CPU type.
Example output:

   $ git version --build-options
   git version 2.9.3.windows.2.826.g06c0f2f
   cpu: x86_64
   sizeof-long: 4

New Makefile variable HOST_CPU supports cross-compiling.

Suggested-by: Adric Norris <landstander668@gmail.com>
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoRelNotes: minor typo fixes in 2.16.0 draft
Todd Zullinger [Thu, 14 Dec 2017 02:42:44 +0000 (21:42 -0500)] 
RelNotes: minor typo fixes in 2.16.0 draft

Signed-off-by: Todd Zullinger <tmz@pobox.com>
7 years agoRelNotes: the ninth batch
Junio C Hamano [Wed, 13 Dec 2017 21:32:34 +0000 (13:32 -0800)] 
RelNotes: the ninth batch

Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoMerge branch 'js/hashmap-update-sample'
Junio C Hamano [Wed, 13 Dec 2017 21:28:58 +0000 (13:28 -0800)] 
Merge branch 'js/hashmap-update-sample'

Code comment update.

* js/hashmap-update-sample:
  hashmap: adjust documentation to reflect reality

7 years agoMerge branch 'en/remove-stripspace'
Junio C Hamano [Wed, 13 Dec 2017 21:28:58 +0000 (13:28 -0800)] 
Merge branch 'en/remove-stripspace'

An internal function that was left for backward compatibility has
been removed, as there is no remaining callers.

* en/remove-stripspace:
  strbuf: remove unused stripspace function alias

7 years agoMerge branch 'jk/no-optional-locks'
Junio C Hamano [Wed, 13 Dec 2017 21:28:58 +0000 (13:28 -0800)] 
Merge branch 'jk/no-optional-locks'

Doc update for a feature available in Git v2.14 and upwards.

* jk/no-optional-locks:
  git-status.txt: mention --no-optional-locks

7 years agoMerge branch 'ds/for-each-file-in-obj-micro-optim'
Junio C Hamano [Wed, 13 Dec 2017 21:28:57 +0000 (13:28 -0800)] 
Merge branch 'ds/for-each-file-in-obj-micro-optim'

The code to iterate over loose object files got optimized.

* ds/for-each-file-in-obj-micro-optim:
  sha1_file: use strbuf_add() instead of strbuf_addf()

7 years agoMerge branch 'jk/progress-delay-fix'
Junio C Hamano [Wed, 13 Dec 2017 21:28:57 +0000 (13:28 -0800)] 
Merge branch 'jk/progress-delay-fix'

A regression in the progress eye-candy was fixed.

* jk/progress-delay-fix:
  progress: drop delay-threshold code
  progress: set default delay threshold to 100%, not 0%

7 years agoMerge branch 'ks/doc-checkout-previous'
Junio C Hamano [Wed, 13 Dec 2017 21:28:57 +0000 (13:28 -0800)] 
Merge branch 'ks/doc-checkout-previous'

@{-N} in "git checkout @{-N}" may refer to a detached HEAD state,
but the documentation was not clear about it, which has been fixed.

* ks/doc-checkout-previous:
  Doc/checkout: checking out using @{-N} can lead to detached state

7 years agoMerge branch 'fk/sendmail-from-path'
Junio C Hamano [Wed, 13 Dec 2017 21:28:56 +0000 (13:28 -0800)] 
Merge branch 'fk/sendmail-from-path'

"git send-email" tries to see if the sendmail program is available
in /usr/lib and /usr/sbin; extend the list of locations to be
checked to also include directories on $PATH.

* fk/sendmail-from-path:
  git-send-email: honor $PATH for sendmail binary

7 years agoMerge branch 'tg/t-readme-updates'
Junio C Hamano [Wed, 13 Dec 2017 21:28:56 +0000 (13:28 -0800)] 
Merge branch 'tg/t-readme-updates'

Developer doc updates.

* tg/t-readme-updates:
  t/README: document test_cmp_rev
  t/README: remove mention of adding copyright notices

7 years agoMerge branch 'pc/submodule-helper'
Junio C Hamano [Wed, 13 Dec 2017 21:28:56 +0000 (13:28 -0800)] 
Merge branch 'pc/submodule-helper'

A message fix.

* pc/submodule-helper:
  submodule--helper.c: i18n: add a missing space in message

7 years agoMerge branch 'jc/receive-pack-hook-doc'
Junio C Hamano [Wed, 13 Dec 2017 21:28:55 +0000 (13:28 -0800)] 
Merge branch 'jc/receive-pack-hook-doc'

Doc update.

* jc/receive-pack-hook-doc:
  hooks doc: clarify when receive-pack invokes its hooks

7 years agoMerge branch 'ab/pcre2-grep'
Junio C Hamano [Wed, 13 Dec 2017 21:28:54 +0000 (13:28 -0800)] 
Merge branch 'ab/pcre2-grep'

"git grep" compiled with libpcre2 sometimes triggered a segfault,
which is being fixed.

* ab/pcre2-grep:
  grep: fix segfault under -P + PCRE2 <=10.30 + (*NO_JIT)
  test-lib: add LIBPCRE1 & LIBPCRE2 prerequisites

7 years agoMerge branch 'ra/decorate-limit-refs'
Junio C Hamano [Wed, 13 Dec 2017 21:28:54 +0000 (13:28 -0800)] 
Merge branch 'ra/decorate-limit-refs'

The tagnames "git log --decorate" uses to annotate the commits can
now be limited to subset of available refs with the two additional
options, --decorate-refs[-exclude]=<pattern>.

* ra/decorate-limit-refs:
  log: add option to choose which refs to decorate

7 years agoMerge branch 'bc/hash-algo'
Junio C Hamano [Wed, 13 Dec 2017 21:28:54 +0000 (13:28 -0800)] 
Merge branch 'bc/hash-algo'

An infrastructure to define what hash function is used in Git is
introduced, and an effort to plumb that throughout various
codepaths has been started.

* bc/hash-algo:
  repository: fix a sparse 'using integer as NULL pointer' warning
  Switch empty tree and blob lookups to use hash abstraction
  Integrate hash algorithm support with repo setup
  Add structure representing hash algorithm
  setup: expose enumerated repo info

7 years agoRelNotes: the eighth batch
Junio C Hamano [Wed, 6 Dec 2017 17:29:50 +0000 (09:29 -0800)] 
RelNotes: the eighth batch

Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoSync with maint
Junio C Hamano [Wed, 6 Dec 2017 17:27:59 +0000 (09:27 -0800)] 
Sync with maint

7 years agoMerge branch 'jn/ssh-wrappers'
Junio C Hamano [Wed, 6 Dec 2017 17:23:45 +0000 (09:23 -0800)] 
Merge branch 'jn/ssh-wrappers'

The ssh-variant 'simple' introduced earlier broke existing
installations by not passing --port/-4/-6 and not diagnosing an
attempt to pass these as an error.  Instead, default to
automatically detect how compatible the GIT_SSH/GIT_SSH_COMMAND is
to OpenSSH convention and then error out an invocation to make it
easier to diagnose connection errors.

* jn/ssh-wrappers:
  connect: correct style of C-style comment
  ssh: 'simple' variant does not support --port
  ssh: 'simple' variant does not support -4/-6
  ssh: 'auto' variant to select between 'ssh' and 'simple'
  connect: split ssh option computation to its own function
  connect: split ssh command line options into separate function
  connect: split git:// setup into a separate function
  connect: move no_fork fallback to git_tcp_connect
  ssh test: make copy_ssh_wrapper_as clean up after itself

7 years agoMerge branch 'bw/protocol-v1'
Junio C Hamano [Wed, 6 Dec 2017 17:23:44 +0000 (09:23 -0800)] 
Merge branch 'bw/protocol-v1'

A new mechanism to upgrade the wire protocol in place is proposed
and demonstrated that it works with the older versions of Git
without harming them.

* bw/protocol-v1:
  Documentation: document Extra Parameters
  ssh: introduce a 'simple' ssh variant
  i5700: add interop test for protocol transition
  http: tell server that the client understands v1
  connect: tell server that the client understands v1
  connect: teach client to recognize v1 server response
  upload-pack, receive-pack: introduce protocol version 1
  daemon: recognize hidden request arguments
  protocol: introduce protocol extension mechanisms
  pkt-line: add packet_write function
  connect: in ref advertisement, shallows are last

7 years agoMerge branch 'sp/doc-info-attributes'
Junio C Hamano [Wed, 6 Dec 2017 17:23:43 +0000 (09:23 -0800)] 
Merge branch 'sp/doc-info-attributes'

Doc update.

* sp/doc-info-attributes:
  doc: Mention info/attributes in gitrepository-layout

7 years agoMerge branch 'ph/stash-save-m-option-fix'
Junio C Hamano [Wed, 6 Dec 2017 17:23:42 +0000 (09:23 -0800)] 
Merge branch 'ph/stash-save-m-option-fix'

In addition to "git stash -m message", the command learned to
accept "git stash -mmessage" form.

* ph/stash-save-m-option-fix:
  stash: learn to parse -m/--message like commit does

7 years agoMerge branch 'jk/fewer-pack-rescan'
Junio C Hamano [Wed, 6 Dec 2017 17:23:42 +0000 (09:23 -0800)] 
Merge branch 'jk/fewer-pack-rescan'

Internaly we use 0{40} as a placeholder object name to signal the
codepath that there is no such object (e.g. the fast-forward check
while "git fetch" stores a new remote-tracking ref says "we know
there is no 'old' thing pointed at by the ref, as we are creating
it anew" by passing 0{40} for the 'old' side), and expect that a
codepath to locate an in-core object to return NULL as a sign that
the object does not exist.  A look-up for an object that does not
exist however is quite costly with a repository with large number
of packfiles.  This access pattern has been optimized.

* jk/fewer-pack-rescan:
  sha1_file: fast-path null sha1 as a missing object
  everything_local: use "quick" object existence check
  p5551: add a script to test fetch pack-dir rescans
  t/perf/lib-pack: use fast-import checkpoint to create packs
  p5550: factor out nonsense-pack creation

7 years agoMerge branch 'tg/deprecate-stash-save'
Junio C Hamano [Wed, 6 Dec 2017 17:23:41 +0000 (09:23 -0800)] 
Merge branch 'tg/deprecate-stash-save'

Doc update.

* tg/deprecate-stash-save:
  doc: prefer 'stash push' over 'stash save'

7 years agoMerge branch 'rd/doc-notes-prune-fix'
Junio C Hamano [Wed, 6 Dec 2017 17:23:40 +0000 (09:23 -0800)] 
Merge branch 'rd/doc-notes-prune-fix'

Doc update.

* rd/doc-notes-prune-fix:
  notes: correct 'git notes prune' options to '[-n] [-v]'

7 years agoMerge branch 'rd/man-reflog-add-n'
Junio C Hamano [Wed, 6 Dec 2017 17:23:39 +0000 (09:23 -0800)] 
Merge branch 'rd/man-reflog-add-n'

Doc update.

* rd/man-reflog-add-n:
  doc: add missing "-n" (dry-run) option to reflog man page

7 years agoMerge branch 'rd/man-prune-progress'
Junio C Hamano [Wed, 6 Dec 2017 17:23:39 +0000 (09:23 -0800)] 
Merge branch 'rd/man-prune-progress'

Doc update.

* rd/man-prune-progress:
  prune: add "--progress" to man page and usage msg

7 years agoMerge branch 'jt/submodule-tests-cleanup'
Junio C Hamano [Wed, 6 Dec 2017 17:23:38 +0000 (09:23 -0800)] 
Merge branch 'jt/submodule-tests-cleanup'

Further test clean-up.

* jt/submodule-tests-cleanup:
  Tests: clean up submodule recursive helpers

7 years agoMerge branch 'jn/reproducible-build'
Junio C Hamano [Wed, 6 Dec 2017 17:23:37 +0000 (09:23 -0800)] 
Merge branch 'jn/reproducible-build'

The build procedure has been taught to avoid some unnecessary
instability in the build products.

* jn/reproducible-build:
  generate-cmdlist: avoid non-deterministic output
  git-gui: sort entries in optimized tclIndex

7 years agoMerge branch 'cc/git-packet-pm'
Junio C Hamano [Wed, 6 Dec 2017 17:23:37 +0000 (09:23 -0800)] 
Merge branch 'cc/git-packet-pm'

Code clean-up.

* cc/git-packet-pm:
  Git/Packet.pm: use 'if' instead of 'unless'
  Git/Packet: clarify that packet_required_key_val_read allows EOF

7 years agoMerge branch 'ac/complete-pull-autostash'
Junio C Hamano [Wed, 6 Dec 2017 17:23:37 +0000 (09:23 -0800)] 
Merge branch 'ac/complete-pull-autostash'

The shell completion (in contrib/) learned that "git pull" can take
the "--autostash" option.

* ac/complete-pull-autostash:
  completion: add --autostash and --no-autostash to pull

7 years agoMerge branch 'hm/config-parse-expiry-date'
Junio C Hamano [Wed, 6 Dec 2017 17:23:37 +0000 (09:23 -0800)] 
Merge branch 'hm/config-parse-expiry-date'

"git config --expiry-date gc.reflogexpire" can read "2.weeks" from
the configuration and report it as a timestamp, just like "--int"
would read "1k" and report 1024, to help consumption by scripts.

* hm/config-parse-expiry-date:
  config: add --expiry-date

7 years agoMerge branch 'tz/branch-doc-remove-set-upstream'
Junio C Hamano [Wed, 6 Dec 2017 17:23:36 +0000 (09:23 -0800)] 
Merge branch 'tz/branch-doc-remove-set-upstream'

"git branch --set-upstream" has been deprecated and (sort of)
removed, as "--set-upstream-to" is the preferred one these days.
The documentation still had "--set-upstream" listed on its
synopsys section, which has been corrected.

* tz/branch-doc-remove-set-upstream:
  branch doc: remove --set-upstream from synopsis

7 years agoMerge branch 'cc/perf-run-config'
Junio C Hamano [Wed, 6 Dec 2017 17:23:36 +0000 (09:23 -0800)] 
Merge branch 'cc/perf-run-config'

* cc/perf-run-config:
  perf: store subsection results in "test-results/$GIT_PERF_SUBSECTION/"
  perf/run: show name of rev being built
  perf/run: add run_subsection()
  perf/run: update get_var_from_env_or_config() for subsections
  perf/run: add get_subsections()
  perf/run: add calls to get_var_from_env_or_config()
  perf/run: add GIT_PERF_DIRS_OR_REVS
  perf/run: add get_var_from_env_or_config()
  perf/run: add '--config' option to the 'run' script

7 years agoMerge branch 'sb/submodule-recursive-checkout-detach-head'
Junio C Hamano [Wed, 6 Dec 2017 17:23:35 +0000 (09:23 -0800)] 
Merge branch 'sb/submodule-recursive-checkout-detach-head'

"git checkout --recursive" may overwrite and rewind the history of
the branch that happens to be checked out in submodule
repositories, which might not be desirable.  Detach the HEAD but
still allow the recursive checkout to succeed in such a case.

* sb/submodule-recursive-checkout-detach-head:
  Documentation/checkout: clarify submodule HEADs to be detached
  recursive submodules: detach HEAD from new state

7 years agoPrepare for 2.15.2
Junio C Hamano [Wed, 6 Dec 2017 17:10:35 +0000 (09:10 -0800)] 
Prepare for 2.15.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoMerge branch 'jc/merge-base-fork-point-doc' into maint
Junio C Hamano [Wed, 6 Dec 2017 17:09:05 +0000 (09:09 -0800)] 
Merge branch 'jc/merge-base-fork-point-doc' into maint

Clarify and enhance documentation for "merge-base --fork-point", as
it was clear what it computed but not why/what for.

* jc/merge-base-fork-point-doc:
  merge-base --fork-point doc: clarify the example and failure modes

7 years agoMerge branch 'tz/redirect-fix' into maint
Junio C Hamano [Wed, 6 Dec 2017 17:09:04 +0000 (09:09 -0800)] 
Merge branch 'tz/redirect-fix' into maint

A few scripts (both in production and tests) incorrectly redirected
their error output.  These have been corrected.

* tz/redirect-fix:
  rebase: fix stderr redirect in apply_autostash()
  t/lib-gpg: fix gpgconf stderr redirect to /dev/null

7 years agoMerge branch 'tz/notes-error-to-stderr' into maint
Junio C Hamano [Wed, 6 Dec 2017 17:09:04 +0000 (09:09 -0800)] 
Merge branch 'tz/notes-error-to-stderr' into maint

"git notes" sent its error message to its standard output stream,
which was corrected.

* tz/notes-error-to-stderr:
  notes: send "Automatic notes merge failed" messages to stderr

7 years agoMerge branch 'sb/test-cherry-pick-submodule-getting-in-a-way' into maint
Junio C Hamano [Wed, 6 Dec 2017 17:09:03 +0000 (09:09 -0800)] 
Merge branch 'sb/test-cherry-pick-submodule-getting-in-a-way' into maint

The three-way merge performed by "git cherry-pick" was confused
when a new submodule was added in the meantime, which has been
fixed (or "papered over").

* sb/test-cherry-pick-submodule-getting-in-a-way:
  merge-recursive: handle addition of submodule on our side of history
  t/3512: demonstrate unrelated submodule/file conflict as cherry-pick failure

7 years agoMerge branch 'pw/sequencer-recover-from-unlockable-index' into maint
Junio C Hamano [Wed, 6 Dec 2017 17:09:03 +0000 (09:09 -0800)] 
Merge branch 'pw/sequencer-recover-from-unlockable-index' into maint

The sequencer machinery (used by "git cherry-pick A..B", and "git
rebase -i", among other things) would have lost a commit if stopped
due to an unlockable index file, which has been fixed.

* pw/sequencer-recover-from-unlockable-index:
  sequencer: reschedule pick if index can't be locked

7 years agoMerge branch 'rs/apply-inaccurate-eof-with-incomplete-line' into maint
Junio C Hamano [Wed, 6 Dec 2017 17:09:03 +0000 (09:09 -0800)] 
Merge branch 'rs/apply-inaccurate-eof-with-incomplete-line' into maint

"git apply --inaccurate-eof" when used with "--ignore-space-change"
triggered an internal sanity check, which has been fixed.

* rs/apply-inaccurate-eof-with-incomplete-line:
  apply: update line lengths for --inaccurate-eof

7 years agoMerge branch 'tz/complete-branch-copy' into maint
Junio C Hamano [Wed, 6 Dec 2017 17:09:02 +0000 (09:09 -0800)] 
Merge branch 'tz/complete-branch-copy' into maint

Command line completion (in contrib/) has been taught about the
"--copy" option of "git branch".

* tz/complete-branch-copy:
  completion: add '--copy' option to 'git branch'

7 years agoMerge branch 'ew/rebase-mboxrd' into maint
Junio C Hamano [Wed, 6 Dec 2017 17:09:01 +0000 (09:09 -0800)] 
Merge branch 'ew/rebase-mboxrd' into maint

When "git rebase" prepared an mailbox of changes and fed it to "git
am" to replay them, it was confused when a stray "From " happened
to be in the log message of one of the replayed changes.  This has
been corrected.

* ew/rebase-mboxrd:
  rebase: use mboxrd format to avoid split errors

7 years agoMerge branch 'sd/branch-copy' into maint
Junio C Hamano [Wed, 6 Dec 2017 17:09:01 +0000 (09:09 -0800)] 
Merge branch 'sd/branch-copy' into maint

Code clean-up.

* sd/branch-copy:
  config: avoid "write_in_full(fd, buf, len) != len" pattern

7 years agoMerge branch 'sw/pull-ipv46-passthru' into maint
Junio C Hamano [Wed, 6 Dec 2017 17:09:00 +0000 (09:09 -0800)] 
Merge branch 'sw/pull-ipv46-passthru' into maint

Contrary to the documentation, "git pull -4/-6 other-args" did not
ask the underlying "git fetch" to go over IPv4/IPv6, which has been
corrected.

* sw/pull-ipv46-passthru:
  pull: pass -4/-6 option to 'git fetch'

7 years agoMerge branch 'bc/submitting-patches-in-asciidoc' into maint
Junio C Hamano [Wed, 6 Dec 2017 17:08:59 +0000 (09:08 -0800)] 
Merge branch 'bc/submitting-patches-in-asciidoc' into maint

The SubmittingPatches document has been converted to produce an
HTML version via AsciiDoc/Asciidoctor.

* bc/submitting-patches-in-asciidoc:
  Documentation: convert SubmittingPatches to AsciiDoc
  Documentation: enable compat-mode for Asciidoctor

7 years agoMerge branch 'mh/avoid-rewriting-packed-refs' into maint
Junio C Hamano [Wed, 6 Dec 2017 17:08:20 +0000 (09:08 -0800)] 
Merge branch 'mh/avoid-rewriting-packed-refs' into maint

Recent update to the refs infrastructure implementation started
rewriting packed-refs file more often than before; this has been
optimized again for most trivial cases.

* mh/avoid-rewriting-packed-refs:
  files-backend: don't rewrite the `packed-refs` file unnecessarily
  t1409: check that `packed-refs` is not rewritten unnecessarily

7 years agohashmap: adjust documentation to reflect reality
Johannes Schindelin [Wed, 29 Nov 2017 23:51:41 +0000 (00:51 +0100)] 
hashmap: adjust documentation to reflect reality

The hashmap API is just complicated enough that even at least one
long-time Git contributor has to look up how to use it every time he
finds a new use case. When that happens, it is really useful if the
provided example code is correct...

While at it, "fix a memory leak", avoid statements before variable
declarations, fix a const -> no-const cast, several %l specifiers (which
want to be %ld), avoid using an undefined constant, call scanf()
correctly, use FLEX_ALLOC_STR() where appropriate, and adjust the style
here and there.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agostrbuf: remove unused stripspace function alias
Elijah Newren [Wed, 29 Nov 2017 01:45:59 +0000 (17:45 -0800)] 
strbuf: remove unused stripspace function alias

In commit 63af4a8446 ("strbuf: make stripspace() part of strbuf",
2015-10-16), stripspace() was moved to strbuf and renamed to
strbuf_stripspace().  A "temporary" alias was added for the old name until
all topic branches had time to switch over.  They have had time, so remove
the old alias.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoprogress: drop delay-threshold code
Lars Schneider [Mon, 4 Dec 2017 22:07:00 +0000 (17:07 -0500)] 
progress: drop delay-threshold code

Since 180a9f2268 (provide a facility for "delayed" progress
reporting, 2007-04-20), the progress code has allowed
callers to skip showing progress if they have reached a
percentage-threshold of the total work before the delay
period passes.

But since 8aade107dd (progress: simplify "delayed" progress
API, 2017-08-19), that parameter is not available to outside
callers (we always passed zero after that commit, though
that was corrected in the previous commit to "100%").

Let's drop the threshold code, which never triggers in
any meaningful way.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoprogress: set default delay threshold to 100%, not 0%
Jeff King [Mon, 4 Dec 2017 22:05:23 +0000 (17:05 -0500)] 
progress: set default delay threshold to 100%, not 0%

Commit 8aade107dd (progress: simplify "delayed" progress
API, 2017-08-19) dropped the parameter by which callers
could say "show my progress only if I haven't passed M%
progress after N seconds". The intent was to just show
nothing for 2 seconds, and then always progress after that.

But we flipped the logic in the wrapper: it sets M=0,
meaning that we'd almost _never_ show progress after 2
seconds, since we'd generally have made some progress. This
should have been 100%, not 0%.

We were fooled by existing calls like:

  start_progress_delay("foo", 0, 0, 2);

which behaved this way. The trick is that the first "0"
there is "how many items total", and there zero means "we
don't know". And without knowing that, we cannot compute a
completed percent at all, and we ignored the threshold
parameter entirely! Modeling our wrapper after that broke
callers which pass a non-zero value for "total".

We can switch to the intended behavior by using "100" in the
wrapper call.

Reported-by: Lars Schneider <larsxschneider@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agosha1_file: use strbuf_add() instead of strbuf_addf()
Derrick Stolee [Mon, 4 Dec 2017 14:06:03 +0000 (09:06 -0500)] 
sha1_file: use strbuf_add() instead of strbuf_addf()

Replace use of strbuf_addf() with strbuf_add() when enumerating
loose objects in for_each_file_in_obj_subdir(). Since we already
check the length and hex-values of the string before consuming
the path, we can prevent extra computation by using the lower-
level method.

One consumer of for_each_file_in_obj_subdir() is the abbreviation
code. OID abbreviations use a cached list of loose objects (per
object subdirectory) to make repeated queries fast, but there is
significant cache load time when there are many loose objects.

Most repositories do not have many loose objects before repacking,
but in the GVFS case the repos can grow to have millions of loose
objects. Profiling 'git log' performance in GitForWindows on a
GVFS-enabled repo with ~2.5 million loose objects revealed 12% of
the CPU time was spent in strbuf_addf().

Add a new performance test to p4211-line-log.sh that is more
sensitive to this cache-loading. By limiting to 1000 commits, we
more closely resemble user wait time when reading history into a
pager.

For a copy of the Linux repo with two ~512 MB packfiles and ~572K
loose objects, running 'git log --oneline --parents --raw -1000'
had the following performance:

 HEAD~1            HEAD
----------------------------------------
 7.70(7.15+0.54)   7.44(7.09+0.29) -3.4%

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoSync with v2.15.1
Junio C Hamano [Tue, 28 Nov 2017 04:43:55 +0000 (13:43 +0900)] 
Sync with v2.15.1

7 years agoRelNotes: the seventh batch
Junio C Hamano [Tue, 28 Nov 2017 04:43:32 +0000 (13:43 +0900)] 
RelNotes: the seventh batch

Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoMerge branch 'rs/include-comments-before-the-function-header'
Junio C Hamano [Tue, 28 Nov 2017 04:41:50 +0000 (13:41 +0900)] 
Merge branch 'rs/include-comments-before-the-function-header'

"git grep -W", "git diff -W" and their friends learned a heuristic
to extend a pre-context beyond the line that matches the "function
pattern" (aka "diff.*.xfuncname") to include a comment block, if
exists, that immediately precedes it.

* rs/include-comments-before-the-function-header:
  grep: show non-empty lines before functions with -W
  grep: update boundary variable for pre-context
  t7810: improve check of -W with user-defined function lines
  xdiff: show non-empty lines before functions with -W
  xdiff: factor out is_func_rec()
  t4051: add test for comments preceding function lines

7 years agoMerge branch 'ma/branch-list-paginate'
Junio C Hamano [Tue, 28 Nov 2017 04:41:49 +0000 (13:41 +0900)] 
Merge branch 'ma/branch-list-paginate'

"git branch --list" learned to show its output through the pager by
default when the output is going to a terminal, which is controlled
by the pager.branch configuration variable.  This is similar to a
recent change to "git tag --list".

* ma/branch-list-paginate:
  branch: change default of `pager.branch` to "on"
  branch: respect `pager.branch` in list-mode only
  t7006: add tests for how git branch paginates

7 years agoMerge branch 'jc/branch-name-sanity'
Junio C Hamano [Tue, 28 Nov 2017 04:41:49 +0000 (13:41 +0900)] 
Merge branch 'jc/branch-name-sanity'

"git branch" and "git checkout -b" are now forbidden from creating
a branch whose name is "HEAD".

* jc/branch-name-sanity:
  builtin/branch: remove redundant check for HEAD
  branch: correctly reject refs/heads/{-dash,HEAD}
  branch: split validate_new_branchname() into two
  branch: streamline "attr_only" handling in validate_new_branchname()

7 years agoGit 2.15.1 v2.15.1
Junio C Hamano [Tue, 28 Nov 2017 04:39:14 +0000 (13:39 +0900)] 
Git 2.15.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoMerge branch 'rs/config-write-section-fix' into maint
Junio C Hamano [Tue, 28 Nov 2017 04:38:33 +0000 (13:38 +0900)] 
Merge branch 'rs/config-write-section-fix' into maint

There was a recent semantic mismerge in the codepath to write out a
section of a configuration section, which has been corrected.

* rs/config-write-section-fix:
  config: flip return value of write_section()

7 years agorepository: fix a sparse 'using integer as NULL pointer' warning
Ramsay Jones [Tue, 28 Nov 2017 03:01:19 +0000 (03:01 +0000)] 
repository: fix a sparse 'using integer as NULL pointer' warning

Commit 78a6766802 ("Integrate hash algorithm support with repo setup",
2017-11-12) added a 'const struct git_hash_algo *hash_algo' field to the
repository structure, without modifying the initializer of the 'the_repo'
variable. This does not actually introduce a bug, since the '0' initializer
for the 'ignore_env:1' bit-field is interpreted as a NULL pointer (hence
the warning), and the final field (now with no initializer) receives a
default '0'.

Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoDoc/checkout: checking out using @{-N} can lead to detached state
Kaartic Sivaraam [Mon, 27 Nov 2017 17:28:33 +0000 (22:58 +0530)] 
Doc/checkout: checking out using @{-N} can lead to detached state

@{-N} is a syntax for the N-th last "checkout" and not the N-th
last "branch". Therefore, in some cases using `git checkout @{-$N}`
DOES lead to a "detached HEAD" state. This can also be ensured by
the commit message of 75d6e552a (Documentation: @{-N} can refer to
a commit, 2014-01-19) which clearly specifies how @{-N} can be used
to refer not only to a branch but also to a commit.

Correct the misleading sentence which states that @{-N} doesn't
detach HEAD.

Signed-off-by: Kaartic Sivaraam <kaartic.sivaraam@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agogit-send-email: honor $PATH for sendmail binary
Florian Klink [Tue, 28 Nov 2017 00:49:04 +0000 (01:49 +0100)] 
git-send-email: honor $PATH for sendmail binary

This extends git-send-email to also consider sendmail binaries in $PATH
after checking the (fixed) list of /usr/sbin and /usr/lib, and before
falling back to localhost.

Signed-off-by: Florian Klink <flokli@flokli.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agogit-status.txt: mention --no-optional-locks
Jeff King [Mon, 27 Nov 2017 06:04:12 +0000 (01:04 -0500)] 
git-status.txt: mention --no-optional-locks

If you come to the documentation thinking "I do not want Git
to take any locks for my background processes", then you may
easily run across "--no-optional-locks" in git.txt.

But it's quite reasonable to hit a specific instance of the
problem: you have "git status" running in the background,
and you notice that it causes lock contention with other
processes. So you look in git-status.txt to see if there is
a way to disable it, but there's no mention of the flag.

Let's add a short note mentioning that status does indeed
touch the index (and why), with a pointer to the global
option. That can point users in the right direction and help
them make a more informed decision about what they're
disabling.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoRelNotes: the sixth batch for 2.16
Junio C Hamano [Mon, 27 Nov 2017 02:16:50 +0000 (11:16 +0900)] 
RelNotes: the sixth batch for 2.16

Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoSync with maint
Junio C Hamano [Mon, 27 Nov 2017 02:15:09 +0000 (11:15 +0900)] 
Sync with maint

* maint:
  A bit more fixes for 2.15.1
  RelNotes: minor typo fixes in 2.15.1 draft

7 years agoMerge branch 'sw/pull-ipv46-passthru'
Junio C Hamano [Mon, 27 Nov 2017 02:06:40 +0000 (11:06 +0900)] 
Merge branch 'sw/pull-ipv46-passthru'

Contrary to the documentation, "git pull -4/-6 other-args" did not
ask the underlying "git fetch" to go over IPv4/IPv6, which has been
corrected.

* sw/pull-ipv46-passthru:
  pull: pass -4/-6 option to 'git fetch'

7 years agoMerge branch 'ks/rebase-no-git-foo'
Junio C Hamano [Mon, 27 Nov 2017 02:06:39 +0000 (11:06 +0900)] 
Merge branch 'ks/rebase-no-git-foo'

Mentions of "git-rebase" and "git-am" (dashed form) still remained
in end-user visible strings emitted by the "git rebase" command;
they have been corrected.

* ks/rebase-no-git-foo:
  git-rebase: clean up dashed-usages in messages

7 years agoMerge branch 'rs/config-write-section-fix'
Junio C Hamano [Mon, 27 Nov 2017 02:06:38 +0000 (11:06 +0900)] 
Merge branch 'rs/config-write-section-fix'

There was a recent semantic mismerge in the codepath to write out a
section of a configuration section, which has been corrected.

* rs/config-write-section-fix:
  config: flip return value of write_section()

7 years agoMerge branch 'ew/rebase-mboxrd'
Junio C Hamano [Mon, 27 Nov 2017 02:06:37 +0000 (11:06 +0900)] 
Merge branch 'ew/rebase-mboxrd'

When "git rebase" prepared an mailbox of changes and fed it to "git
am" to replay them, it was confused when a stray "From " happened
to be in the log message of one of the replayed changes.  This has
been corrected.

* ew/rebase-mboxrd:
  rebase: use mboxrd format to avoid split errors

7 years agoMerge branch 'tb/add-renormalize'
Junio C Hamano [Mon, 27 Nov 2017 02:06:37 +0000 (11:06 +0900)] 
Merge branch 'tb/add-renormalize'

"git add --renormalize ." is a new and safer way to record the fact
that you are correcting the end-of-line convention and other
"convert_to_git()" glitches in the in-repository data.

* tb/add-renormalize:
  add: introduce "--renormalize"

7 years agoMerge branch 'tz/complete-branch-copy'
Junio C Hamano [Mon, 27 Nov 2017 02:06:37 +0000 (11:06 +0900)] 
Merge branch 'tz/complete-branch-copy'

Command line completion (in contrib/) has been taught about the
"--copy" option of "git branch".

* tz/complete-branch-copy:
  completion: add '--copy' option to 'git branch'

7 years agoMerge branch 'rs/apply-inaccurate-eof-with-incomplete-line'
Junio C Hamano [Mon, 27 Nov 2017 02:06:36 +0000 (11:06 +0900)] 
Merge branch 'rs/apply-inaccurate-eof-with-incomplete-line'

"git apply --inaccurate-eof" when used with "--ignore-space-change"
triggered an internal sanity check, which has been fixed.

* rs/apply-inaccurate-eof-with-incomplete-line:
  apply: update line lengths for --inaccurate-eof

7 years agoMerge branch 'pw/sequencer-recover-from-unlockable-index'
Junio C Hamano [Mon, 27 Nov 2017 02:06:35 +0000 (11:06 +0900)] 
Merge branch 'pw/sequencer-recover-from-unlockable-index'

The sequencer machinery (used by "git cherry-pick A..B", and "git
rebase -i", among other things) would have lost a commit if stopped
due to an unlockable index file, which has been fixed.

* pw/sequencer-recover-from-unlockable-index:
  sequencer: reschedule pick if index can't be locked

7 years agoMerge branch 'sd/branch-copy'
Junio C Hamano [Mon, 27 Nov 2017 02:06:35 +0000 (11:06 +0900)] 
Merge branch 'sd/branch-copy'

Code clean-up.

* sd/branch-copy:
  config: avoid "write_in_full(fd, buf, len) != len" pattern

7 years agoMerge branch 'sb/test-cherry-pick-submodule-getting-in-a-way'
Junio C Hamano [Mon, 27 Nov 2017 02:06:34 +0000 (11:06 +0900)] 
Merge branch 'sb/test-cherry-pick-submodule-getting-in-a-way'

The three-way merge performed by "git cherry-pick" was confused
when a new submodule was added in the meantime, which has been
fixed (or "papered over").

* sb/test-cherry-pick-submodule-getting-in-a-way:
  merge-recursive: handle addition of submodule on our side of history
  t/3512: demonstrate unrelated submodule/file conflict as cherry-pick failure

7 years agoMerge branch 'tz/notes-error-to-stderr'
Junio C Hamano [Mon, 27 Nov 2017 02:06:34 +0000 (11:06 +0900)] 
Merge branch 'tz/notes-error-to-stderr'

"git notes" sent its error message to its standard output stream,
which was corrected.

* tz/notes-error-to-stderr:
  notes: send "Automatic notes merge failed" messages to stderr

7 years agoMerge branch 'tz/redirect-fix'
Junio C Hamano [Mon, 27 Nov 2017 02:06:33 +0000 (11:06 +0900)] 
Merge branch 'tz/redirect-fix'

A few scripts (both in production and tests) incorrectly redirected
their error output.  These have been corrected.

* tz/redirect-fix:
  rebase: fix stderr redirect in apply_autostash()
  t/lib-gpg: fix gpgconf stderr redirect to /dev/null

7 years agoMerge branch 'rv/sendemail-tocmd-in-config-and-completion'
Junio C Hamano [Mon, 27 Nov 2017 02:06:32 +0000 (11:06 +0900)] 
Merge branch 'rv/sendemail-tocmd-in-config-and-completion'

Teach "sendemail.tocmd" to places that know about "sendemail.to",
like documentation and shell completion (in contrib/).

* rv/sendemail-tocmd-in-config-and-completion:
  completion: add git config sendemail.tocmd
  Documentation/config: add sendemail.tocmd to list preceding "See git-send-email(1)"

7 years agoMerge branch 'jc/merge-base-fork-point-doc'
Junio C Hamano [Mon, 27 Nov 2017 02:06:32 +0000 (11:06 +0900)] 
Merge branch 'jc/merge-base-fork-point-doc'

Clarify and enhance documentation for "merge-base --fork-point", as
it was clear what it computed but not why/what for.

* jc/merge-base-fork-point-doc:
  merge-base --fork-point doc: clarify the example and failure modes

7 years agoMerge branch 'jc/ignore-cr-at-eol'
Junio C Hamano [Mon, 27 Nov 2017 02:06:31 +0000 (11:06 +0900)] 
Merge branch 'jc/ignore-cr-at-eol'

The "diff" family of commands learned to ignore differences in
carriage return at the end of line.

* jc/ignore-cr-at-eol:
  diff: --ignore-cr-at-eol
  xdiff: reassign xpparm_t.flags bits

7 years agoA bit more fixes for 2.15.1
Junio C Hamano [Mon, 27 Nov 2017 01:58:31 +0000 (10:58 +0900)] 
A bit more fixes for 2.15.1

We've been waiting long enough, a few more would not hurt ;-)

Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoMerge branch 'ma/reduce-heads-leakfix' into maint
Junio C Hamano [Mon, 27 Nov 2017 01:57:02 +0000 (10:57 +0900)] 
Merge branch 'ma/reduce-heads-leakfix' into maint

Leak fixes.

* ma/reduce-heads-leakfix:
  reduce_heads: fix memory leaks
  builtin/merge-base: free commit lists

7 years agoMerge branch 'ma/bisect-leakfix' into maint
Junio C Hamano [Mon, 27 Nov 2017 01:57:02 +0000 (10:57 +0900)] 
Merge branch 'ma/bisect-leakfix' into maint

Leak fixes.

* ma/bisect-leakfix:
  bisect: fix memory leak when returning best element
  bisect: fix off-by-one error in `best_bisection_sorted()`
  bisect: fix memory leak in `find_bisection()`
  bisect: change calling-convention of `find_bisection()`

7 years agoMerge branch 'rs/apply-fuzzy-match-fix' into maint
Junio C Hamano [Mon, 27 Nov 2017 01:57:02 +0000 (10:57 +0900)] 
Merge branch 'rs/apply-fuzzy-match-fix' into maint

A fix for an ancient bug in "git apply --ignore-space-change" codepath.

* rs/apply-fuzzy-match-fix:
  apply: avoid out-of-bounds access in fuzzy_matchlines()

7 years agoMerge branch 'ad/submitting-patches-title-decoration' into maint
Junio C Hamano [Mon, 27 Nov 2017 01:57:01 +0000 (10:57 +0900)] 
Merge branch 'ad/submitting-patches-title-decoration' into maint

Doc update around use of "format-patch --subject-prefix" etc.

* ad/submitting-patches-title-decoration:
  doc/SubmittingPatches: correct subject guidance

7 years agoMerge branch 'rs/imap-send-next-arg-fix' into maint
Junio C Hamano [Mon, 27 Nov 2017 01:57:00 +0000 (10:57 +0900)] 
Merge branch 'rs/imap-send-next-arg-fix' into maint

Error checking in "git imap-send" for empty response has been
improved.

* rs/imap-send-next-arg-fix:
  imap-send: handle missing response codes gracefully
  imap-send: handle NULL return of next_arg()

7 years agot/README: document test_cmp_rev
Thomas Gummerer [Sun, 26 Nov 2017 20:21:00 +0000 (20:21 +0000)] 
t/README: document test_cmp_rev

test_cmp_rev is a useful function that's used in quite a few test
scripts.  It is however not documented in t/README.  Document it.

Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot/README: remove mention of adding copyright notices
Thomas Gummerer [Sun, 26 Nov 2017 20:20:59 +0000 (20:20 +0000)] 
t/README: remove mention of adding copyright notices

We generally no longer include copyright notices in new test scripts.
However t/README still mentions it as something to include at the top of
every new script.

Remove that mention as it's outdated.

Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agosubmodule--helper.c: i18n: add a missing space in message
Jean-Noel Avila [Sat, 25 Nov 2017 19:55:24 +0000 (20:55 +0100)] 
submodule--helper.c: i18n: add a missing space in message

The message spans over 2 lines but the C concatenation does not add
the needed space between the two lines.

Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoRelNotes: minor typo fixes in 2.15.1 draft
Todd Zullinger [Sat, 25 Nov 2017 17:32:40 +0000 (12:32 -0500)] 
RelNotes: minor typo fixes in 2.15.1 draft

Signed-off-by: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agodoc: Mention info/attributes in gitrepository-layout
Steffen Prohaska [Wed, 22 Nov 2017 08:58:14 +0000 (09:58 +0100)] 
doc: Mention info/attributes in gitrepository-layout

Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agogrep: fix segfault under -P + PCRE2 <=10.30 + (*NO_JIT)
Ævar Arnfjörð Bjarmason [Thu, 23 Nov 2017 14:16:58 +0000 (14:16 +0000)] 
grep: fix segfault under -P + PCRE2 <=10.30 + (*NO_JIT)

Fix a bug in the compilation of PCRE2 patterns under JIT (the most
common runtime configuration). Any pattern with a (*NO_JIT) verb would
segfault in any currently released PCRE2 version:

    $ git grep -P '(*NO_JIT)hi.*there'
    Segmentation fault

That this segfaulted was a bug in PCRE2 itself, after reporting it[1]
on pcre-dev it's been fixed in a yet-to-be-released version of
PCRE (presumably released first as 10.31). Now it'll die with:

    $ git grep -P '(*NO_JIT)hi.*there'
    fatal: pcre2_jit_match failed with error code -45: bad JIT option

But the cause of the bug is in our own code dating back to my
94da9193a6 ("grep: add support for PCRE v2", 2017-06-01).

As explained at more length in the comment being added here, it isn't
sufficient to just check pcre2_config() to see whether the JIT should
be used, pcre2_pattern_info() also has to be asked.

This is something I discovered myself when fiddling around with PCRE2
verbs in patterns passed to git. I don't expect that any user of git
has encountered this given the obscurity of passing PCRE2 verbs
through to the library, along with the relative obscurity of (*NO_JIT)
itself.

1. "How am I supposed to use PCRE2 JIT in the face of (*NO_JIT) ?"
   (<CACBZZX5mMqDuWuFmi7sRBp3wH6CFyd-ghACukd=v0NN=rBMnJg@mail.gmail.com> &
    https://lists.exim.org/lurker/thread/20171123.101502.7f0d38ca.en.html)
   on the pcre-dev mailing list

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agotest-lib: add LIBPCRE1 & LIBPCRE2 prerequisites
Ævar Arnfjörð Bjarmason [Thu, 23 Nov 2017 14:16:57 +0000 (14:16 +0000)] 
test-lib: add LIBPCRE1 & LIBPCRE2 prerequisites

Add LIBPCRE1 and LIBPCRE2 prerequisites which are true when git is
compiled with USE_LIBPCRE1=YesPlease or USE_LIBPCRE2=YesPlease,
respectively.

The syntax of PCRE1 and PCRE2 isn't the same in all cases (see
pcresyntax(3) and pcre2syntax(3)). If test are added that test for
those they'll need to be guarded by these new prerequisites.

The subsequent patch will make use of LIBPCRE2, so LIBPCRE1 isn't
strictly needed for now, but let's add it for consistency and so that
checking for it doesn't have to be done with the less obvious "PCRE,
!LIBPCRE2", which while semantically the same is more confusing, and
would lead to bugs if PCRE v3 is ever released as the tests would mean
v1, not any non-v2 version.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agostash: learn to parse -m/--message like commit does
Phil Hord [Wed, 22 Nov 2017 21:20:30 +0000 (13:20 -0800)] 
stash: learn to parse -m/--message like commit does

`git stash push -m foo` uses "foo" as the message for the stash. But
`git stash push -m"foo"` does not parse successfully.  Similarly
`git stash push --message="My stash message"` also fails.  The stash
documentation doesn't suggest this syntax should work, but gitcli
does and my fingers have learned this pattern long ago for `commit`.

Teach `git stash` to parse -mFoo and --message=Foo the same as `git
commit` would do.  Even though it's an internal function, add
similar support to create_stash() for consistency.

Signed-off-by: Phil Hord <phil.hord@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agohooks doc: clarify when receive-pack invokes its hooks
Junio C Hamano [Fri, 24 Nov 2017 02:10:58 +0000 (11:10 +0900)] 
hooks doc: clarify when receive-pack invokes its hooks

The text meant to say that receive-pack runs these hooks, and only
because receive-pack is not a command the end users use every day
(ever), as an explanation also meantioned that it is run in response
to 'git push', which is an end-user facing command readers hopefully
know about.

This unfortunately gave an incorrect impression that 'git push'
always result in the hook to run.  If the refs push wanted to update
all already had the desired value, these hooks are not run.

Explicitly mention "... and updates reference(s)" as a precondition
to avoid this confusion.

Helped-by: Christoph Michelbach <michelbach94@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agocompletion: add --autostash and --no-autostash to pull
Albert Astals Cid [Tue, 21 Nov 2017 14:39:28 +0000 (15:39 +0100)] 
completion: add --autostash and --no-autostash to pull

Ideally we should only autocomplete if pull has --rebase since
they only work with it but could not figure out how to do that
and the error message of doing git pull --autostash points out
that you need --rebase so i guess it's good enough

Signed-off-by: Albert Astals Cid <albert.astals.cid@kdab.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoGit/Packet.pm: use 'if' instead of 'unless'
Christian Couder [Tue, 21 Nov 2017 16:09:39 +0000 (17:09 +0100)] 
Git/Packet.pm: use 'if' instead of 'unless'

The code is more understandable with 'if' instead of 'unless'.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoGit/Packet: clarify that packet_required_key_val_read allows EOF
Christian Couder [Tue, 21 Nov 2017 16:09:38 +0000 (17:09 +0100)] 
Git/Packet: clarify that packet_required_key_val_read allows EOF

The function calls itself "required", but it does not die when it
sees an unexpected EOF.

Let's rename it to "packet_key_val_read()".

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>