silence git gc --auto --quiet output

When --quiet is requested, gc --auto should not display messages unless
there is an error.

Signed-off-by: Tobias Ulmer <tobiasu@tmux.org>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
FIXUP (test vector update for t5400)

Signed-off-by: Junio C Hamano <gitster@pobox.com>
mergetool--lib: Allow custom commands to override built-ins

Allow users to override the default commands provided by the
mergetools/* scriptlets.

Users occasionally run into problems where they expect to be
able to override the built-in tool names.  The documentation
does not explicitly mention that built-ins cannot be overridden,
so it's easy to assume that it should work.

Lift this restriction so that built-in tools are handled the
same way as user-configured tools.  Add tests to guarantee this
behavior.

A nice benefit of this change is that it protects users from
having future versions of git trump their custom configuration
with a new built-in tool.

C.f.:

http://stackoverflow.com/questions/7435002/mergetool-from-gitconfig-being-ignored
http://thread.gmane.org/gmane.comp.version-control.msysgit/13188
http://thread.gmane.org/gmane.comp.version-control.git/148267

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
side-step a make rule that builds t3070-wildmatch

Running "make t3070-wildmatch" aborts with this error:

   $ make t3070-wildmatch
   *** t3070-wildmatch.sh ***
   # passed all 11 test(s)
   1..11
   cat t3070-wildmatch.sh >t3070-wildmatch
   /bin/sh.exe: t3070-wildmatch: File exists
   make: *** [t3070-wildmatch] Error 1

It seems that there is a make rule that attempts to transform a *.sh file
into a file without the extension. The rule fails because t3070-wildmatch
is a directory. Rename it to t3070.

Of course, nobody would run exactly "make t3070-wildmatch". But it is
common (at least for me) to run "make t[3-9]*" or similar, which would
include t3070-wildmatch. With this patch, it includes t3070, but that does
not hurt because make just skips it with "Nothing to be done for `t3070'."

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
test-lib: use $SHELL_PATH, not $SHELL

The codepath for handling "--tee" ends up relaunching the test
script under a shell, and that one has to be a Bourne.  But we
incorrectly used $SHELL, which could be a non-Bourne (e.g. zsh or
csh); we have the Makefile variable $SHELL_PATH for exactly that,
so use it instead.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
graph.c: infinite loop in git whatchanged --graph -m

Running "whatchanged --graph -m" on a simple two-head merges
can fall into infinite loop.

Signed-off-by: Michał Kiedrowicz <michal.kiedrowicz@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Merge branch 'sp/maint-http-enable-gzip' into jch

Allows a more common 'gzip' Accept-Encoding to be used.

Will merge to 'master'.

* sp/maint-http-enable-gzip:
  Enable info/refs gzip decompression in HTTP client
Merge branch 'sp/maint-http-info-refs-no-retry' into jch

Kills an old workaround for a unlikely server misconfiguration that
hurts debuggability.

Will merge to 'master'.

* sp/maint-http-info-refs-no-retry:
  Revert "retry request without query when info/refs?query fails"
Merge branch 'jk/smart-http-switch' into jch

Allows users to turn off smart-http when talking to dumb-only
servers.

Will merge to 'master'.

* jk/smart-http-switch:
  remote-curl: let users turn off smart http
  remote-curl: rename is_http variable
Merge branch 'js/rebase-exec-command-not-found' into jch

Will merge to 'master'.

* js/rebase-exec-command-not-found:
  rebase -i: fix misleading error message after 'exec no-such' instruction
Merge branch 'aw/rebase-i-edit-todo' into jch

Will merge to 'master'.

* aw/rebase-i-edit-todo:
  rebase -i: suggest using --edit-todo to fix an unknown instruction
  rebase -i: Add tests for "--edit-todo"
  rebase -i: Teach "--edit-todo" action
  rebase -i: Refactor help messages for todo file
  rebase usage: subcommands can not be combined with -i
Merge branch 'rs/archive-zip-utf8' into jch

With another reroll, it looks like the series is as polished as it
could be.

Will merge to 'master'.

* rs/archive-zip-utf8:
  archive-zip: write extended timestamp
  archive-zip: support UTF-8 paths
  Revert "archive-zip: support UTF-8 paths"
  archive-zip: support UTF-8 paths
Merge branch 'rc/maint-complete-git-p4' into jch

Will merge to 'next'.

* rc/maint-complete-git-p4:
  Teach git-completion about git p4
Merge branch 'rr/maint-submodule-unknown-cmd' into jch

Will merge to 'next' after squashing the tip.

* rr/maint-submodule-unknown-cmd:
  submodule: if $command was not matched, don't parse other args
Merge branch 'rt/maint-clone-single' into jch

Running "git fetch" in a repository made with "git clone --single"
slurps all the branches, defeating the point of "--single".

Will merge to 'next'.

* rt/maint-clone-single:
  clone --single: limit the fetch refspec to fetched branch
Merge branch 'jk/receive-pack-unpack-error-to-pusher' into jch

Send errors from "unpack-objects" and "index-pack" back to the "git
push" over the git and smart-http protocols, just like it is done
for a push over the ssh protocol.

Will merge to 'next'.

* jk/receive-pack-unpack-error-to-pusher:
  receive-pack: drop "n/a" on unpacker errors
  receive-pack: send pack-processing stderr over sideband
  receive-pack: redirect unpack-objects stdout to /dev/null
Merge branch 'jc/blame-follows-renames' into jch

Clarify the "blame" documentation to tell the users that there is
no need to ask for "--follow".

* jc/blame-follows-renames:
  git blame: document that it always follows origin across whole-file renames
Merge branch 'os/commit-submodule-ignore' into jch

"git status" honored the ignore=dirty settings in .gitmodules but
"git commit" didn't.

* os/commit-submodule-ignore:
  commit: pay attention to submodule.$name.ignore in .gitmodules
Merge branch 'jc/maint-name-rev' into jch

"git name-rev" names the given revision based on a ref that can be
reached in the smallest number of steps from the rev, but that is
not useful when the caller wants to know which tag is the oldest one
that contains the rev.  This teaches a new mode to the command that
uses the oldest ref among those which contain the rev.

I am not sure if this is worth it; for one thing, even with the help
from notes-cache, it seems to make the "describe --contains" even
slower. Also the command will be unusably slow for a user who does
not have a write access (hence unable to create or update the
notes-cache).

* jc/maint-name-rev:
  describe --contains: use "name-rev --algorithm=weight"
  name-rev --algorithm=weight: tests and documentation
  name-rev --algorithm=weight: cache the computed weight in notes
  name-rev --algorithm=weight: trivial optimization
  name-rev: --algorithm option
  name_rev: clarify the logic to assign a new tip-name to a commit
  name-rev: lose unnecessary typedef

Conflicts:
	builtin/name-rev.c
Merge branch 'jc/blame-no-follow' into jch

Teaches "--no-follow" option to "git blame" to disable its
whole-file rename detection.

Any comments?

* jc/blame-no-follow:
  blame: pay attention to --no-follow
  diff: accept --no-follow option