git/git.git
5 years agogit-p4: add failing test for submit from detached head
Luke Diamand [Sat, 21 Nov 2015 09:54:39 +0000 (09:54 +0000)]
git-p4: add failing test for submit from detached head

git-p4 can't submit from a detached head. This test case
demonstrates the problem.

Signed-off-by: Luke Diamand <luke@diamand.org>
Signed-off-by: Jeff King <peff@peff.net>
5 years agoRelease Notes: typofix
Junio C Hamano [Wed, 9 Sep 2015 17:34:35 +0000 (10:34 -0700)]
Release Notes: typofix

Thanks to Andreas Schwab for careful reading.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoGit 2.6-rc1 v2.6.0-rc1
Junio C Hamano [Tue, 8 Sep 2015 22:38:43 +0000 (15:38 -0700)]
Git 2.6-rc1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoMerge branch 'jc/builtin-am-signoff-regression-fix'
Junio C Hamano [Tue, 8 Sep 2015 22:34:57 +0000 (15:34 -0700)]
Merge branch 'jc/builtin-am-signoff-regression-fix'

Recent "git am" had regression when adding a Signed-off-by line
with its "-s" option by an unintended tightening of how an existing
trailer block is detected.

* jc/builtin-am-signoff-regression-fix:
  am: match --signoff to the original scripted version

5 years agoam: match --signoff to the original scripted version
Junio C Hamano [Sun, 6 Sep 2015 02:56:20 +0000 (19:56 -0700)]
am: match --signoff to the original scripted version

Linus noticed that the recently reimplemented "git am -s" defines
the trailer block too rigidly, resulting in an unnecessary blank
line between the existing sign-offs and his new sign-off.  An e-mail
submission sent to Linus in real life ends with mixture of sign-offs
and commentaries, e.g.

title here

message here

Signed-off-by: Original Author <original@auth.or>
[rv: tweaked frotz and nitfol]
Signed-off-by: Re Viewer <rv@ew.er>
Signed-off-by: Other Reviewer <other@rev.ewer>
---
patch here

Because the reimplementation reused append_signoff() helper that is
used by other codepaths, which is unaware that people intermix such
comments with their sign-offs in the trailer block, such a message
was judged to end with a non-trailer, resulting in an extra blank
line before adding a new sign-off.

The original scripted version of "git am" used a lot looser
definition, i.e. "if and only if there is no line that begins with
Signed-off-by:, add a blank line before adding a new sign-off".  For
the upcoming release, stop using the append_signoff() in "git am"
and reimplement the looser definition used by the scripted version
to use only in "git am" to fix this regression in "am" while
avoiding new regressions to other users of append_signoff().

In the longer term, we should look into loosening append_signoff()
so that other codepaths that add a new sign-off behave the same way
as "git am -s", but that is a task for post-release.

Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoSync with maint
Junio C Hamano [Fri, 4 Sep 2015 21:34:57 +0000 (14:34 -0700)]
Sync with maint

* maint:

5 years agoMerge branch 'ee/clean-test-fixes' into maint
Junio C Hamano [Fri, 4 Sep 2015 02:18:05 +0000 (19:18 -0700)]
Merge branch 'ee/clean-test-fixes' into maint

* ee/clean-test-fixes:
  t7300: fix broken && chains

5 years agoMerge branch 'jk/log-missing-default-HEAD' into maint
Junio C Hamano [Fri, 4 Sep 2015 02:18:03 +0000 (19:18 -0700)]
Merge branch 'jk/log-missing-default-HEAD' into maint

"git init empty && git -C empty log" said "bad default revision 'HEAD'",
which was found to be a bit confusing to new users.

* jk/log-missing-default-HEAD:
  log: diagnose empty HEAD more clearly

5 years agoMerge branch 'cc/trailers-corner-case-fix' into maint
Junio C Hamano [Fri, 4 Sep 2015 02:18:03 +0000 (19:18 -0700)]
Merge branch 'cc/trailers-corner-case-fix' into maint

The "interpret-trailers" helper mistook a multi-paragraph title of
a commit log message with a colon in it as the end of the trailer
block.

* cc/trailers-corner-case-fix:
  trailer: support multiline title
  trailer: retitle a test and correct an in-comment message
  trailer: ignore first line of message

5 years agoMerge branch 'dt/commit-preserve-base-index-upon-opportunistic-cache-tree-update...
Junio C Hamano [Fri, 4 Sep 2015 02:18:02 +0000 (19:18 -0700)]
Merge branch 'dt/commit-preserve-base-index-upon-opportunistic-cache-tree-update' into maint

When re-priming the cache-tree opportunistically while committing
the in-core index as-is, we mistakenly invalidated the in-core
index too aggressively, causing the experimental split-index code
to unnecessarily rewrite the on-disk index file(s).

* dt/commit-preserve-base-index-upon-opportunistic-cache-tree-update:
  commit: don't rewrite shared index unnecessarily

5 years agoMerge branch 'rs/archive-zip-many' into maint
Junio C Hamano [Fri, 4 Sep 2015 02:18:01 +0000 (19:18 -0700)]
Merge branch 'rs/archive-zip-many' into maint

"git archive" did not use zip64 extension when creating an archive
with more than 64k entries, which nobody should need, right ;-)?

* rs/archive-zip-many:
  archive-zip: support more than 65535 entries
  archive-zip: use a local variable to store the creator version
  t5004: test ZIP archives with many entries

5 years agoMerge branch 'jc/calloc-pathspec' into maint
Junio C Hamano [Fri, 4 Sep 2015 02:18:00 +0000 (19:18 -0700)]
Merge branch 'jc/calloc-pathspec' into maint

Minor code cleanup.

* jc/calloc-pathspec:
  ps_matched: xcalloc() takes nmemb and then element size

5 years agoMerge branch 'ss/fix-config-fd-leak' into maint
Junio C Hamano [Fri, 4 Sep 2015 02:17:59 +0000 (19:17 -0700)]
Merge branch 'ss/fix-config-fd-leak' into maint

* ss/fix-config-fd-leak:
  config: close config file handle in case of error

5 years agoMerge branch 'sg/wt-status-header-inclusion' into maint
Junio C Hamano [Fri, 4 Sep 2015 02:17:57 +0000 (19:17 -0700)]
Merge branch 'sg/wt-status-header-inclusion' into maint

* sg/wt-status-header-inclusion:
  wt-status: move #include "pathspec.h" to the header

5 years agoMerge branch 'po/po-readme' into maint
Junio C Hamano [Fri, 4 Sep 2015 02:17:56 +0000 (19:17 -0700)]
Merge branch 'po/po-readme' into maint

Doc updates for i18n.

* po/po-readme:
  po/README: Update directions for l10n contributors

5 years agoMerge branch 'sg/t3020-typofix' into maint
Junio C Hamano [Fri, 4 Sep 2015 02:17:54 +0000 (19:17 -0700)]
Merge branch 'sg/t3020-typofix' into maint

* sg/t3020-typofix:
  t3020: fix typo in test description

5 years agoMerge branch 'as/docfix-reflog-expire-unreachable' into maint
Junio C Hamano [Fri, 4 Sep 2015 02:17:53 +0000 (19:17 -0700)]
Merge branch 'as/docfix-reflog-expire-unreachable' into maint

Docfix.

* as/docfix-reflog-expire-unreachable:
  Documentation/config: fix inconsistent label on gc.*.reflogExpireUnreachable

5 years agoMerge branch 'nd/fixup-linked-gitdir' into maint
Junio C Hamano [Fri, 4 Sep 2015 02:17:53 +0000 (19:17 -0700)]
Merge branch 'nd/fixup-linked-gitdir' into maint

The code in "multiple-worktree" support that attempted to recover
from an inconsistent state updated an incorrect file.

* nd/fixup-linked-gitdir:
  setup: update the right file in multiple checkouts

5 years agoMerge branch 'jk/rev-list-has-no-notes' into maint
Junio C Hamano [Fri, 4 Sep 2015 02:17:52 +0000 (19:17 -0700)]
Merge branch 'jk/rev-list-has-no-notes' into maint

"git rev-list" does not take "--notes" option, but did not complain
when one is given.

* jk/rev-list-has-no-notes:
  rev-list: make it obvious that we do not support notes

5 years agoMerge branch 'jk/fix-alias-pager-config-key-warnings' into maint
Junio C Hamano [Fri, 4 Sep 2015 02:17:52 +0000 (19:17 -0700)]
Merge branch 'jk/fix-alias-pager-config-key-warnings' into maint

Because the configuration system does not allow "alias.0foo" and
"pager.0foo" as the configuration key, the user cannot use '0foo'
as a custom command name anyway, but "git 0foo" tried to look these
keys up and emitted useless warnings before saying '0foo is not a
git command'.  These warning messages have been squelched.

* jk/fix-alias-pager-config-key-warnings:
  config: silence warnings for command names with invalid keys

5 years agoMerge branch 'nd/dwim-wildcards-as-pathspecs' into maint
Junio C Hamano [Fri, 4 Sep 2015 02:17:51 +0000 (19:17 -0700)]
Merge branch 'nd/dwim-wildcards-as-pathspecs' into maint

Test updates for Windows.

* nd/dwim-wildcards-as-pathspecs:
  t2019: skip test requiring '*' in a file name non Windows

5 years agoMerge branch 'sg/help-group' into maint
Junio C Hamano [Fri, 4 Sep 2015 02:17:51 +0000 (19:17 -0700)]
Merge branch 'sg/help-group' into maint

We rewrote one of the build scripts in Perl but this reimplements
in Bourne shell.

* sg/help-group:
  generate-cmdlist: re-implement as shell script

5 years agoMerge branch 'ps/t1509-chroot-test-fixup' into maint
Junio C Hamano [Fri, 4 Sep 2015 02:17:50 +0000 (19:17 -0700)]
Merge branch 'ps/t1509-chroot-test-fixup' into maint

t1509 test that requires a dedicated VM environment had some
bitrot, which has been corrected.

* ps/t1509-chroot-test-fixup:
  tests: fix cleanup after tests in t1509-root-worktree
  tests: fix broken && chains in t1509-root-worktree

5 years agoMerge branch 'jh/strbuf-read-use-read-in-full' into maint
Junio C Hamano [Fri, 4 Sep 2015 02:17:50 +0000 (19:17 -0700)]
Merge branch 'jh/strbuf-read-use-read-in-full' into maint

strbuf_read() used to have one extra iteration (and an unnecessary
strbuf_grow() of 8kB), which was eliminated.

* jh/strbuf-read-use-read-in-full:
  strbuf_read(): skip unnecessary strbuf_grow() at eof

5 years agoMerge branch 'jk/long-error-messages' into maint
Junio C Hamano [Fri, 4 Sep 2015 02:17:49 +0000 (19:17 -0700)]
Merge branch 'jk/long-error-messages' into maint

The codepath to produce error messages had a hard-coded limit to
the size of the message, primarily to avoid memory allocation while
calling die().

* jk/long-error-messages:
  vreportf: avoid intermediate buffer
  vreportf: report to arbitrary filehandles

5 years agoMerge branch 'cb/open-noatime-clear-errno' into maint
Junio C Hamano [Fri, 4 Sep 2015 02:17:49 +0000 (19:17 -0700)]
Merge branch 'cb/open-noatime-clear-errno' into maint

When trying to see that an object does not exist, a state errno
leaked from our "first try to open a packfile with O_NOATIME and
then if it fails retry without it" logic on a system that refuses
O_NOATIME.  This confused us and caused us to die, saying that the
packfile is unreadable, when we should have just reported that the
object does not exist in that packfile to the caller.

* cb/open-noatime-clear-errno:
  git_open_noatime: return with errno=0 on success

5 years agoMerge branch 'mh/get-remote-group-fix' into maint
Junio C Hamano [Fri, 4 Sep 2015 02:17:47 +0000 (19:17 -0700)]
Merge branch 'mh/get-remote-group-fix' into maint

An off-by-one error made "git remote" to mishandle a remote with a
single letter nickname.

* mh/get-remote-group-fix:
  get_remote_group(): use skip_prefix()
  get_remote_group(): eliminate superfluous call to strcspn()
  get_remote_group(): rename local variable "space" to "wordlen"
  get_remote_group(): handle remotes with single-character names

5 years agoMerge branch 'jk/am-rerere-lock-fix'
Junio C Hamano [Thu, 3 Sep 2015 21:14:01 +0000 (14:14 -0700)]
Merge branch 'jk/am-rerere-lock-fix'

Recent "git am" introduced a double-locking failure when used with
the "--3way" option that invokes rerere machinery.

* jk/am-rerere-lock-fix:
  rerere: release lockfile in non-writing functions

5 years agoGit 2.6-rc0 v2.6.0-rc0
Junio C Hamano [Wed, 2 Sep 2015 19:55:21 +0000 (12:55 -0700)]
Git 2.6-rc0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoMerge branch 'cc/trailers-corner-case-fix'
Junio C Hamano [Wed, 2 Sep 2015 19:50:21 +0000 (12:50 -0700)]
Merge branch 'cc/trailers-corner-case-fix'

The "interpret-trailers" helper mistook a multi-paragraph title of
a commit log message with a colon in it as the end of the trailer
block.

* cc/trailers-corner-case-fix:
  trailer: support multiline title

5 years agoMerge branch 'sb/read-cache-one-indent-style-fix'
Junio C Hamano [Wed, 2 Sep 2015 19:50:18 +0000 (12:50 -0700)]
Merge branch 'sb/read-cache-one-indent-style-fix'

* sb/read-cache-one-indent-style-fix:
  read-cache: fix indentation in read_index_from

5 years agoMerge branch 'ee/clean-test-fixes'
Junio C Hamano [Wed, 2 Sep 2015 19:50:16 +0000 (12:50 -0700)]
Merge branch 'ee/clean-test-fixes'

* ee/clean-test-fixes:
  t7300: fix broken && chains

5 years agoMerge branch 'jk/log-missing-default-HEAD'
Junio C Hamano [Wed, 2 Sep 2015 19:50:08 +0000 (12:50 -0700)]
Merge branch 'jk/log-missing-default-HEAD'

"git init empty && git -C empty log" said "bad default revision 'HEAD'",
which was found to be a bit confusing to new users.

* jk/log-missing-default-HEAD:
  log: diagnose empty HEAD more clearly

5 years agoNinth batch for 2.6
Junio C Hamano [Tue, 1 Sep 2015 23:31:58 +0000 (16:31 -0700)]
Ninth batch for 2.6

Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoMerge branch 'dt/commit-preserve-base-index-upon-opportunistic-cache-tree-update'
Junio C Hamano [Tue, 1 Sep 2015 23:31:29 +0000 (16:31 -0700)]
Merge branch 'dt/commit-preserve-base-index-upon-opportunistic-cache-tree-update'

When re-priming the cache-tree opportunistically while committing
the in-core index as-is, we mistakenly invalidated the in-core
index too aggressively, causing the experimental split-index code
to unnecessarily rewrite the on-disk index file(s).

* dt/commit-preserve-base-index-upon-opportunistic-cache-tree-update:
  commit: don't rewrite shared index unnecessarily

5 years agoMerge branch 'rt/remove-hold-lockfile-for-append'
Junio C Hamano [Tue, 1 Sep 2015 23:31:26 +0000 (16:31 -0700)]
Merge branch 'rt/remove-hold-lockfile-for-append'

* rt/remove-hold-lockfile-for-append:
  lockfile: remove function "hold_lock_file_for_append"

5 years agoMerge branch 'rs/archive-zip-many'
Junio C Hamano [Tue, 1 Sep 2015 23:31:24 +0000 (16:31 -0700)]
Merge branch 'rs/archive-zip-many'

"git archive" did not use zip64 extension when creating an archive
with more than 64k entries, which nobody should need, right ;-)?

* rs/archive-zip-many:
  archive-zip: support more than 65535 entries
  archive-zip: use a local variable to store the creator version
  t5004: test ZIP archives with many entries

5 years agoMerge branch 'ls/p4-fold-case-client-specs'
Junio C Hamano [Tue, 1 Sep 2015 23:31:22 +0000 (16:31 -0700)]
Merge branch 'ls/p4-fold-case-client-specs'

On case insensitive systems, "git p4" did not work well with client
specs.

* ls/p4-fold-case-client-specs:
  git-p4: honor core.ignorecase when using P4 client specs

5 years agoMerge branch 'ah/submodule-typofix-in-error'
Junio C Hamano [Tue, 1 Sep 2015 23:31:21 +0000 (16:31 -0700)]
Merge branch 'ah/submodule-typofix-in-error'

Error string fix.

* ah/submodule-typofix-in-error:
  git-submodule: remove extraneous space from error message

5 years agoMerge branch 'ah/reflog-typofix-in-error'
Junio C Hamano [Tue, 1 Sep 2015 23:31:18 +0000 (16:31 -0700)]
Merge branch 'ah/reflog-typofix-in-error'

Error string fix.

* ah/reflog-typofix-in-error:
  reflog: add missing single quote to error message

5 years agoMerge branch 'ah/read-tree-usage-string'
Junio C Hamano [Tue, 1 Sep 2015 23:31:15 +0000 (16:31 -0700)]
Merge branch 'ah/read-tree-usage-string'

Usage string fix.

* ah/read-tree-usage-string:
  read-tree: replace bracket set with parentheses to clarify usage

5 years agoMerge branch 'ah/pack-objects-usage-strings'
Junio C Hamano [Tue, 1 Sep 2015 23:31:12 +0000 (16:31 -0700)]
Merge branch 'ah/pack-objects-usage-strings'

Usage string fix.

* ah/pack-objects-usage-strings:
  pack-objects: place angle brackets around placeholders in usage strings

5 years agoMerge branch 'br/svn-doc-include-paths-config'
Junio C Hamano [Tue, 1 Sep 2015 23:31:09 +0000 (16:31 -0700)]
Merge branch 'br/svn-doc-include-paths-config'

* br/svn-doc-include-paths-config:
  git-svn doc: mention "svn-remote.<name>.include-paths"

5 years agoMerge branch 'nd/fixup-linked-gitdir'
Junio C Hamano [Tue, 1 Sep 2015 23:31:06 +0000 (16:31 -0700)]
Merge branch 'nd/fixup-linked-gitdir'

The code in "multiple-worktree" support that attempted to recover
from an inconsistent state updated an incorrect file.

* nd/fixup-linked-gitdir:
  setup: update the right file in multiple checkouts

5 years agorerere: release lockfile in non-writing functions
Jeff King [Tue, 1 Sep 2015 22:14:09 +0000 (18:14 -0400)]
rerere: release lockfile in non-writing functions

There's a bug in builtin/am.c in which we take a lock on
MERGE_RR recursively. But rather than fix am.c, this patch
fixes the confusing interface from rerere.c that caused the
bug. Read on for the gory details.

The setup_rerere() function both reads the existing MERGE_RR
file, and takes MERGE_RR.lock. In the rerere() and
rerere_forget() functions, we end up in write_rr(), which
will then commit the lock file.

But for functions like rerere_clear() that do not write to
MERGE_RR, we expect the caller to have handled
setup_rerere(). That caller would then need to release the
lockfile, but it can't; the lock struct is local to
rerere.c.

For builtin/rerere.c, this is OK. We run a single rerere
operation and then exit immediately, which has the side
effect of rolling back the lockfile.

But in builtin/am.c, this is actively wrong. If we run "git
am -3 --skip", we call setup-rerere twice without releasing
the lock:

  1. The "--skip" causes us to call am_rerere_clear(), which
     calls setup_rerere(), but never drops the lock.

  2. We then proceed to the next patch.

  3. The "--3way" may cause us to call rerere() to handle
     conflicts in that patch, but we are already holding the
     lock. The lockfile code dies with:

     BUG: prepare_tempfile_object called for active object

We could fix this by having rerere_clear() call
rollback_lock_file(). But it feels a bit odd for it to roll
back a lockfile that it did not itself take. So let's
simplify the interface further, and handle setup_rerere in
the function itself, taking away the question from the
caller over whether they need to do so.

We can give rerere_gc() the same treatment, as well (even
though it doesn't have any callers besides builtin/rerere.c
at this point). Note that these functions don't take flags
from their callers to pass along to setup_rerere; that's OK,
because the flags would not be meaningful for what they are
doing.

Both of those functions need to hold the lock because even
though they do not write to MERGE_RR, they are still writing
and should be protected from a simultaneous "rerere" run.
But rerere_remaining(), "rerere diff", and "rerere status"
are all read-only operations. They want to setup_rerere(),
but do not care about taking the lock in the first place.
Since our update of MERGE_RR is the usual atomic rename done
by commit_lock_file, they can just do a lockless read. For
that, we teach setup_rerere a READONLY flag to avoid the
lock.

As a bonus, this pushes builtin/rerere.c's setup_rerere call
closer to the functions that use it. Which means that "git
rerere totally-bogus-command" will no longer silently
exit(0) in a repository without rerere enabled.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoEighth batch for 2.6
Junio C Hamano [Mon, 31 Aug 2015 22:40:24 +0000 (15:40 -0700)]
Eighth batch for 2.6

Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoMerge branch 'sg/describe-contains'
Junio C Hamano [Mon, 31 Aug 2015 22:39:10 +0000 (15:39 -0700)]
Merge branch 'sg/describe-contains'

"git describe" without argument defaulted to describe the HEAD
commit, but "git describe --contains" didn't.  Arguably, in a
repository used for active development, such defaulting would not
be very useful as the tip of branch is typically not tagged, but it
is better to be consistent.

* sg/describe-contains:
  describe --contains: default to HEAD when no commit-ish is given

5 years agoMerge branch 'db/push-sign-if-asked'
Junio C Hamano [Mon, 31 Aug 2015 22:39:07 +0000 (15:39 -0700)]
Merge branch 'db/push-sign-if-asked'

The client side codepaths in "git push" have been cleaned up
and the user can request to perform an optional "signed push",
i.e. sign only when the other end accepts signed push.

* db/push-sign-if-asked:
  push: add a config option push.gpgSign for default signed pushes
  push: support signing pushes iff the server supports it
  builtin/send-pack.c: use parse_options API
  config.c: rename git_config_maybe_bool_text and export it as git_parse_maybe_bool
  transport: remove git_transport_options.push_cert
  gitremote-helpers.txt: document pushcert option
  Documentation/git-send-pack.txt: document --signed
  Documentation/git-send-pack.txt: wrap long synopsis line
  Documentation/git-push.txt: document when --signed may fail

5 years agoMerge branch 'jk/notes-merge-config'
Junio C Hamano [Mon, 31 Aug 2015 22:39:05 +0000 (15:39 -0700)]
Merge branch 'jk/notes-merge-config'

"git notes merge" can be told with "--strategy=<how>" option how to
automatically handle conflicts; this can now be configured by
setting notes.mergeStrategy configuration variable.

* jk/notes-merge-config:
  notes: teach git-notes about notes.<name>.mergeStrategy option
  notes: add notes.mergeStrategy option to select default strategy
  notes: add tests for --commit/--abort/--strategy exclusivity
  notes: extract parse_notes_merge_strategy to notes-utils
  notes: extract enum notes_merge_strategy to notes-utils.h
  notes: document cat_sort_uniq rewriteMode

5 years agoMerge branch 'jc/am-state-fix'
Junio C Hamano [Mon, 31 Aug 2015 22:39:01 +0000 (15:39 -0700)]
Merge branch 'jc/am-state-fix'

Recent reimplementation of "git am" changed the format of state
files kept in $GIT_DIR/rebase-apply/ without meaning to do so,
primarily because write_file() API was cumbersome to use and it was
easy to mistakenly make text files with incomplete lines.  Update
write_file() interface to make it harder to misuse.

* jc/am-state-fix:
  write_file(): drop caller-supplied LF from calls to create a one-liner file
  write_file_v(): do not leave incomplete line at the end
  write_file(): drop "fatal" parameter
  builtin/am: make sure state files are text
  builtin/am: introduce write_state_*() helper functions

5 years agoMerge branch 'jc/log-p-cc'
Junio C Hamano [Mon, 31 Aug 2015 22:38:59 +0000 (15:38 -0700)]
Merge branch 'jc/log-p-cc'

"git log --cc" did not show any patch, even though most of the time
the user meant "git log --cc -p -m" to see patch output for commits
with a single parent, and combined diff for merge commits.  The
command is taught to DWIM "--cc" (without "--raw" and other forms
of output specification) to "--cc -p -m".

* jc/log-p-cc:
  builtin/log.c: minor reformat
  log: show merge commit when --cc is given
  log: when --cc is given, default to -p unless told otherwise
  log: rename "tweak" helpers

5 years agoMerge branch 'jk/fix-alias-pager-config-key-warnings'
Junio C Hamano [Mon, 31 Aug 2015 22:38:57 +0000 (15:38 -0700)]
Merge branch 'jk/fix-alias-pager-config-key-warnings'

Because the configuration system does not allow "alias.0foo" and
"pager.0foo" as the configuration key, the user cannot use '0foo'
as a custom command name anyway, but "git 0foo" tried to look these
keys up and emitted useless warnings before saying '0foo is not a
git command'.  These warning messages have been squelched.

* jk/fix-alias-pager-config-key-warnings:
  config: silence warnings for command names with invalid keys

5 years agoMerge branch 'jk/rev-list-has-no-notes'
Junio C Hamano [Mon, 31 Aug 2015 22:38:54 +0000 (15:38 -0700)]
Merge branch 'jk/rev-list-has-no-notes'

"git rev-list" does not take "--notes" option, but did not complain
when one is given.

* jk/rev-list-has-no-notes:
  rev-list: make it obvious that we do not support notes

5 years agoMerge branch 'hv/submodule-config'
Junio C Hamano [Mon, 31 Aug 2015 22:38:52 +0000 (15:38 -0700)]
Merge branch 'hv/submodule-config'

The gitmodules API accessed from the C code learned to cache stuff
lazily.

* hv/submodule-config:
  submodule: allow erroneous values for the fetchRecurseSubmodules option
  submodule: use new config API for worktree configurations
  submodule: extract functions for config set and lookup
  submodule: implement a config API for lookup of .gitmodules values

5 years agoMerge branch 'sg/config-name-only'
Junio C Hamano [Mon, 31 Aug 2015 22:38:50 +0000 (15:38 -0700)]
Merge branch 'sg/config-name-only'

"git config --list" output was hard to parse when values consist of
multiple lines.  "--name-only" option is added to help this.

* sg/config-name-only:
  get_urlmatch: avoid useless strbuf write
  format_config: simplify buffer handling
  format_config: don't init strbuf
  config: restructure format_config() for better control flow
  completion: list variable names reliably with 'git config --name-only'
  config: add '--name-only' option to list only variable names

5 years agoread-cache: fix indentation in read_index_from
Stefan Beller [Mon, 31 Aug 2015 18:43:29 +0000 (11:43 -0700)]
read-cache: fix indentation in read_index_from

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agotrailer: support multiline title
Christian Couder [Sun, 30 Aug 2015 19:14:40 +0000 (21:14 +0200)]
trailer: support multiline title

We currently ignore the first line passed to `git interpret-trailers`,
when looking for the beginning of the trailers.

Unfortunately this does not work well when a commit is created with a
line break in the title, using for example the following command:

git commit -m 'place of
code: change we made'

That's why instead of ignoring only the first line, it is better to
ignore the first paragraph.

Signed-off-by: Christian Couder <christian.couder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agot7300: fix broken && chains
Erik Elfström [Sun, 30 Aug 2015 09:18:09 +0000 (11:18 +0200)]
t7300: fix broken && chains

While we are here, remove some boilerplate by using test_commit.

Signed-off-by: Erik Elfström <erik.elfstrom@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agolog: diagnose empty HEAD more clearly
Jeff King [Sat, 29 Aug 2015 05:04:18 +0000 (01:04 -0400)]
log: diagnose empty HEAD more clearly

If you init or clone an empty repository, the initial
message from running "git log" is not very friendly:

  $ git init
  Initialized empty Git repository in /home/peff/foo/.git/
  $ git log
  fatal: bad default revision 'HEAD'

Let's detect this situation and write a more friendly
message:

  $ git log
  fatal: your current branch 'master' does not have any commits yet

We also detect the case that 'HEAD' points to a broken ref;
this should be even less common, but is easy to see. Note
that we do not diagnose all possible cases. We rely on
resolve_ref, which means we do not get information about
complex cases. E.g., "--default master" would use dwim_ref
to find "refs/heads/master", but we notice only that
"master" does not exist. Similarly, a complex sha1
expression like "--default HEAD^2" will not resolve as a
ref.

But that's OK. We fall back to a generic error message in
those cases, and they are unlikely to be used anyway.
Catching an empty or broken "HEAD" improves the common case,
and the other cases are not regressed.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agocommit: don't rewrite shared index unnecessarily
David Turner [Thu, 27 Aug 2015 17:07:54 +0000 (13:07 -0400)]
commit: don't rewrite shared index unnecessarily

Remove a cache invalidation which would cause the shared index to be
rewritten on as-is commits.

When the cache-tree has changed, we need to update it.  But we don't
necessarily need to update the shared index.  So setting
active_cache_changed to SOMETHING_CHANGED is unnecessary.  Instead, we
let update_main_cache_tree just update the CACHE_TREE_CHANGED bit.

In order to test this, make test-dump-split-index not segfault on
missing replace_bitmap/delete_bitmap.  This new codepath is not called
now that the test passes, but is necessary to avoid a segfault when the
new test is run with the old builtin/commit.c code.

Signed-off-by: David Turner <dturner@twopensource.com>
Acked-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoSync with 2.5.1
Junio C Hamano [Fri, 28 Aug 2015 19:32:45 +0000 (12:32 -0700)]
Sync with 2.5.1

5 years agoSeventh batch for 2.6
Junio C Hamano [Fri, 28 Aug 2015 19:27:39 +0000 (12:27 -0700)]
Seventh batch for 2.6

Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoMerge branch 'cc/trailers-corner-case-fix'
Junio C Hamano [Fri, 28 Aug 2015 19:32:17 +0000 (12:32 -0700)]
Merge branch 'cc/trailers-corner-case-fix'

"interpret-trailers" helper mistook a single-liner log message that
has a colon as the end of existing trailer.

* cc/trailers-corner-case-fix:
  trailer: retitle a test and correct an in-comment message
  trailer: ignore first line of message

5 years agoMerge branch 'dt/untracked-subdir'
Junio C Hamano [Fri, 28 Aug 2015 19:32:14 +0000 (12:32 -0700)]
Merge branch 'dt/untracked-subdir'

The experimental untracked-cache feature were buggy when paths with
a few levels of subdirectories are involved.

* dt/untracked-subdir:
  untracked cache: fix entry invalidation
  untracked-cache: fix subdirectory handling

5 years agoread-tree: replace bracket set with parentheses to clarify usage
Alex Henrie [Thu, 27 Aug 2015 04:27:06 +0000 (22:27 -0600)]
read-tree: replace bracket set with parentheses to clarify usage

-u and -i can only be given if -m, --reset, or --prefix is given.
Without parentheses, it looks like -u and -i can be used no matter
what, and the second pair of brackets is confusing.

Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agopack-objects: place angle brackets around placeholders in usage strings
Alex Henrie [Thu, 27 Aug 2015 04:26:36 +0000 (22:26 -0600)]
pack-objects: place angle brackets around placeholders in usage strings

Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agogit-submodule: remove extraneous space from error message
Alex Henrie [Thu, 27 Aug 2015 04:26:19 +0000 (22:26 -0600)]
git-submodule: remove extraneous space from error message

Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Acked-by: Chris Packham <judge.packham@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agolockfile: remove function "hold_lock_file_for_append"
Ralf Thielow [Fri, 28 Aug 2015 16:55:52 +0000 (18:55 +0200)]
lockfile: remove function "hold_lock_file_for_append"

With 77b9b1d (add_to_alternates_file: don't add duplicate entries,
2015-08-10) the last caller of function "hold_lock_file_for_append"
has been removed, so we can remove the function as well.

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoGit 2.5.1 v2.5.1
Junio C Hamano [Fri, 28 Aug 2015 18:19:57 +0000 (11:19 -0700)]
Git 2.5.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoMingw: verify both ends of the pipe () call
Jose F. Morales [Fri, 28 Aug 2015 09:43:37 +0000 (09:43 +0000)]
Mingw: verify both ends of the pipe () call

The code to open and test the second end of the pipe clearly imitates
the code for the first end. A little too closely, though... Let's fix
the obvious copy-edit bug.

Signed-off-by: Jose F. Morales <jfmcjf@gmail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Acked-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agogit-p4: honor core.ignorecase when using P4 client specs
Lars Schneider [Fri, 28 Aug 2015 12:00:34 +0000 (14:00 +0200)]
git-p4: honor core.ignorecase when using P4 client specs

Perforce depot may record paths in mixed cases, e.g. "p4 files" may
show that there are these two paths:

   //depot/Path/to/file1
   //depot/pATH/to/file2

and with "p4" or "p4v", these end up in the same directory, e.g.

   //depot/Path/to/file1
   //depot/Path/to/file2

which is the desired outcome on case insensitive systems.

If git-p4 is used with client spec "//depot/Path/...", however, then
all files not matching the case in the client spec are ignored (in
the example above "//depot/pATH/to/file2").

Fix this by using the path case that appears first in lexicographical
order when core.ignorecase is set to true. This behavior is consistent
with "p4" and "p4v".

Signed-off-by: Lars Schneider <larsxschneider@gmail.com>
Acked-by: Luke Diamand <luke@diamand.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoreflog: add missing single quote to error message
Alex Henrie [Thu, 27 Aug 2015 04:26:02 +0000 (22:26 -0600)]
reflog: add missing single quote to error message

The error message can be seen by running
`git config gc.reflogexpire foo` and then `git reflog expire`.

Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoarchive-zip: support more than 65535 entries
René Scharfe [Sat, 22 Aug 2015 19:06:45 +0000 (21:06 +0200)]
archive-zip: support more than 65535 entries

Support more than 65535 entries cleanly by writing a "zip64 end of
central directory record" (with a 64-bit field for the number of
entries) before the usual "end of central directory record" (which
contains only a 16-bit field).  InfoZIP's zip does the same.
Archives with 65535 or less entries are not affected.

Programs that extract all files like InfoZIP's zip and 7-Zip
ignored the field and could extract all files already.  Software
that relies on the ZIP file directory to show a list of contained
files quickly to simulate to normal directory like Windows'
built-in ZIP functionality only saw a subset of the included files.

Windows supports ZIP64 since Vista according to
https://en.wikipedia.org/wiki/Zip_%28file_format%29#ZIP64.

Suggested-by: Johannes Schauer <josch@debian.org>
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoarchive-zip: use a local variable to store the creator version
René Scharfe [Sat, 22 Aug 2015 19:06:31 +0000 (21:06 +0200)]
archive-zip: use a local variable to store the creator version

Use a simpler conditional right next to the code which makes a higher
creator version necessary -- namely symlink handling and support for
executable files -- instead of a long line with a ternary operator.
The resulting code has more lines but is simpler and allows reuse of
the value easily.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agot5004: test ZIP archives with many entries
René Scharfe [Sat, 22 Aug 2015 19:06:12 +0000 (21:06 +0200)]
t5004: test ZIP archives with many entries

A ZIP file directory has a 16-bit field for the number of entries it
contains.  There are 64-bit extensions to deal with that.  Demonstrate
that git archive --format=zip currently doesn't use them and instead
overflows the field.

InfoZIP's unzip doesn't care about this field and extracts all files
anyway.  Software that uses the directory for presenting a filesystem
like view quickly -- notably Windows -- depends on it, but doesn't
lend itself to an automatic test case easily.  Use InfoZIP's zipinfo,
which probably isn't available everywhere but at least can provides
*some* way to check this field.

To speed things up a bit create and commit only a subset of the files
and build a fake tree out of duplicates and pass that to git archive.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoSixth batch for 2.6
Junio C Hamano [Wed, 26 Aug 2015 22:47:48 +0000 (15:47 -0700)]
Sixth batch for 2.6

Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoMerge branch 'sg/help-group'
Junio C Hamano [Wed, 26 Aug 2015 22:45:39 +0000 (15:45 -0700)]
Merge branch 'sg/help-group'

We rewrote one of the build scripts in Perl but this reimplements
in Bourne shell.

* sg/help-group:
  generate-cmdlist: re-implement as shell script

5 years agoMerge branch 'sg/wt-status-header-inclusion'
Junio C Hamano [Wed, 26 Aug 2015 22:45:38 +0000 (15:45 -0700)]
Merge branch 'sg/wt-status-header-inclusion'

* sg/wt-status-header-inclusion:
  wt-status: move #include "pathspec.h" to the header

5 years agoMerge branch 'as/docfix-reflog-expire-unreachable'
Junio C Hamano [Wed, 26 Aug 2015 22:45:37 +0000 (15:45 -0700)]
Merge branch 'as/docfix-reflog-expire-unreachable'

* as/docfix-reflog-expire-unreachable:
  Documentation/config: fix inconsistent label on gc.*.reflogExpireUnreachable

5 years agoMerge branch 'sg/t3020-typofix'
Junio C Hamano [Wed, 26 Aug 2015 22:45:35 +0000 (15:45 -0700)]
Merge branch 'sg/t3020-typofix'

* sg/t3020-typofix:
  t3020: fix typo in test description

5 years agoMerge branch 'jc/calloc-pathspec'
Junio C Hamano [Wed, 26 Aug 2015 22:45:33 +0000 (15:45 -0700)]
Merge branch 'jc/calloc-pathspec'

* jc/calloc-pathspec:
  ps_matched: xcalloc() takes nmemb and then element size

5 years agoMerge branch 'dt/untracked-sparse'
Junio C Hamano [Wed, 26 Aug 2015 22:45:33 +0000 (15:45 -0700)]
Merge branch 'dt/untracked-sparse'

Test update.

* dt/untracked-sparse:
  t7063: use --force-untracked-cache to speed up a bit

5 years agoMerge branch 'pt/am-builtin'
Junio C Hamano [Wed, 26 Aug 2015 22:45:33 +0000 (15:45 -0700)]
Merge branch 'pt/am-builtin'

Rewrite "am" in "C".

* pt/am-builtin:
  i18n: am: fix typo in description of -b option

5 years agoMerge branch 'pt/am-builtin-abort-fix'
Junio C Hamano [Wed, 26 Aug 2015 22:45:32 +0000 (15:45 -0700)]
Merge branch 'pt/am-builtin-abort-fix'

"git am" that was recently reimplemented in C had a performance
regression in "git am --abort" that goes back to the version before
an attempted (and failed) patch application.

* pt/am-builtin-abort-fix:
  am --skip/--abort: merge HEAD/ORIG_HEAD tree into index

5 years agoMerge branch 'po/po-readme'
Junio C Hamano [Wed, 26 Aug 2015 22:45:32 +0000 (15:45 -0700)]
Merge branch 'po/po-readme'

* po/po-readme:
  po/README: Update directions for l10n contributors

5 years agoMerge branch 'jv/send-email-selective-smtp-auth'
Junio C Hamano [Wed, 26 Aug 2015 22:45:31 +0000 (15:45 -0700)]
Merge branch 'jv/send-email-selective-smtp-auth'

"git send-email" learned a new option --smtp-auth to limit the SMTP
AUTH mechanisms to be used to a subset of what the system library
supports.

* jv/send-email-selective-smtp-auth:
  send-email: provide whitelist of SMTP AUTH mechanisms

5 years agoMerge branch 'ep/http-configure-ssl-version'
Junio C Hamano [Wed, 26 Aug 2015 22:45:31 +0000 (15:45 -0700)]
Merge branch 'ep/http-configure-ssl-version'

A new configuration variable http.sslVersion can be used to specify
what specific version of SSL/TLS to use to make a connection.

* ep/http-configure-ssl-version:
  http: add support for specifying the SSL version

5 years agoMerge branch 'ss/fix-config-fd-leak'
Junio C Hamano [Wed, 26 Aug 2015 22:45:30 +0000 (15:45 -0700)]
Merge branch 'ss/fix-config-fd-leak'

* ss/fix-config-fd-leak:
  config: close config file handle in case of error

5 years agoi18n: am: fix typo in description of -b option
Jiang Xin [Wed, 26 Aug 2015 15:51:19 +0000 (23:51 +0800)]
i18n: am: fix typo in description of -b option

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agotrailer: retitle a test and correct an in-comment message
Christian Couder [Wed, 26 Aug 2015 02:51:00 +0000 (04:51 +0200)]
trailer: retitle a test and correct an in-comment message

Signed-off-by: Christian Couder <christian.couder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agogit-svn doc: mention "svn-remote.<name>.include-paths"
Brett Randall [Mon, 24 Aug 2015 00:23:45 +0000 (10:23 +1000)]
git-svn doc: mention "svn-remote.<name>.include-paths"

Mention the configuration variable in a way similar to how
"svn-remote.<name>.ignore-paths" is mentioned.

Signed-off-by: Brett Randall <javabrett@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoSync with maint
Junio C Hamano [Tue, 25 Aug 2015 23:09:30 +0000 (16:09 -0700)]
Sync with maint

* maint:
  pull: pass upload_pack only when it was given

5 years agoMerge branch 'jk/guess-repo-name-regression-fix' into maint
Junio C Hamano [Tue, 25 Aug 2015 23:09:17 +0000 (16:09 -0700)]
Merge branch 'jk/guess-repo-name-regression-fix' into maint

"git clone $URL" in recent releases of Git contains a regression in
the code that invents a new repository name incorrectly based on
the $URL.  This has been corrected.

* jk/guess-repo-name-regression-fix:
  clone: use computed length in guess_dir_name
  clone: add tests for output directory

5 years agoMerge branch 'jk/test-with-x' into maint
Junio C Hamano [Tue, 25 Aug 2015 23:09:16 +0000 (16:09 -0700)]
Merge branch 'jk/test-with-x' into maint

Running tests with the "-x" option to make them verbose had some
unpleasant interactions with other features of the test suite.

* jk/test-with-x:
  test-lib: disable trace when test is not verbose
  test-lib: turn off "-x" tracing during chain-lint check

5 years agoMerge branch 'sb/check-return-from-read-ref' into maint
Junio C Hamano [Tue, 25 Aug 2015 23:09:16 +0000 (16:09 -0700)]
Merge branch 'sb/check-return-from-read-ref' into maint

* sb/check-return-from-read-ref:
  transport-helper: die on errors reading refs.

5 years agoMerge branch 'mm/pull-upload-pack' into maint
Junio C Hamano [Tue, 25 Aug 2015 23:09:15 +0000 (16:09 -0700)]
Merge branch 'mm/pull-upload-pack' into maint

"git pull" in recent releases of Git has a regression in the code
that allows custom path to the --upload-pack=<program>.  This has
been corrected.

Note that this is irrelevant for 'master' with "git pull" rewritten
in C.

* mm/pull-upload-pack:
  pull: pass upload_pack only when it was given
  pull.sh: quote $upload_pack when passing it to git-fetch

5 years agopull: pass upload_pack only when it was given
Junio C Hamano [Tue, 25 Aug 2015 23:06:53 +0000 (16:06 -0700)]
pull: pass upload_pack only when it was given

The upload_pack shell variable is initialized to an empty string, so
conditional expansion with ${upload_pack+"$upload_pack"} would not
work very well.  You need a colon there.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoFifth batch for 2.6
Junio C Hamano [Tue, 25 Aug 2015 22:00:15 +0000 (15:00 -0700)]
Fifth batch for 2.6

Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoMerge branch 'cb/open-noatime-clear-errno'
Junio C Hamano [Tue, 25 Aug 2015 21:57:10 +0000 (14:57 -0700)]
Merge branch 'cb/open-noatime-clear-errno'

When trying to see that an object does not exist, a state errno
leaked from our "first try to open a packfile with O_NOATIME and
then if it fails retry without it" logic on a system that refuses
O_NOATIME.  This confused us and caused us to die, saying that the
packfile is unreadable, when we should have just reported that the
object does not exist in that packfile to the caller.

* cb/open-noatime-clear-errno:
  git_open_noatime: return with errno=0 on success

5 years agoMerge branch 'mh/tempfile'
Junio C Hamano [Tue, 25 Aug 2015 21:57:09 +0000 (14:57 -0700)]
Merge branch 'mh/tempfile'

The "lockfile" API has been rebuilt on top of a new "tempfile" API.

* mh/tempfile:
  credential-cache--daemon: use tempfile module
  credential-cache--daemon: delete socket from main()
  gc: use tempfile module to handle gc.pid file
  lock_repo_for_gc(): compute the path to "gc.pid" only once
  diff: use tempfile module
  setup_temporary_shallow(): use tempfile module
  write_shared_index(): use tempfile module
  register_tempfile(): new function to handle an existing temporary file
  tempfile: add several functions for creating temporary files
  prepare_tempfile_object(): new function, extracted from create_tempfile()
  tempfile: a new module for handling temporary files
  commit_lock_file(): use get_locked_file_path()
  lockfile: add accessor get_lock_file_path()
  lockfile: add accessors get_lock_file_fd() and get_lock_file_fp()
  create_bundle(): duplicate file descriptor to avoid closing it twice
  lockfile: move documentation to lockfile.h and lockfile.c