git/git.git
6 years agoMerge branch 'jc/decorate-leaky-separator-color'
Junio C Hamano [Fri, 20 Mar 2015 20:50:51 +0000 (13:50 -0700)]
Merge branch 'jc/decorate-leaky-separator-color'

"git log --decorate" did not reset colors correctly around the
branch names.

* jc/decorate-leaky-separator-color:
  log --decorate: do not leak "commit" color into the next item
  Documentation/config.txt: simplify boolean description in the syntax section
  Documentation/config.txt: describe 'color' value type in the "Values" section
  Documentation/config.txt: have a separate "Values" section
  Documentation/config.txt: describe the structure first and then meaning
  Documentation/config.txt: explain multi-valued variables once
  Documentation/config.txt: avoid unnecessary negation

6 years agoMerge branch 'sb/leaks'
Junio C Hamano [Fri, 20 Mar 2015 20:11:53 +0000 (13:11 -0700)]
Merge branch 'sb/leaks'

Code cleanup.

* sb/leaks:
  builtin/help.c: fix memory leak
  bundle.c: fix memory leak
  connect.c: do not leak "conn" after showing diagnosis

6 years agoMerge branch 'rs/use-isxdigit'
Junio C Hamano [Fri, 20 Mar 2015 20:11:52 +0000 (13:11 -0700)]
Merge branch 'rs/use-isxdigit'

Code cleanup.

* rs/use-isxdigit:
  use isxdigit() for checking if a character is a hexadecimal digit

6 years agoMerge branch 'mg/verify-commit'
Junio C Hamano [Fri, 20 Mar 2015 20:11:51 +0000 (13:11 -0700)]
Merge branch 'mg/verify-commit'

Workarounds for certain build of GPG that triggered false breakage
in a test.

* mg/verify-commit:
  t7510: do not fail when gpg warns about insecure memory

6 years agoMerge branch 'km/imap-send-libcurl-options'
Junio C Hamano [Fri, 20 Mar 2015 20:11:50 +0000 (13:11 -0700)]
Merge branch 'km/imap-send-libcurl-options'

"git imap-send" learned to optionally talk with an IMAP server via
libcURL; because there is no other option when Git is built with
NO_OPENSSL option, use that codepath by default under such
configuration.

* km/imap-send-libcurl-options:
  imap-send: use cURL automatically when NO_OPENSSL defined

6 years agoMerge branch 'km/bsd-sysctl'
Junio C Hamano [Fri, 20 Mar 2015 20:11:49 +0000 (13:11 -0700)]
Merge branch 'km/bsd-sysctl'

We now detect number of CPUs on older BSD-derived systems.

* km/bsd-sysctl:
  thread-utils.c: detect CPU count on older BSD-like systems
  configure: support HAVE_BSD_SYSCTL option

6 years agoMerge branch 'km/bsd-shells'
Junio C Hamano [Fri, 20 Mar 2015 20:11:48 +0000 (13:11 -0700)]
Merge branch 'km/bsd-shells'

Portability fixes and workarounds for shell scripts have been added
to help BSD-derived systems.

* km/bsd-shells:
  t5528: do not fail with FreeBSD shell
  help.c: use SHELL_PATH instead of hard-coded "/bin/sh"
  git-compat-util.h: move SHELL_PATH default into header
  git-instaweb: use @SHELL_PATH@ instead of /bin/sh
  git-instaweb: allow running in a working tree subdirectory

6 years agoMerge branch 'rs/daemon-hostname-in-strbuf'
Junio C Hamano [Fri, 20 Mar 2015 20:11:47 +0000 (13:11 -0700)]
Merge branch 'rs/daemon-hostname-in-strbuf'

Code in "git daemon" to parse out and hold hostnames used in
request interpolation has been simplified.

* rs/daemon-hostname-in-strbuf:
  daemon: deglobalize hostname information
  daemon: use strbuf for hostname info

6 years agoMerge branch 'mg/detached-head-report'
Junio C Hamano [Fri, 20 Mar 2015 20:11:46 +0000 (13:11 -0700)]
Merge branch 'mg/detached-head-report'

"git branch" on a detached HEAD always said "(detached from xyz)",
even when "git status" would report "detached at xyz".  The HEAD is
actually at xyz and haven't been moved since it was detached in
such a case, but the user cannot read what the current value of
HEAD is when "detached from" is used.

* mg/detached-head-report:
  branch: name detached HEAD analogous to status
  wt-status: refactor detached HEAD analysis

6 years agoMerge branch 'kn/git-cd-to-empty'
Junio C Hamano [Fri, 20 Mar 2015 20:11:46 +0000 (13:11 -0700)]
Merge branch 'kn/git-cd-to-empty'

"git -C '' subcmd" refused to work in the current directory, unlike
"cd ''" which silently behaves as a no-op.

* kn/git-cd-to-empty:
  git: treat "git -C '<path>'" as a no-op when <path> is empty

6 years agoMerge branch 'nd/versioncmp-prereleases'
Junio C Hamano [Fri, 20 Mar 2015 20:11:45 +0000 (13:11 -0700)]
Merge branch 'nd/versioncmp-prereleases'

The versionsort.prerelease configuration variable can be used to
specify that v1.0-pre1 comes before v1.0.

* nd/versioncmp-prereleases:
  config.txt: update versioncmp.prereleaseSuffix
  versionsort: support reorder prerelease suffixes

6 years agoPost 2.3 cyce (batch #10)
Junio C Hamano [Tue, 17 Mar 2015 23:05:12 +0000 (16:05 -0700)]
Post 2.3 cyce (batch #10)

Also declare that the next one will be called v2.4 ;-)

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoMerge branch 'mg/doc-status-color-slot'
Junio C Hamano [Tue, 17 Mar 2015 23:01:34 +0000 (16:01 -0700)]
Merge branch 'mg/doc-status-color-slot'

Documentation fixes.

* mg/doc-status-color-slot:
  config,completion: add color.status.unmerged

6 years agoMerge branch 'mg/status-v-v'
Junio C Hamano [Tue, 17 Mar 2015 23:01:33 +0000 (16:01 -0700)]
Merge branch 'mg/status-v-v'

"git status" now allows the "-v" to be given twice to show the
differences that are left in the working tree not to be committed.

* mg/status-v-v:
  commit/status: show the index-worktree diff with -v -v
  t7508: test git status -v
  t7508: .gitignore 'expect' and 'output' files

6 years agoMerge branch 'mg/sequencer-commit-messages-always-verbatim'
Junio C Hamano [Tue, 17 Mar 2015 23:01:31 +0000 (16:01 -0700)]
Merge branch 'mg/sequencer-commit-messages-always-verbatim'

"git cherry-pick" used to clean-up the log message even when it is
merely replaying an existing commit.  It now replays the message
verbatim unless you are editing the message of resulting commits.

* mg/sequencer-commit-messages-always-verbatim:
  sequencer: preserve commit messages

6 years agoMerge branch 'sg/completion-remote'
Junio C Hamano [Tue, 17 Mar 2015 23:01:30 +0000 (16:01 -0700)]
Merge branch 'sg/completion-remote'

Code simplification.

* sg/completion-remote:
  completion: simplify __git_remotes()
  completion: add a test for __git_remotes() helper function

6 years agoMerge branch 'es/rebase-i-count-todo'
Junio C Hamano [Tue, 17 Mar 2015 23:01:29 +0000 (16:01 -0700)]
Merge branch 'es/rebase-i-count-todo'

"git rebase -i" recently started to include the number of
commits in the insn sheet to be processed, but on a platform
that prepends leading whitespaces to "wc -l" output, the numbers
are shown with extra whitespaces that aren't necessary.

* es/rebase-i-count-todo:
  rebase-interactive: re-word "item count" comment
  rebase-interactive: suppress whitespace preceding item count

6 years agoMerge branch 'ak/git-done-help-cleanup'
Junio C Hamano [Tue, 17 Mar 2015 23:01:28 +0000 (16:01 -0700)]
Merge branch 'ak/git-done-help-cleanup'

Code simplification.

* ak/git-done-help-cleanup:
  git: make was_alias and done_help non-static

6 years agoMerge branch 'rs/zip-text'
Junio C Hamano [Tue, 17 Mar 2015 23:01:27 +0000 (16:01 -0700)]
Merge branch 'rs/zip-text'

"git archive" can now be told to set the 'text' attribute in the
resulting zip archive.

* rs/zip-text:
  archive-zip: mark text files in archives

6 years agoMerge branch 'rs/deflate-init-cleanup'
Junio C Hamano [Tue, 17 Mar 2015 23:01:26 +0000 (16:01 -0700)]
Merge branch 'rs/deflate-init-cleanup'

Code simplification.

* rs/deflate-init-cleanup:
  zlib: initialize git_zstream in git_deflate_init{,_gzip,_raw}

6 years agoSync with 2.3.3
Junio C Hamano [Sat, 14 Mar 2015 06:11:50 +0000 (23:11 -0700)]
Sync with 2.3.3

6 years agoGit 2.3.3 v2.3.3
Junio C Hamano [Sat, 14 Mar 2015 05:57:25 +0000 (22:57 -0700)]
Git 2.3.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoMerge branch 'mr/doc-clean-f-f' into maint
Junio C Hamano [Sat, 14 Mar 2015 05:56:12 +0000 (22:56 -0700)]
Merge branch 'mr/doc-clean-f-f' into maint

Documentation update.

* mr/doc-clean-f-f:
  Documentation/git-clean.txt: document that -f may need to be given twice

6 years agoMerge branch 'ak/t5516-typofix' into maint
Junio C Hamano [Sat, 14 Mar 2015 05:56:11 +0000 (22:56 -0700)]
Merge branch 'ak/t5516-typofix' into maint

* ak/t5516-typofix:
  t5516: correct misspelled pushInsteadOf

6 years agoMerge branch 'jc/diff-test-updates' into maint
Junio C Hamano [Sat, 14 Mar 2015 05:56:09 +0000 (22:56 -0700)]
Merge branch 'jc/diff-test-updates' into maint

Test clean-up.

* jc/diff-test-updates:
  test_ln_s_add: refresh stat info of fake symbolic links
  t4008: modernise style
  t/diff-lib: check exact object names in compare_diff_raw
  tests: do not borrow from COPYING and README from the real source
  t4010: correct expected object names
  t9300: correct expected object names
  t4008: correct stale comments

6 years agoMerge branch 'jk/diffcore-rename-duplicate' into maint
Junio C Hamano [Sat, 14 Mar 2015 05:56:08 +0000 (22:56 -0700)]
Merge branch 'jk/diffcore-rename-duplicate' into maint

A corrupt input to "git diff -M" can cause us to segfault.

* jk/diffcore-rename-duplicate:
  diffcore-rename: avoid processing duplicate destinations
  diffcore-rename: split locate_rename_dst into two functions

6 years agoMerge branch 'bw/kwset-use-unsigned' into maint
Junio C Hamano [Sat, 14 Mar 2015 05:56:07 +0000 (22:56 -0700)]
Merge branch 'bw/kwset-use-unsigned' into maint

The borrowed code in kwset API did not follow our usual convention
to use "unsigned char" to store values that range from 0-255.

* bw/kwset-use-unsigned:
  kwset: use unsigned char to store values with high-bit set

6 years agoMerge branch 'nd/grep-exclude-standard-help-fix' into maint
Junio C Hamano [Sat, 14 Mar 2015 05:56:06 +0000 (22:56 -0700)]
Merge branch 'nd/grep-exclude-standard-help-fix' into maint

Description given by "grep -h" for its --exclude-standard option
was phrased poorly.

* nd/grep-exclude-standard-help-fix:
  grep: correct help string for --exclude-standard

6 years agoMerge branch 'mg/doc-remote-tags-or-not' into maint
Junio C Hamano [Sat, 14 Mar 2015 05:56:05 +0000 (22:56 -0700)]
Merge branch 'mg/doc-remote-tags-or-not' into maint

"git remote add" mentioned "--tags" and "--no-tags" and was not
clear that fetch from the remote in the future will use the default
behaviour when neither is given to override it.

* mg/doc-remote-tags-or-not:
  git-remote.txt: describe behavior without --tags and --no-tags

6 years agoMerge branch 'mk/diff-shortstat-dirstat-fix' into maint
Junio C Hamano [Sat, 14 Mar 2015 05:56:04 +0000 (22:56 -0700)]
Merge branch 'mk/diff-shortstat-dirstat-fix' into maint

"git diff --shortstat --dirstat=changes" showed a dirstat based on
lines that was never asked by the end user in addition to the
dirstat that the user asked for.

* mk/diff-shortstat-dirstat-fix:
  diff --shortstat --dirstat: remove duplicate output

6 years agoMerge branch 'ms/submodule-update-config-doc' into maint
Junio C Hamano [Sat, 14 Mar 2015 05:56:03 +0000 (22:56 -0700)]
Merge branch 'ms/submodule-update-config-doc' into maint

The interaction between "git submodule update" and the
submodule.*.update configuration was not clearly documented.

* ms/submodule-update-config-doc:
  submodule: improve documentation of update subcommand

6 years agoMerge branch 'jc/apply-beyond-symlink' into maint
Junio C Hamano [Sat, 14 Mar 2015 05:56:02 +0000 (22:56 -0700)]
Merge branch 'jc/apply-beyond-symlink' into maint

"git apply" was not very careful about reading from, removing,
updating and creating paths outside the working tree (under
--index/--cached) or the current directory (when used as a
replacement for GNU patch).

* jc/apply-beyond-symlink:
  apply: do not touch a file beyond a symbolic link
  apply: do not read from beyond a symbolic link
  apply: do not read from the filesystem under --index
  apply: reject input that touches outside the working area

6 years agoMerge branch 'rs/daemon-interpolate' into maint
Junio C Hamano [Sat, 14 Mar 2015 05:56:00 +0000 (22:56 -0700)]
Merge branch 'rs/daemon-interpolate' into maint

"git daemon" looked up the hostname even when "%CH" and "%IP"
interpolations are not requested, which was unnecessary.

* rs/daemon-interpolate:
  daemon: use callback to build interpolated path
  daemon: look up client-supplied hostname lazily

6 years agoMerge branch 'jk/daemon-interpolate' into maint
Junio C Hamano [Sat, 14 Mar 2015 05:55:59 +0000 (22:55 -0700)]
Merge branch 'jk/daemon-interpolate' into maint

The "interpolated-path" option of "git daemon" inserted any string
client declared on the "host=" capability request without checking.
Sanitize and limit %H and %CH to a saner and a valid DNS name.

* jk/daemon-interpolate:
  daemon: sanitize incoming virtual hostname
  t5570: test git-daemon's --interpolated-path option
  git_connect: let user override virtual-host we send to daemon

6 years agobuiltin/help.c: fix memory leak
Stefan Beller [Mon, 9 Mar 2015 16:58:24 +0000 (09:58 -0700)]
builtin/help.c: fix memory leak

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agobundle.c: fix memory leak
Stefan Beller [Tue, 10 Mar 2015 23:51:48 +0000 (16:51 -0700)]
bundle.c: fix memory leak

There was one continue statement without an accompanying `free(ref)`.
Instead of adding that, replace all the free&&continue with a goto
just after writing the refs, where we'd do the free anyway and then
reloop.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agouse isxdigit() for checking if a character is a hexadecimal digit
René Scharfe [Mon, 9 Mar 2015 22:46:54 +0000 (23:46 +0100)]
use isxdigit() for checking if a character is a hexadecimal digit

Use the standard function isxdigit() to make the intent clearer and
avoid using magic constants.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoconnect.c: do not leak "conn" after showing diagnosis
Stefan Beller [Mon, 9 Mar 2015 16:58:22 +0000 (09:58 -0700)]
connect.c: do not leak "conn" after showing diagnosis

When git_connect() is called to see how the URL is parsed for
debugging purposes with CONNECT_DIAG_URL set, the variable conn is
leaked.  At this point in the codeflow, it only has its memory and
no other resource is associated with it, so it is sufficient to
clean it up by just freeing it.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoconfig,completion: add color.status.unmerged
Michael J Gruber [Tue, 10 Mar 2015 16:11:09 +0000 (17:11 +0100)]
config,completion: add color.status.unmerged

Reported-by: "Mladen B." <mladen074@gmail.com>
Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agot7510: do not fail when gpg warns about insecure memory
Kyle J. McKay [Mon, 9 Mar 2015 20:03:01 +0000 (13:03 -0700)]
t7510: do not fail when gpg warns about insecure memory

Depending on how gpg was built, it may issue the following
message to stderr when run:

  Warning: using insecure memory!

When the test is collecting gpg output it is therefore not
enough to just match on a "gpg: " prefix it must also match
on a "Warning: " prefix wherever it needs to match lines
that have been produced by gpg.

Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
Acked-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agot5528: do not fail with FreeBSD shell
Kyle J. McKay [Sun, 8 Mar 2015 15:37:50 +0000 (08:37 -0700)]
t5528: do not fail with FreeBSD shell

The FreeBSD shell converts this expression:

  git ${1:+-c push.default="$1"} push

to this when "$1" is not empty:

  git "-c push.default=$1" push

which causes git to fail.  To avoid this we simply break up the
expansion into two parts so that the whitespace which creates
two arguments instead of one is outside the ${...} like so:

  git ${1:+-c} ${1:+push.default="$1"} push

This has the desired effect on all platforms allowing the test
to pass on FreeBSD.

Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoimap-send: use cURL automatically when NO_OPENSSL defined
Kyle J. McKay [Sun, 8 Mar 2015 05:13:55 +0000 (21:13 -0800)]
imap-send: use cURL automatically when NO_OPENSSL defined

If both USE_CURL_FOR_IMAP_SEND and NO_OPENSSL are defined do
not force the user to add --curl to get a working git imap-send
command.

Instead automatically select --curl and warn and ignore the
--no-curl option.  And while we're in there, correct the
warning message when --curl is requested but not supported.

Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agothread-utils.c: detect CPU count on older BSD-like systems
Kyle J. McKay [Sun, 8 Mar 2015 07:14:37 +0000 (23:14 -0800)]
thread-utils.c: detect CPU count on older BSD-like systems

Not all systems support using sysconf to detect the number
of available CPU cores.  Older BSD and BSD-derived systems
only provide the information via the sysctl function.

If HAVE_BSD_SYSCTL is defined attempt to retrieve the number
of available CPU cores using the sysctl function.

If HAVE_BSD_SYSCTL is not defined or the sysctl function
fails, we still attempt to get the information via sysconf.

Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoconfigure: support HAVE_BSD_SYSCTL option
Kyle J. McKay [Sun, 8 Mar 2015 07:14:36 +0000 (23:14 -0800)]
configure: support HAVE_BSD_SYSCTL option

On BSD-compatible systems some information such as the number
of available CPUs may only be available via the sysctl function.

Add support for a HAVE_BSD_SYSCTL option complete with autoconf
support and include the sys/syctl.h header when the option is
enabled to make the sysctl function available.

Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agohelp.c: use SHELL_PATH instead of hard-coded "/bin/sh"
Kyle J. McKay [Sun, 8 Mar 2015 05:08:00 +0000 (21:08 -0800)]
help.c: use SHELL_PATH instead of hard-coded "/bin/sh"

If the user has set SHELL_PATH in the Makefile then we
should respect that value and use it.

Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agogit-compat-util.h: move SHELL_PATH default into header
Kyle J. McKay [Sun, 8 Mar 2015 05:07:59 +0000 (21:07 -0800)]
git-compat-util.h: move SHELL_PATH default into header

If SHELL_PATH is not defined we use "/bin/sh".  However,
run-command.c is not the only file that needs to use
the default value so move it into a common header.

Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agogit-instaweb: use @SHELL_PATH@ instead of /bin/sh
Kyle J. McKay [Sun, 8 Mar 2015 05:05:38 +0000 (21:05 -0800)]
git-instaweb: use @SHELL_PATH@ instead of /bin/sh

If the user has configured a value for SHELL_PATH then
be sure to use it for any generated scripts instead of
hard-coding /bin/sh.

The first line of the script is handled specially, but
the embedded #!/bin/sh line in the here document will
not be automatically updated unless it uses @SHELL_PATH@.

Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agogit-instaweb: allow running in a working tree subdirectory
Kyle J. McKay [Sun, 8 Mar 2015 05:04:09 +0000 (21:04 -0800)]
git-instaweb: allow running in a working tree subdirectory

Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoPost 2.3 cycle (batch #9)
Junio C Hamano [Tue, 10 Mar 2015 20:53:49 +0000 (13:53 -0700)]
Post 2.3 cycle (batch #9)

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoMerge branch 'mh/expire-updateref-fixes'
Junio C Hamano [Tue, 10 Mar 2015 20:52:39 +0000 (13:52 -0700)]
Merge branch 'mh/expire-updateref-fixes'

Various issues around "reflog expire", e.g. using --updateref when
expiring a reflog for a symbolic reference, have been corrected
and/or made saner.

* mh/expire-updateref-fixes:
  reflog_expire(): never update a reference to null_sha1
  reflog_expire(): ignore --updateref for symbolic references
  reflog: improve and update documentation
  struct ref_lock: delete the force_write member
  lock_ref_sha1_basic(): do not set force_write for missing references
  write_ref_sha1(): move write elision test to callers
  write_ref_sha1(): remove check for lock == NULL

6 years agoMerge branch 'jk/diffcore-rename-duplicate'
Junio C Hamano [Tue, 10 Mar 2015 20:52:38 +0000 (13:52 -0700)]
Merge branch 'jk/diffcore-rename-duplicate'

A corrupt input to "git diff -M" can cause us to segfault.

* jk/diffcore-rename-duplicate:
  diffcore-rename: avoid processing duplicate destinations
  diffcore-rename: split locate_rename_dst into two functions

6 years agoconfig.txt: update versioncmp.prereleaseSuffix
Nguyễn Thái Ngọc Duy [Tue, 10 Mar 2015 10:16:35 +0000 (17:16 +0700)]
config.txt: update versioncmp.prereleaseSuffix

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agodaemon: deglobalize hostname information
René Scharfe [Sat, 7 Mar 2015 10:50:37 +0000 (11:50 +0100)]
daemon: deglobalize hostname information

Move the variables related to the client-supplied hostname into its own
struct, let execute() own an instance of that instead of storing the
information in global variables and pass the struct to any function that
needs to access it as a parameter.

The lifetime of the variables is easier to see this way.  Allocated
memory is released within execute().  The strbufs don't have to be reset
anymore because they are written to only once at most: parse_host_arg()
is only called once by execute() and lookup_hostname() guards against
being called twice using hostname_lookup_done.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agodaemon: use strbuf for hostname info
René Scharfe [Sat, 7 Mar 2015 10:50:29 +0000 (11:50 +0100)]
daemon: use strbuf for hostname info

Convert hostname, canon_hostname, ip_address and tcp_port to strbuf.
This allows to get rid of the helpers strbuf_addstr_or_null() and STRARG
because a strbuf always represents a valid (initially empty) string.

sanitize_client() is not needed anymore and sanitize_client_strbuf()
takes its place and name.

Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agogit: treat "git -C '<path>'" as a no-op when <path> is empty
Karthik Nayak [Fri, 6 Mar 2015 11:18:08 +0000 (16:48 +0530)]
git: treat "git -C '<path>'" as a no-op when <path> is empty

'git -C ""' unhelpfully dies with error "Cannot change to ''",
whereas the shell treats `cd ""' as a no-op.  Taking the shell's
behavior as a precedent, teach git to treat `-C ""' as a no-op, as
well.

Helped-by: Junio C Hamano <gitster@pobox.com>
Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoPost 2.3 cycle (batch #8)
Junio C Hamano [Fri, 6 Mar 2015 23:05:39 +0000 (15:05 -0800)]
Post 2.3 cycle (batch #8)

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoMerge branch 'bw/kwset-use-unsigned'
Junio C Hamano [Fri, 6 Mar 2015 23:02:33 +0000 (15:02 -0800)]
Merge branch 'bw/kwset-use-unsigned'

The borrowed code in kwset API did not follow our usual convention
to use "unsigned char" to store values that range from 0-255.

* bw/kwset-use-unsigned:
  kwset: use unsigned char to store values with high-bit set

6 years agoMerge branch 'ak/t5516-typofix'
Junio C Hamano [Fri, 6 Mar 2015 23:02:32 +0000 (15:02 -0800)]
Merge branch 'ak/t5516-typofix'

* ak/t5516-typofix:
  t5516: correct misspelled pushInsteadOf

6 years agoMerge branch 'ms/submodule-update-config-doc'
Junio C Hamano [Fri, 6 Mar 2015 23:02:31 +0000 (15:02 -0800)]
Merge branch 'ms/submodule-update-config-doc'

The interaction between "git submodule update" and the
submodule.*.update configuration was not clearly documented.

* ms/submodule-update-config-doc:
  submodule: improve documentation of update subcommand

6 years agoMerge branch 'ja/clean-confirm-i18n'
Junio C Hamano [Fri, 6 Mar 2015 23:02:29 +0000 (15:02 -0800)]
Merge branch 'ja/clean-confirm-i18n'

The prompt string "remove?" used when "git clean -i" asks the user
if a path should be removed was localizable, but the code always
expects a substring of "yes" to tell it to go ahead.  Always show
[y/N] as part of this prompt to hint that the answer is not (yet)
localized.

* ja/clean-confirm-i18n:
  Add hint interactive cleaning

6 years agoMerge branch 'mk/diff-shortstat-dirstat-fix'
Junio C Hamano [Fri, 6 Mar 2015 23:02:28 +0000 (15:02 -0800)]
Merge branch 'mk/diff-shortstat-dirstat-fix'

"git diff --shortstat --dirstat=changes" showed a dirstat based on
lines that was never asked by the end user in addition to the
dirstat that the user asked for.

* mk/diff-shortstat-dirstat-fix:
  diff --shortstat --dirstat: remove duplicate output

6 years agoMerge branch 'mg/doc-remote-tags-or-not'
Junio C Hamano [Fri, 6 Mar 2015 23:02:27 +0000 (15:02 -0800)]
Merge branch 'mg/doc-remote-tags-or-not'

"git remote add" mentioned "--tags" and "--no-tags" and was not
clear that fetch from the remote in the future will use the default
behaviour when neither is given to override it.

* mg/doc-remote-tags-or-not:
  git-remote.txt: describe behavior without --tags and --no-tags

6 years agoMerge branch 'nd/grep-exclude-standard-help-fix'
Junio C Hamano [Fri, 6 Mar 2015 23:02:27 +0000 (15:02 -0800)]
Merge branch 'nd/grep-exclude-standard-help-fix'

Description given by "grep -h" for its --exclude-standard option
was phrased poorly.

* nd/grep-exclude-standard-help-fix:
  grep: correct help string for --exclude-standard

6 years agoMerge branch 'mr/doc-clean-f-f'
Junio C Hamano [Fri, 6 Mar 2015 23:02:26 +0000 (15:02 -0800)]
Merge branch 'mr/doc-clean-f-f'

Documentation update.

* mr/doc-clean-f-f:
  Documentation/git-clean.txt: document that -f may need to be given twice

6 years agoMerge branch 'ye/http-accept-language'
Junio C Hamano [Fri, 6 Mar 2015 23:02:24 +0000 (15:02 -0800)]
Merge branch 'ye/http-accept-language'

Compilation fix for a recent topic in 'master'.

* ye/http-accept-language:
  gettext.c: move get_preferred_languages() from http.c

6 years agoSync with 2.3.2
Junio C Hamano [Fri, 6 Mar 2015 22:59:12 +0000 (14:59 -0800)]
Sync with 2.3.2

* maint:
  Git 2.3.2

6 years agoGit 2.3.2 v2.3.2
Junio C Hamano [Fri, 6 Mar 2015 22:58:14 +0000 (14:58 -0800)]
Git 2.3.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoMerge branch 'rj/no-xopen-source-for-cygwin' into maint
Junio C Hamano [Fri, 6 Mar 2015 22:57:58 +0000 (14:57 -0800)]
Merge branch 'rj/no-xopen-source-for-cygwin' into maint

Code cleanups.

* rj/no-xopen-source-for-cygwin:
  git-compat-util.h: remove redundant code

6 years agoMerge branch 'rs/simple-cleanups' into maint
Junio C Hamano [Fri, 6 Mar 2015 22:57:57 +0000 (14:57 -0800)]
Merge branch 'rs/simple-cleanups' into maint

Code cleanups.

* rs/simple-cleanups:
  sha1_name: use strlcpy() to copy strings
  pretty: use starts_with() to check for a prefix
  for-each-ref: use skip_prefix() to avoid duplicate string comparison
  connect: use strcmp() for string comparison

6 years agoMerge branch 'mm/am-c-doc' into maint
Junio C Hamano [Fri, 6 Mar 2015 22:57:56 +0000 (14:57 -0800)]
Merge branch 'mm/am-c-doc' into maint

The configuration variable 'mailinfo.scissors' was hard to
discover in the documentation.

* mm/am-c-doc:
  Documentation/git-am.txt: mention mailinfo.scissors config variable
  Documentation/config.txt: document mailinfo.scissors

6 years agoMerge branch 'ew/svn-maint-fixes' into maint
Junio C Hamano [Fri, 6 Mar 2015 22:57:55 +0000 (14:57 -0800)]
Merge branch 'ew/svn-maint-fixes' into maint

Correct a breakage to git-svn around v2.2 era that triggers
premature closing of FileHandle.

* ew/svn-maint-fixes:
  Git::SVN::*: avoid premature FileHandle closure
  git-svn: fix localtime=true on non-glibc environments

6 years agoMerge branch 'km/send-email-getopt-long-workarounds' into maint
Junio C Hamano [Fri, 6 Mar 2015 22:57:54 +0000 (14:57 -0800)]
Merge branch 'km/send-email-getopt-long-workarounds' into maint

Even though we officially haven't dropped Perl 5.8 support, the
Getopt::Long package that came with it does not support "--no-"
prefix to negate a boolean option; manually add support to help
people with older Getopt::Long package.

* km/send-email-getopt-long-workarounds:
  git-send-email.perl: support no- prefix with older GetOptions

6 years agocompletion: simplify __git_remotes()
SZEDER Gábor [Wed, 4 Mar 2015 14:10:29 +0000 (15:10 +0100)]
completion: simplify __git_remotes()

The __git_remotes() helper function lists the remotes from the config
file by processing the output of a 'git config' query.  A simple 'git
remote' produces the exact same output, so run that instead.

Remotes under '$GIT_DIR/remotes' are still listed by running 'ls -1',
because 'git remote' unfortunately ignores them.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agocompletion: add a test for __git_remotes() helper function
SZEDER Gábor [Wed, 4 Mar 2015 14:10:28 +0000 (15:10 +0100)]
completion: add a test for __git_remotes() helper function

The test checks that both remotes under '$GIT_DIR/remotes' and remotes
in the config file are listed.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agorebase-interactive: re-word "item count" comment
Eric Sunshine [Wed, 4 Mar 2015 07:53:05 +0000 (02:53 -0500)]
rebase-interactive: re-word "item count" comment

97f05f43 (Show number of TODO items for interactive rebase, 2014-12-10)
taught rebase-interactive to display an item count in the instruction
list comments:

    # Rebase 46640c6..5568fd5 onto 46640c6 (4 TODO item(s))
    #
    # Commands:
    # p, pick = use commit
    # ...

However, with the exception of the --edit-todo option, "TODO" is a
one-off term, never presented to the user by rebase-interactive in
any other context. The item count is in fact the number of commands
("pick", "edit", etc.) remaining on the instruction sheet, and the
comment immediately following it talks about "Commands". Consequently,
replace "(# TODO item(s))" with the more accurate and meaningful
"(# command(s))".

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agorebase-interactive: suppress whitespace preceding item count
Eric Sunshine [Wed, 4 Mar 2015 07:53:04 +0000 (02:53 -0500)]
rebase-interactive: suppress whitespace preceding item count

97f05f43 (Show number of TODO items for interactive rebase, 2014-12-10)
taught rebase-interactive to compute an item count with 'wc -l' and
display it in the instruction list comments:

    # Rebase 46640c6..5568fd5 onto 46640c6 (4 TODO item(s))

On Mac OS X, however, it renders as:

    # Rebase 46640c6..5568fd5 onto 46640c6 (       4 TODO item(s))

since 'wc -l' indents its output with leading spaces. Fix this.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agogit: make was_alias and done_help non-static
Alexander Kuleshov [Mon, 2 Mar 2015 12:02:37 +0000 (18:02 +0600)]
git: make was_alias and done_help non-static

'was_alias' variable does not need to store it's value on each
iteration in the loop; this variable gets assigned the result
of run_argv() every time in the loop before being used.

'done_help' variable does not need to be static variable too if
we move it out the loop.

Signed-off-by: Alexander Kuleshov <kuleshovmail@gmail.com>
Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agobranch: name detached HEAD analogous to status
Michael J Gruber [Fri, 6 Mar 2015 15:04:07 +0000 (16:04 +0100)]
branch: name detached HEAD analogous to status

"git status" carefully names a detached HEAD "at" resp. "from" a rev or
ref depending on whether the detached HEAD has moved since. "git branch"
always uses "from", which can be confusing, because a status-aware user
would interpret this as moved detached HEAD.

Make "git branch" use the same logic and wording.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agowt-status: refactor detached HEAD analysis
Michael J Gruber [Fri, 6 Mar 2015 15:04:06 +0000 (16:04 +0100)]
wt-status: refactor detached HEAD analysis

wt_status_print() is the only caller of wt_status_get_detached_from().
The latter performs most of the analysis of a detached HEAD, including
finding state->detached_from; the caller checks whether the detached
HEAD is still at state->detached_from or has moved away.

Move that last bit of analysis to wt_status_get_detached_from(), too,
and store the boolean result in state->detached_at.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agosequencer: preserve commit messages
Michael J Gruber [Fri, 6 Mar 2015 13:55:32 +0000 (14:55 +0100)]
sequencer: preserve commit messages

sequencer calls "commit" with default options, which implies
"--cleanup=default" unless the user specified something else in their
config. This leads to cherry-picked commits getting a cleaned up commit
message, which is usually not an intended side-effect.

Make the sequencer use "--cleanup=verbatim" so that it preserves commit
messages independent of the default, unless the user has set config for "commit"
or the message is amended with -s or -x.

Reported-by: Christoph Anton Mitterer <calestyo@scientia.net>
Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agocommit/status: show the index-worktree diff with -v -v
Michael J Gruber [Fri, 6 Mar 2015 09:43:35 +0000 (10:43 +0100)]
commit/status: show the index-worktree diff with -v -v

git commit and git status in long format show the diff between HEAD
and the index when given -v. This allows previewing a commit to be made.

They also list tracked files with unstaged changes, but without a diff.

Introduce '-v -v' which shows the diff between the index and the
worktree in addition to the HEAD index diff. This allows a review of unstaged
changes which might be missing from the commit.

In the case of '-v -v', additonal header lines

Changes to be committed:

and

Changes not staged for commit:

are inserted before the diffs, which are equal to those in the status
part; the latter preceded by 50*"-" to make it stick out more.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agot7508: test git status -v
Michael J Gruber [Fri, 6 Mar 2015 09:43:34 +0000 (10:43 +0100)]
t7508: test git status -v

"status -v" had no test. Include one.

This also requires changing the .gitignore subtests, which is a good thing:
they include testing a .gitignore pattern now.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agot7508: .gitignore 'expect' and 'output' files
Junio C Hamano [Fri, 6 Mar 2015 09:43:33 +0000 (10:43 +0100)]
t7508: .gitignore 'expect' and 'output' files

These files are used to observe the behaviour of the 'status'
command and if there weren't any such observer, the expected
output from 'status' wouldn't even mention them.

Place them in .gitignore to unclutter the output expected by the
tests.  An added benefit is that future tests can add such files
that are purely for use by the observer, i.e. the tests themselves,
by naming them as expect-foo and/or output-bar.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agozlib: initialize git_zstream in git_deflate_init{,_gzip,_raw}
René Scharfe [Thu, 5 Mar 2015 22:49:46 +0000 (23:49 +0100)]
zlib: initialize git_zstream in git_deflate_init{,_gzip,_raw}

Clear the git_zstream variable at the start of git_deflate_init() etc.
so that callers don't have to do that.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoarchive-zip: mark text files in archives
René Scharfe [Thu, 5 Mar 2015 19:06:02 +0000 (20:06 +0100)]
archive-zip: mark text files in archives

Set the text flag for ZIP archive entries that look like text files so
that unzip -a can be used to perform end-of-line conversions.  Info-ZIP
zip does the same.

Detect binary files the same way as git diff and git grep do, namely by
checking for the attribute "diff" and its negation "-diff", and if none
is found by falling back to checking for the presence of NUL bytes in
the first few bytes of the file contents.

7-Zip, Windows' built-in ZIP functionality and Info-ZIP unzip without
the switch -a are not affected by the change and still extract text
files without doing any end-of-line conversions.

NB: The actual end-of-line style used in the archive entries doesn't
matter to unzip -a, as it converts any CR, CRLF and LF to the line end
characters appropriate for the platform it is running on.

Suggested-by: Ulrike Fischer <luatex@nililand.de>
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoSync with maint
Junio C Hamano [Thu, 5 Mar 2015 21:16:27 +0000 (13:16 -0800)]
Sync with maint

* maint:
  Prepare for 2.3.2

6 years agoPrepare for 2.3.2
Junio C Hamano [Thu, 5 Mar 2015 21:15:53 +0000 (13:15 -0800)]
Prepare for 2.3.2

6 years agoMerge branch 'sb/plug-leak-in-make-cache-entry' into maint
Junio C Hamano [Thu, 5 Mar 2015 21:13:13 +0000 (13:13 -0800)]
Merge branch 'sb/plug-leak-in-make-cache-entry' into maint

"update-index --refresh" used to leak when an entry cannot be
refreshed for whatever reason.

* sb/plug-leak-in-make-cache-entry:
  read-cache.c: free cache entry when refreshing fails

6 years agoMerge branch 'jk/fast-import-die-nicely-fix' into maint
Junio C Hamano [Thu, 5 Mar 2015 21:13:12 +0000 (13:13 -0800)]
Merge branch 'jk/fast-import-die-nicely-fix' into maint

"git fast-import" used to crash when it could not close and
conclude the resulting packfile cleanly.

* jk/fast-import-die-nicely-fix:
  fast-import: avoid running end_packfile recursively

6 years agoMerge branch 'es/blame-commit-info-fix' into maint
Junio C Hamano [Thu, 5 Mar 2015 21:13:12 +0000 (13:13 -0800)]
Merge branch 'es/blame-commit-info-fix' into maint

"git blame" died, trying to free an uninitialized piece of memory.

* es/blame-commit-info-fix:
  builtin/blame: destroy initialized commit_info only

6 years agoMerge branch 'ab/merge-file-prefix' into maint
Junio C Hamano [Thu, 5 Mar 2015 21:13:10 +0000 (13:13 -0800)]
Merge branch 'ab/merge-file-prefix' into maint

"git merge-file" did not work correctly in a subdirectory.

* ab/merge-file-prefix:
  merge-file: correctly open files when in a subdir

6 years agoMerge branch 'ps/submodule-sanitize-path-upon-add' into maint
Junio C Hamano [Thu, 5 Mar 2015 21:13:09 +0000 (13:13 -0800)]
Merge branch 'ps/submodule-sanitize-path-upon-add' into maint

"git submodule add" failed to squash "path/to/././submodule" to
"path/to/submodule".

* ps/submodule-sanitize-path-upon-add:
  git-submodule.sh: fix '/././' path normalization

6 years agoMerge branch 'jk/prune-mtime' into maint
Junio C Hamano [Thu, 5 Mar 2015 21:13:08 +0000 (13:13 -0800)]
Merge branch 'jk/prune-mtime' into maint

In v2.2.0, we broke "git prune" that runs in a repository that
borrows from an alternate object store.

* jk/prune-mtime:
  sha1_file: fix iterating loose alternate objects
  for_each_loose_file_in_objdir: take an optional strbuf path

6 years agoMerge branch 'tc/curl-vernum-output-broken-in-7.11' into maint
Junio C Hamano [Thu, 5 Mar 2015 21:13:07 +0000 (13:13 -0800)]
Merge branch 'tc/curl-vernum-output-broken-in-7.11' into maint

Certain older vintages of cURL give irregular output from
"curl-config --vernum", which confused our build system.

* tc/curl-vernum-output-broken-in-7.11:
  Makefile: handle broken curl version number in version check

6 years agoMerge branch 'es/squelch-openssl-warnings-on-macosx' into maint
Junio C Hamano [Thu, 5 Mar 2015 21:13:06 +0000 (13:13 -0800)]
Merge branch 'es/squelch-openssl-warnings-on-macosx' into maint

An earlier workaround to squelch unhelpful deprecation warnings
from the complier on Mac OSX unnecessarily set minimum required
version of the OS, which the user might want to raise (or lower)
for other reasons.

* es/squelch-openssl-warnings-on-macosx:
  git-compat-util: do not step on MAC_OS_X_VERSION_MIN_REQUIRED

6 years agoMerge branch 'jc/conf-var-doc' into maint
Junio C Hamano [Thu, 5 Mar 2015 21:13:05 +0000 (13:13 -0800)]
Merge branch 'jc/conf-var-doc' into maint

Longstanding configuration variable naming rules has been added to
the documentation.

* jc/conf-var-doc:
  CodingGuidelines: describe naming rules for configuration variables
  config.txt: mark deprecated variables more prominently
  config.txt: clarify that add.ignore-errors is deprecated

6 years agoMerge branch 'av/wincred-with-at-in-username-fix' into maint
Junio C Hamano [Thu, 5 Mar 2015 21:13:04 +0000 (13:13 -0800)]
Merge branch 'av/wincred-with-at-in-username-fix' into maint

The credential helper for Windows (in contrib/) used to mishandle
a user name with an at-sign in it.

* av/wincred-with-at-in-username-fix:
  wincred: fix get credential if username has "@"

6 years agoMerge branch 'ch/new-gpg-drops-rfc-1991' into maint
Junio C Hamano [Thu, 5 Mar 2015 21:13:03 +0000 (13:13 -0800)]
Merge branch 'ch/new-gpg-drops-rfc-1991' into maint

Older GnuPG implementations may not correctly import the keyring
material we prepare for the tests to use.

* ch/new-gpg-drops-rfc-1991:
  t/lib-gpg: sanity-check that we can actually sign
  t/lib-gpg: include separate public keys in keyring.gpg

6 years agoMerge branch 'jc/remote-set-url-doc' into maint
Junio C Hamano [Thu, 5 Mar 2015 21:13:03 +0000 (13:13 -0800)]
Merge branch 'jc/remote-set-url-doc' into maint

Clarify in the documentation that "remote.<nick>.pushURL" and
"remote.<nick>.URL" are there to name the same repository accessed
via different transports, not two separate repositories.

* jc/remote-set-url-doc:
  Documentation/git-remote.txt: stress that set-url is not for triangular

6 years agoMerge branch 'jk/pack-bitmap' into maint
Junio C Hamano [Thu, 5 Mar 2015 21:13:02 +0000 (13:13 -0800)]
Merge branch 'jk/pack-bitmap' into maint

The pack bitmap support did not build with older versions of GCC.

* jk/pack-bitmap:
  ewah: fix building with gcc < 3.4.0