git.git
9 years agoupload-pack.c: use parse-options API
Antoine Queru [Tue, 31 May 2016 09:57:08 +0000 (11:57 +0200)]
upload-pack.c: use parse-options API

Use the parse-options API rather than a hand-rolled option parser.

Description for --stateless-rpc and --advertise-refs come from
42526b4 (Add stateless RPC options to upload-pack,
receive-pack, 2009-10-30).

Signed-off-by: Antoine Queru <redacted>
Signed-off-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agoMakefile: move 'ifdef DEVELOPER' after config.mak* inclusion
Matthieu Moy [Tue, 31 May 2016 13:24:43 +0000 (15:24 +0200)]
Makefile: move 'ifdef DEVELOPER' after config.mak* inclusion

The DEVELOPER knob was introduced in 658df95 (add DEVELOPER makefile
knob to check for acknowledged warnings, 2016-02-25), and works well
when used as "make DEVELOPER=1", and when the configure script was not
used.

However, the advice given in CodingGuidelines to add DEVELOPER=1 to
config.mak does not: config.mak is included after testing for
DEVELOPER in the Makefile, and at least GNU Make's manual specifies
"Conditional directives are parsed immediately", hence the config.mak
declaration is not visible at the time the conditional is evaluated.

Also, when using the configure script to generate a
config.mak.autogen, the later file contained a "CFLAGS = <flags>"
initialization, which overrode the "CFLAGS += -W..." triggered by
DEVELOPER.

This patch fixes both issues.

Signed-off-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agoREADME.md: format CLI commands with code syntax
Benjamin Dopplinger [Mon, 30 May 2016 03:08:16 +0000 (03:08 +0000)]
README.md: format CLI commands with code syntax

CLI commands which are mentioned in the readme are now formatted with
the Markdown code syntax to make the documentation more readable.

Signed-off-by: Benjamin Dopplinger <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agoFinal batch before 2.9-rc1
Junio C Hamano [Mon, 30 May 2016 01:08:26 +0000 (18:08 -0700)]
Final batch before 2.9-rc1

Signed-off-by: Junio C Hamano <redacted>
9 years agoMerge branch 'ak/t0008-ksh88-workaround'
Junio C Hamano [Mon, 30 May 2016 01:06:44 +0000 (18:06 -0700)]
Merge branch 'ak/t0008-ksh88-workaround'

Test portability workaround.

* ak/t0008-ksh88-workaround:
  t0008: 4 tests fail with ksh88

9 years agoMerge branch 'js/t6044-use-test-seq'
Junio C Hamano [Mon, 30 May 2016 01:06:43 +0000 (18:06 -0700)]
Merge branch 'js/t6044-use-test-seq'

Test portability fix.

* js/t6044-use-test-seq:
  t6044: replace seq by test_seq

9 years agoMerge branch 'ak/t4204-shell-portability'
Junio C Hamano [Mon, 30 May 2016 01:06:43 +0000 (18:06 -0700)]
Merge branch 'ak/t4204-shell-portability'

Update a test to run also under ksh88.

* ak/t4204-shell-portability:
  t4204: do not let $name variable clobbered

9 years agoMerge branch 'rj/log-decorate-auto'
Junio C Hamano [Mon, 30 May 2016 01:06:42 +0000 (18:06 -0700)]
Merge branch 'rj/log-decorate-auto'

We forgot to add "git log --decorate=auto" to documentation when we
added the feature back in v2.1.0 timeframe.

* rj/log-decorate-auto:
  log: document the --decorate=auto option

9 years agoMerge branch 'mr/send-email-doc-gmail-2fa'
Junio C Hamano [Mon, 30 May 2016 01:06:42 +0000 (18:06 -0700)]
Merge branch 'mr/send-email-doc-gmail-2fa'

Give hints to GMail users with two-factor auth enabled that
they need app-specific-password when using send-email.

* mr/send-email-doc-gmail-2fa:
  Documentation: add instructions to help setup gmail 2FA

9 years agoMerge branch 'kb/msys2-tty'
Junio C Hamano [Mon, 30 May 2016 01:06:41 +0000 (18:06 -0700)]
Merge branch 'kb/msys2-tty'

The "are we talking with TTY, doing an interactive session?"
detection has been updated to work better for "Git for Windows".

* kb/msys2-tty:
  mingw: make isatty() recognize MSYS2's pseudo terminals (/dev/pty*)

9 years agofast-import: invalidate pack_id references after loosening
Eric Wong [Wed, 25 May 2016 22:54:02 +0000 (22:54 +0000)]
fast-import: invalidate pack_id references after loosening

When loosening a pack, the current pack_id gets reused when
checkpointing and the import does not terminate.  This causes
problems after checkpointing as the object table, branch, and
tag lists still contains pre-checkpoint references to the
recycled pack_id.

Merely clearing the object_table as suggested by Jeff King in
http://mid.gmane.org/20160517121330.GA7346@sigill.intra.peff.net
is insufficient as the marks set still contains references
to object entries.

Wrong pack_id references branch and tags lists do not cause
errors, but can lead to misleading crash reports and core dumps,
so they are also invalidated.

Signed-off-by: Eric Wong <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agogit-cherry-pick.txt: correct a small typo
Pablo Santiago Blum de Aguiar [Sun, 29 May 2016 19:29:29 +0000 (16:29 -0300)]
git-cherry-pick.txt: correct a small typo

Most of the document mentions `behavior` instead of the British
variation, `behaviour`. This change makes it consistent.

Signed-off-by: Pablo Santiago Blum de Aguiar <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agopatch-id: use starts_with() and skip_prefix()
René Scharfe [Sat, 28 May 2016 16:20:23 +0000 (18:20 +0200)]
patch-id: use starts_with() and skip_prefix()

Get rid of magic numbers and avoid running over the end of a NUL
terminated string by using starts_with() and skip_prefix() instead
of memcmp().

Signed-off-by: Rene Scharfe <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agoapply: remove unused parameters from name_terminate()
René Scharfe [Sat, 28 May 2016 16:12:01 +0000 (18:12 +0200)]
apply: remove unused parameters from name_terminate()

Signed-off-by: Rene Scharfe <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agoblame: require 0 context lines while finding moved lines with -M
David Kastrup [Sat, 28 May 2016 09:13:53 +0000 (11:13 +0200)]
blame: require 0 context lines while finding moved lines with -M

The core part of git blame -M required 1 context line, but
there is no rationale to be found in the code; it causes artifacts
like discussed in the thread:

  <http://thread.gmane.org/gmane.comp.version-control.git/255289/>.

<http://permalink.gmane.org/gmane.comp.version-control.git/295795>
sheds some more light on the history of the previous choice.

Signed-off-by: David Kastrup <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agol10n: Updated Bulgarian translation of git (2597t,0f,0u)
Alexander Shopov [Sun, 6 Mar 2016 15:19:16 +0000 (07:19 -0800)]
l10n: Updated Bulgarian translation of git (2597t,0f,0u)

Signed-off-by: Alexander Shopov <redacted>
9 years agoMerge branch 'v2.9.0_rnd1_fr' of git://github.com/jnavila/git
Jiang Xin [Sun, 29 May 2016 11:55:26 +0000 (19:55 +0800)]
Merge branch 'v2.9.0_rnd1_fr' of git://github.com/jnavila/git

* 'v2.9.0_rnd1_fr' of git://github.com/jnavila/git:
  l10n: fr.po v2.9.0rnd1

9 years agoDocumentation: add instructions to help setup gmail 2FA
Michael Rappazzo [Fri, 27 May 2016 20:39:57 +0000 (16:39 -0400)]
Documentation: add instructions to help setup gmail 2FA

For those who use two-factor authentication with gmail, git-send-email
will not work unless it is setup with an app-specific password. The
example for setting up git-send-email for use with gmail will now
include information on generating and storing the app-specific password.

Signed-off-by: Michael Rappazzo <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agolog: document the --decorate=auto option
Ramsay Jones [Fri, 27 May 2016 15:56:02 +0000 (16:56 +0100)]
log: document the --decorate=auto option

Signed-off-by: Ramsay Jones <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agoformat_commit_message: honor `color=auto` for `%C(auto)`
Edward Thomson [Fri, 27 May 2016 03:46:10 +0000 (22:46 -0500)]
format_commit_message: honor `color=auto` for `%C(auto)`

git-log(1) documents that when specifying the `%C(auto)` format
placeholder will "turn on auto coloring on the next %placeholders
until the color is switched again."

However, when `%C(auto)` is used, the present implementation will turn
colors on unconditionally (even if the color configuration is turned off
for the current context - for example, `--no-color` was specified or the
color is `auto` and the output is not a tty).

Update `format_commit_one` to examine the current context when a format
string of `%C(auto)` is specified, which ensures that we will not
unconditionally write colors.  This brings that behavior in line with
the behavior of `%C(auto,<colorname>)`, and allows the user the ability
to specify that color should be displayed only when the output is a
tty.

Additionally, add a test for `%C(auto)` and update the existing tests
for `%C(auto,...)` as they were misidentified as being applicable to
`%C(auto)`.

Tests from Jeff King.

Signed-off-by: Jeff King <redacted>
Signed-off-by: Edward Thomson <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agoconfig: add a notion of "scope"
Jeff King [Wed, 18 May 2016 22:44:23 +0000 (18:44 -0400)]
config: add a notion of "scope"

A config callback passed to git_config() doesn't know very
much about the context in which it sees a variable. It can
ask whether the variable comes from a file, and get the file
name. But without analyzing the filename (which is hard to
do accurately), it cannot tell whether it is in system-level
config, user-level config, or repo-specific config.

Generally this doesn't matter; the point of not passing this
to the callback is that it should treat the config the same
no matter where it comes from. But some programs, like
upload-pack, are a special case: we should be able to run
them in an untrusted repository, which means we cannot use
any "dangerous" config from the repository config file (but
it is OK to use it from system or user config).

This patch teaches the config code to record the "scope" of
each variable, and make it available inside config
callbacks, similar to how we give access to the filename.
The scope is the starting source for a particular parsing
operation, and remains the same even if we include other
files (so a .git/config which includes another file will
remain CONFIG_SCOPE_REPO, as it would be similarly
untrusted).

Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agoconfig: return configset value for current_config_ functions
Jeff King [Fri, 27 May 2016 00:32:23 +0000 (20:32 -0400)]
config: return configset value for current_config_ functions

When 473166b (config: add 'origin_type' to config_source
struct, 2016-02-19) added accessor functions for the origin
type and name, it taught them only to look at the "cf"
struct that is filled in while we are parsing the config.
This is sufficient to make it work with git-config, which
uses git_config_with_options() under the hood. That function
freshly parses the config files and triggers the callback
when it parses each key.

Most git programs, however, use git_config(). This interface
will populate a cache during the actual parse, and then
serve values from the cache. Calling current_config_filename()
in a callback here will find a NULL cf and produce an error.
There are no such callers right now, but let's prepare for
adding some by making this work.

We already record source information in a struct attached to
each value. We just need to make it globally available and
then consult it from the accessor functions.

Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agosubmodule update: learn `--[no-]recommend-shallow` option
Stefan Beller [Thu, 26 May 2016 21:59:43 +0000 (14:59 -0700)]
submodule update: learn `--[no-]recommend-shallow` option

Sometimes the history of a submodule is not considered important by
the projects upstream. To make it easier for downstream users, allow
a boolean field 'submodule.<name>.shallow' in .gitmodules, which can
be used to recommend whether upstream considers the history important.

This field is honored in the initial clone by default, it can be
ignored by giving the `--no-recommend-shallow` option.

Signed-off-by: Stefan Beller <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agosubmodule-config: keep shallow recommendation around
Stefan Beller [Thu, 26 May 2016 21:59:42 +0000 (14:59 -0700)]
submodule-config: keep shallow recommendation around

The shallow field will be used in a later patch by `submodule update`.
To differentiate between the actual depth (which may be different),
we name it `recommend_shallow` as the field in the .gitmodules file
is only a recommendation by the project.

Signed-off-by: Stefan Beller <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agol10n: sv.po: Update Swedish translation (2597t0f0u)
Peter Krefting [Fri, 27 May 2016 13:04:42 +0000 (14:04 +0100)]
l10n: sv.po: Update Swedish translation (2597t0f0u)

Signed-off-by: Peter Krefting <redacted>
9 years agol10n: fr.po v2.9.0rnd1
Jean-Noel Avila [Thu, 26 May 2016 20:46:41 +0000 (22:46 +0200)]
l10n: fr.po v2.9.0rnd1

Signed-off-by: Jean-Noel Avila <redacted>
9 years agoSync with maint
Junio C Hamano [Thu, 26 May 2016 20:28:24 +0000 (13:28 -0700)]
Sync with maint

* maint:
  Start preparing for 2.8.4
  archive-tar: convert snprintf to xsnprintf

9 years agoStart preparing for 2.8.4
Junio C Hamano [Thu, 26 May 2016 20:21:00 +0000 (13:21 -0700)]
Start preparing for 2.8.4

Signed-off-by: Junio C Hamano <redacted>
9 years agoMerge branch 'jc/linkgit-fix' into maint
Junio C Hamano [Thu, 26 May 2016 20:17:26 +0000 (13:17 -0700)]
Merge branch 'jc/linkgit-fix' into maint

Many 'linkgit:<git documentation page>' references were broken,
which are all fixed with this.

* jc/linkgit-fix:
  Documentation: fix linkgit references

9 years agoMerge branch 'ls/travis-build-doc' into maint
Junio C Hamano [Thu, 26 May 2016 20:17:25 +0000 (13:17 -0700)]
Merge branch 'ls/travis-build-doc' into maint

CI test was taught to build documentation pages.

* ls/travis-build-doc:
  travis-ci: build documentation

9 years agoMerge branch 'jc/fsck-nul-in-commit' into maint
Junio C Hamano [Thu, 26 May 2016 20:17:24 +0000 (13:17 -0700)]
Merge branch 'jc/fsck-nul-in-commit' into maint

"git fsck" learned to catch NUL byte in a commit object as
potential error and warn.

* jc/fsck-nul-in-commit:
  fsck: detect and warn a commit with embedded NUL
  fsck_commit_buffer(): do not special case the last validation

9 years agoMerge branch 'jk/rebase-interative-eval-fix' into maint
Junio C Hamano [Thu, 26 May 2016 20:17:24 +0000 (13:17 -0700)]
Merge branch 'jk/rebase-interative-eval-fix' into maint

Portability enhancement for "rebase -i" to help platforms whose
shell does not like "for i in <empty>" (which is not POSIX-kosher).

* jk/rebase-interative-eval-fix:
  rebase--interactive: avoid empty list in shell for-loop

9 years agoMerge branch 'js/windows-dotgit' into maint
Junio C Hamano [Thu, 26 May 2016 20:17:23 +0000 (13:17 -0700)]
Merge branch 'js/windows-dotgit' into maint

On Windows, .git and optionally any files whose name starts with a
dot are now marked as hidden, with a core.hideDotFiles knob to
customize this behaviour.

* js/windows-dotgit:
  mingw: remove unnecessary definition
  mingw: introduce the 'core.hideDotFiles' setting

9 years agoMerge branch 'kf/gpg-sig-verification-doc' into maint
Junio C Hamano [Thu, 26 May 2016 20:17:22 +0000 (13:17 -0700)]
Merge branch 'kf/gpg-sig-verification-doc' into maint

Documentation for "git merge --verify-signatures" has been updated
to clarify that the signature of only the commit at the tip is
verified.  Also the phrasing used for signature and key validity is
adjusted to align with that used by OpenPGP.

* kf/gpg-sig-verification-doc:
  Documentation: clarify signature verification

9 years agoMerge branch 'lp/typofixes' into maint
Junio C Hamano [Thu, 26 May 2016 20:17:21 +0000 (13:17 -0700)]
Merge branch 'lp/typofixes' into maint

Typofixes.

* lp/typofixes:
  typofix: assorted typofixes in comments, documentation and messages

9 years agoMerge branch 'sb/z-is-gnutar-ism' into maint
Junio C Hamano [Thu, 26 May 2016 20:17:21 +0000 (13:17 -0700)]
Merge branch 'sb/z-is-gnutar-ism' into maint

Test fix.

* sb/z-is-gnutar-ism:
  t6041: do not compress backup tar file
  t3513: do not compress backup tar file

9 years agoMerge branch 'va/i18n-misc-updates' into maint
Junio C Hamano [Thu, 26 May 2016 20:17:20 +0000 (13:17 -0700)]
Merge branch 'va/i18n-misc-updates' into maint

Mark several messages for translation.

* va/i18n-misc-updates:
  i18n: unpack-trees: avoid substituting only a verb in sentences
  i18n: builtin/pull.c: split strings marked for translation
  i18n: builtin/pull.c: mark placeholders for translation
  i18n: git-parse-remote.sh: mark strings for translation
  i18n: branch: move comment for translators
  i18n: branch: unmark string for translation
  i18n: builtin/rm.c: remove a comma ',' from string
  i18n: unpack-trees: mark strings for translation
  i18n: builtin/branch.c: mark option for translation
  i18n: index-pack: use plural string instead of normal one

9 years agoMerge branch 'bn/config-doc-tt-varnames' into maint
Junio C Hamano [Thu, 26 May 2016 20:17:19 +0000 (13:17 -0700)]
Merge branch 'bn/config-doc-tt-varnames' into maint

Doc formatting fixes.

* bn/config-doc-tt-varnames:
  config: consistently format $variables in monospaced font
  config: describe 'pathname' value type

9 years agoMerge branch 'nd/remote-plural-ours-plus-theirs' into maint
Junio C Hamano [Thu, 26 May 2016 20:17:18 +0000 (13:17 -0700)]
Merge branch 'nd/remote-plural-ours-plus-theirs' into maint

Message fix.

* nd/remote-plural-ours-plus-theirs:
  remote.c: specify correct plural form in "commit diverge" message

9 years agoMerge branch 'ak/t4151-ls-files-could-be-empty' into maint
Junio C Hamano [Thu, 26 May 2016 20:17:17 +0000 (13:17 -0700)]
Merge branch 'ak/t4151-ls-files-could-be-empty' into maint

Test fix.

* ak/t4151-ls-files-could-be-empty:
  t4151: make sure argument to 'test -z' is given

9 years agoMerge branch 'jc/test-seq' into maint
Junio C Hamano [Thu, 26 May 2016 20:17:16 +0000 (13:17 -0700)]
Merge branch 'jc/test-seq' into maint

Test fix.

* jc/test-seq:
  test-lib-functions.sh: rewrite test_seq without Perl
  test-lib-functions.sh: remove misleading comment on test_seq

9 years agoMerge branch 'tb/t5601-sed-fix' into maint
Junio C Hamano [Thu, 26 May 2016 20:17:15 +0000 (13:17 -0700)]
Merge branch 'tb/t5601-sed-fix' into maint

Test fix.

* tb/t5601-sed-fix:
  t5601: Remove trailing space in sed expression

9 years agoMerge branch 'va/i18n-remote-comment-to-align' into maint
Junio C Hamano [Thu, 26 May 2016 20:17:14 +0000 (13:17 -0700)]
Merge branch 'va/i18n-remote-comment-to-align' into maint

Message fix.

* va/i18n-remote-comment-to-align:
  i18n: remote: add comment for translators

9 years agoMerge branch 'va/mailinfo-doc-typofix' into maint
Junio C Hamano [Thu, 26 May 2016 20:17:13 +0000 (13:17 -0700)]
Merge branch 'va/mailinfo-doc-typofix' into maint

Typofix.

* va/mailinfo-doc-typofix:
  Documentation/git-mailinfo: fix typo

9 years agoMerge branch 'maint-2.7' into maint
Junio C Hamano [Thu, 26 May 2016 20:16:51 +0000 (13:16 -0700)]
Merge branch 'maint-2.7' into maint

* maint-2.7:
  archive-tar: convert snprintf to xsnprintf

9 years agomingw: make isatty() recognize MSYS2's pseudo terminals (/dev/pty*)
Karsten Blees [Wed, 27 Apr 2016 15:16:37 +0000 (17:16 +0200)]
mingw: make isatty() recognize MSYS2's pseudo terminals (/dev/pty*)

MSYS2 emulates pseudo terminals via named pipes, and isatty() returns 0
for such file descriptors. Therefore, some interactive functionality
(such as launching a pager, asking if a failed unlink should be repeated
etc.) doesn't work when run in a terminal emulator that uses MSYS2's
ptys (such as mintty).

However, MSYS2 uses special names for its pty pipes ('msys-*-pty*'),
which allows us to distinguish them from normal piped input / output.

On startup, check if stdin / stdout / stderr are connected to such pipes
using the NtQueryObject API from NTDll.dll. If the names match, adjust
the flags in MSVCRT's ioinfo structure accordingly.

Signed-off-by: Karsten Blees <redacted>
Signed-off-by: Johannes Schindelin <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agoMerge branch 'jk/war-on-sprintf' into maint-2.7
Junio C Hamano [Thu, 26 May 2016 17:45:37 +0000 (10:45 -0700)]
Merge branch 'jk/war-on-sprintf' into maint-2.7

* jk/war-on-sprintf:
  archive-tar: convert snprintf to xsnprintf

9 years agoarchive-tar: convert snprintf to xsnprintf
Jeff King [Thu, 26 May 2016 04:28:08 +0000 (00:28 -0400)]
archive-tar: convert snprintf to xsnprintf

Commit f2f0267 (archive-tar: use xsnprintf for trivial
formatting, 2015-09-24) converted cases of "sprintf" to
"xsnprintf", but accidentally left one as just "snprintf".
This meant that we could silently truncate the resulting
buffer instead of flagging an error.

In practice, this is impossible to achieve, as we are
formatting a ustar checksum, which can be at most 7
characters. But the point of xsnprintf is to document and
check for "should be impossible" conditions; this site was
just accidentally mis-converted during f2f0267.

Noticed-by: Paul Green <redacted>
Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agoMerge branch 'fix_fr' of git://github.com/jnavila/git
Jiang Xin [Thu, 26 May 2016 15:40:48 +0000 (23:40 +0800)]
Merge branch 'fix_fr' of git://github.com/jnavila/git

* 'fix_fr' of git://github.com/jnavila/git:
  l10n: fr.po Fixed grammar mistake

9 years agosubmodule update: make use of the existing fetch_in_submodule function
Stefan Beller [Wed, 25 May 2016 22:00:04 +0000 (15:00 -0700)]
submodule update: make use of the existing fetch_in_submodule function

Signed-off-by: Stefan Beller <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agodaemon: enable SO_KEEPALIVE for all sockets
Eric Wong [Wed, 25 May 2016 03:15:05 +0000 (03:15 +0000)]
daemon: enable SO_KEEPALIVE for all sockets

While --init-timeout and --timeout options exist and I've never
run git-daemon without them, some users may forget to set them
and encounter hung daemon processes when connections fail.
Enable socket-level timeouts so the kernel can send keepalive
probes as necessary to detect failed connections.

Signed-off-by: Eric Wong <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agol10n: Updated Vietnamese translation (2597t)
Tran Ngoc Quan [Wed, 25 May 2016 00:42:13 +0000 (07:42 +0700)]
l10n: Updated Vietnamese translation (2597t)

Signed-off-by: Tran Ngoc Quan <redacted>
9 years agot4204: do not let $name variable clobbered
Junio C Hamano [Mon, 23 May 2016 22:23:56 +0000 (15:23 -0700)]
t4204: do not let $name variable clobbered

test_patch_id_file_order shell function uses $name variable to hold
one filename, and calls another shell function calc_patch_id as a
downstream of one pipeline.  The called function, however, also uses
the same $name variable.  With a shell implementation that runs the
callee in the current shell environment, the caller's $name would
be clobbered by the callee's use of the same variable.

This hasn't been an issue with dash and bash.  ksh93 reveals the
breakage in the test script.

Fix it by using a distinct variable name in the callee.

Reported-by: Armin Kunaschik <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agoimap-send.c: introduce the GIT_TRACE_CURL enviroment variable
Elia Pinto [Mon, 23 May 2016 13:44:03 +0000 (13:44 +0000)]
imap-send.c: introduce the GIT_TRACE_CURL enviroment variable

Permit the use of the GIT_TRACE_CURL environment variable calling
the setup_curl_trace http.c helper routine.

Helped-by: Torsten Bögershausen <redacted>
Helped-by: Ramsay Jones <redacted>
Helped-by: Junio C Hamano <redacted>
Helped-by: Eric Sunshine <redacted>
Helped-by: Jeff King <redacted>
Signed-off-by: Elia Pinto <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agohttp.c: implement the GIT_TRACE_CURL environment variable
Elia Pinto [Mon, 23 May 2016 13:44:02 +0000 (13:44 +0000)]
http.c: implement the GIT_TRACE_CURL environment variable

Implement the GIT_TRACE_CURL environment variable to allow a
greater degree of detail of GIT_CURL_VERBOSE, in particular
the complete transport header and all the data payload exchanged.
It might be useful if a particular situation could require a more
thorough debugging analysis. Document the new GIT_TRACE_CURL
environment variable.

Helped-by: Torsten Bögershausen <redacted>
Helped-by: Ramsay Jones <redacted>
Helped-by: Junio C Hamano <redacted>
Helped-by: Eric Sunshine <redacted>
Helped-by: Jeff King <redacted>
Signed-off-by: Elia Pinto <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agoconfig: set up config_source for command-line config
Jeff King [Wed, 18 May 2016 22:41:08 +0000 (18:41 -0400)]
config: set up config_source for command-line config

When we parse a config file, we set up the global "cf"
variable as a pointer to a "struct config_source" describing
the file we are parsing. This is used for error messages, as
well as for lookup functions like current_config_name().

The "cf" variable is NULL in two cases:

  1. When we are parsing command-line config, in which case
     there is no source file.

  2. When we are not parsing any config at all.

Callers like current_config_name() must assume we are in
case 1 if they see a NULL "cf". However, this means that if
they are accidentally used outside of a config parsing
callback, they will quietly return a bogus answer.

This might seem like an unlikely accident (why would you ask
for the current config file if you are not parsing config?),
but it's actually an easy mistake to make due to the
configset caching. git_config() serves the answers from a
configset cache, and any calls to current_config_name() will
claim that we are parsing command-line config, no matter
what the original source.

So let's distinguish these cases by having the command-line
config parser set up a config_source with a NULL name (which
callers already handle properly). We can use this to catch
programming errors in some cases, and to give better
messages to the user in others.

Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agogit_config_parse_parameter: refactor cleanup code
Jeff King [Wed, 18 May 2016 22:39:49 +0000 (18:39 -0400)]
git_config_parse_parameter: refactor cleanup code

We have several exits from the function, each of which has
to do some cleanup. Let's consolidate these in an "out"
label we can jump to. This doesn't save us much now, but it
will help as we add more things that need cleanup.

Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agogit_config_with_options: drop "found" counting
Jeff King [Wed, 18 May 2016 22:39:02 +0000 (18:39 -0400)]
git_config_with_options: drop "found" counting

Prior to 1f2baa7 (config: treat non-existent config files as
empty, 2010-10-21), we returned an error if any config files
were missing. That commit made this a non-error, but
returned the number of sources found, in case any caller
wanted to distinguish this case.

In the past 5+ years, no caller has; the only two places
which bother to check the return value care only about the
error case.  Let's drop this code, which complicates the
function. Similarly, let's drop the "found anything" return
from git_config_from_parameters, which was present only to
support this (and similarly has never had other callers care
for the past 5+ years).

Note that we do need to update a comment in one of the
callers, even though the code immediately below it doesn't
care about this case.

Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agoworktree: simplify prefixing paths
Nguyễn Thái Ngọc Duy [Sun, 22 May 2016 09:33:56 +0000 (16:33 +0700)]
worktree: simplify prefixing paths

This also makes slash conversion always happen on Windows (a side effect
of prefix_filename). Which is a good thing.

Signed-off-by: Nguyễn Thái Ngọc Duy <redacted>
Reviewed-by: Eric Sunshine <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agoworktree: avoid 0{40}, too many zeroes, hard to read
Nguyễn Thái Ngọc Duy [Sun, 22 May 2016 09:33:55 +0000 (16:33 +0700)]
worktree: avoid 0{40}, too many zeroes, hard to read

Signed-off-by: Nguyễn Thái Ngọc Duy <redacted>
Reviewed-by: Eric Sunshine <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agoworktree.c: use is_dot_or_dotdot()
Nguyễn Thái Ngọc Duy [Sun, 22 May 2016 09:33:54 +0000 (16:33 +0700)]
worktree.c: use is_dot_or_dotdot()

Signed-off-by: Nguyễn Thái Ngọc Duy <redacted>
Reviewed-by: Eric Sunshine <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agogit-worktree.txt: keep subcommand listing in alphabetical order
Nguyễn Thái Ngọc Duy [Sun, 22 May 2016 09:33:53 +0000 (16:33 +0700)]
git-worktree.txt: keep subcommand listing in alphabetical order

This is probably not the best order. But it makes it no-brainer to know
where to insert new commands. At some point we might want to reorder at
least the synopsis part again, grouping commonly use subcommands together.

Signed-off-by: Nguyễn Thái Ngọc Duy <redacted>
Reviewed-by: Eric Sunshine <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agoworktree.c: rewrite mark_current_worktree() to avoid strbuf
Nguyễn Thái Ngọc Duy [Sun, 22 May 2016 09:33:52 +0000 (16:33 +0700)]
worktree.c: rewrite mark_current_worktree() to avoid strbuf

strbuf is a bit overkill for this function. What we need is to call
absolute_path() twice and make sure the second call does not destroy the
result of the first. One buffer allocation is enough.

Signed-off-by: Nguyễn Thái Ngọc Duy <redacted>
Reviewed-by: Eric Sunshine <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agocompletion: support git-worktree
Nguyễn Thái Ngọc Duy [Sun, 22 May 2016 09:33:51 +0000 (16:33 +0700)]
completion: support git-worktree

This adds bare-bone completion support for git-worktree. More advanced
completion (e.g. ref completion in git-worktree-add) can be added later.

--force completion in "worktree add" is left out because that option
should be handled with care.

Signed-off-by: Nguyễn Thái Ngọc Duy <redacted>
Reviewed-by: Eric Sunshine <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agol10n: git.pot: v2.9.0 round 1 (104 new, 37 removed)
Jiang Xin [Tue, 24 May 2016 15:43:14 +0000 (23:43 +0800)]
l10n: git.pot: v2.9.0 round 1 (104 new, 37 removed)

Generate po/git.pot from v2.9.0-rc0 for git v2.9.0 l10n round 1.

Signed-off-by: Jiang Xin <redacted>
9 years agoGit 2.9-rc0
Junio C Hamano [Mon, 23 May 2016 22:02:48 +0000 (15:02 -0700)]
Git 2.9-rc0

Signed-off-by: Junio C Hamano <redacted>
9 years agoMerge branch 'svn-travis' of git://bogomips.org/git-svn
Junio C Hamano [Mon, 23 May 2016 22:01:03 +0000 (15:01 -0700)]
Merge branch 'svn-travis' of git://bogomips.org/git-svn

* 'svn-travis' of git://bogomips.org/git-svn:
  travis-ci: enable Git SVN tests t91xx on Linux

9 years agoMerge branch 'jc/rerere-multi'
Junio C Hamano [Mon, 23 May 2016 21:54:37 +0000 (14:54 -0700)]
Merge branch 'jc/rerere-multi'

* jc/rerere-multi:
  rerere: remove an null statement
  rerere: plug memory leaks upon "rerere forget" failure

9 years agoMerge branch 'da/difftool'
Junio C Hamano [Mon, 23 May 2016 21:54:36 +0000 (14:54 -0700)]
Merge branch 'da/difftool'

"git difftool" learned to handle unmerged paths correctly in
dir-diff mode.

* da/difftool:
  difftool: handle unmerged files in dir-diff mode
  difftool: initialize variables for readability

9 years agoMerge branch 'jk/test-z-n-unquoted'
Junio C Hamano [Mon, 23 May 2016 21:54:35 +0000 (14:54 -0700)]
Merge branch 'jk/test-z-n-unquoted'

t9xxx series has been updated primarily for readability, while
fixing small bugs in it.  A few scripted Porcelains have also been
updated to fix possible bugs around their use of "test -z" and
"test -n".

* jk/test-z-n-unquoted:
  always quote shell arguments to test -z/-n
  t9103: modernize test style
  t9107: switch inverted single/double quotes in test
  t9107: use "return 1" instead of "exit 1"
  t9100,t3419: enclose all test code in single-quotes
  t/lib-git-svn: drop $remote_git_svn and $git_svn_id

9 years agoMerge branch 'ar/diff-args-osx-precompose'
Junio C Hamano [Mon, 23 May 2016 21:54:35 +0000 (14:54 -0700)]
Merge branch 'ar/diff-args-osx-precompose'

Many commands normalize command line arguments from NFD to NFC
variant of UTF-8 on OSX, but commands in the "diff" family did
not, causing "git diff $path" to complain that no such path is
known to Git.  They have been taught to do the normalization.

* ar/diff-args-osx-precompose:
  diff: run arguments through precompose_argv

9 years agoMerge branch 'jc/doc-lint'
Junio C Hamano [Mon, 23 May 2016 21:54:34 +0000 (14:54 -0700)]
Merge branch 'jc/doc-lint'

Find common mistakes when writing gitlink: in our documentation and
drive the check from "make check-docs".

I am not entirely happy with the way the script chooses what input
file to validate, but it is not worse than not having anything, so
let's move it forward and have the logic improved later when people
care about it deeply.

* jc/doc-lint:
  ci: validate "linkgit:" in documentation

9 years agoMerge branch 'js/perf-rebase-i'
Junio C Hamano [Mon, 23 May 2016 21:54:33 +0000 (14:54 -0700)]
Merge branch 'js/perf-rebase-i'

Add perf test for "rebase -i"

* js/perf-rebase-i:
  perf: run "rebase -i" under perf
  perf: make the tests work in worktrees
  perf: let's disable symlinks when they are not available

9 years agoMerge branch 'jc/test-parse-options-expect'
Junio C Hamano [Mon, 23 May 2016 21:54:32 +0000 (14:54 -0700)]
Merge branch 'jc/test-parse-options-expect'

t0040 had too many unnecessary repetitions in its test data.  Teach
test-parse-options program so that a caller can tell what it
expects in its output, so that these repetitions can be cleaned up.

* jc/test-parse-options-expect:
  t0040: convert a few tests to use test-parse-options --expect
  t0040: remove unused test helpers
  test-parse-options: --expect=<string> option to simplify tests
  test-parse-options: fix output when callback option fails

9 years agoMerge branch 'pb/commit-verbose-config'
Junio C Hamano [Mon, 23 May 2016 21:54:31 +0000 (14:54 -0700)]
Merge branch 'pb/commit-verbose-config'

"git commit" learned to pay attention to "commit.verbose"
configuration variable and act as if "--verbose" option was
given from the command line.

* pb/commit-verbose-config:
  commit: add a commit.verbose config variable
  t7507-commit-verbose: improve test coverage by testing number of diffs
  parse-options.c: make OPTION_COUNTUP respect "unspecified" values
  t/t7507: improve test coverage
  t0040-parse-options: improve test coverage
  test-parse-options: print quiet as integer
  t0040-test-parse-options.sh: fix style issues

9 years agoMerge branch 'xy/format-patch-base'
Junio C Hamano [Mon, 23 May 2016 21:54:31 +0000 (14:54 -0700)]
Merge branch 'xy/format-patch-base'

"git format-patch" learned a new "--base" option to record what
(public, well-known) commit the original series was built on in
its output.

* xy/format-patch-base:
  format-patch: introduce format.useAutoBase configuration
  format-patch: introduce --base=auto option
  format-patch: add '--base' option to record base tree info
  patch-ids: make commit_patch_id() a public helper function

9 years agoMerge branch 'tb/core-eol-fix'
Junio C Hamano [Mon, 23 May 2016 21:54:30 +0000 (14:54 -0700)]
Merge branch 'tb/core-eol-fix'

A couple of bugs around core.autocrlf have been fixed.

* tb/core-eol-fix:
  convert.c: ident + core.autocrlf didn't work
  t0027: test cases for combined attributes
  convert: allow core.autocrlf=input and core.eol=crlf
  t0027: make commit_chk_wrnNNO() reliable

9 years agoMerge branch 'nd/worktree-various-heads'
Junio C Hamano [Mon, 23 May 2016 21:54:29 +0000 (14:54 -0700)]
Merge branch 'nd/worktree-various-heads'

The experimental "multiple worktree" feature gains more safety to
forbid operations on a branch that is checked out or being actively
worked on elsewhere, by noticing that e.g. it is being rebased.

* nd/worktree-various-heads:
  branch: do not rename a branch under bisect or rebase
  worktree.c: check whether branch is bisected in another worktree
  wt-status.c: split bisect detection out of wt_status_get_state()
  worktree.c: check whether branch is rebased in another worktree
  worktree.c: avoid referencing to worktrees[i] multiple times
  wt-status.c: make wt_status_check_rebase() work on any worktree
  wt-status.c: split rebase detection out of wt_status_get_state()
  path.c: refactor and add worktree_git_path()
  worktree.c: mark current worktree
  worktree.c: make find_shared_symref() return struct worktree *
  worktree.c: store "id" instead of "git_dir"
  path.c: add git_common_path() and strbuf_git_common_path()
  dir.c: rename str(n)cmp_icase to fspath(n)cmp

9 years agoMerge branch 'ss/commit-dry-run-resolve-merge-to-no-op'
Junio C Hamano [Mon, 23 May 2016 21:54:28 +0000 (14:54 -0700)]
Merge branch 'ss/commit-dry-run-resolve-merge-to-no-op'

"git commit --dry-run" reported "No, no, you cannot commit." in one
case where "git commit" would have allowed you to commit, and this
improves it a little bit ("git commit --dry-run --short" still does
not give you the correct answer, for example).  This is a stop-gap
measure in that "commit --short --dry-run" still gives an incorrect
result.

* ss/commit-dry-run-resolve-merge-to-no-op:
  wt-status.c: set commitable bit if there is a meaningful merge.

9 years agotravis-ci: enable Git SVN tests t91xx on Linux
Lars Schneider [Thu, 19 May 2016 09:10:08 +0000 (11:10 +0200)]
travis-ci: enable Git SVN tests t91xx on Linux

Install the "git-svn" package to make the Perl SVN libraries available
to the Git SVN tests on Travis-CI Linux build machines.

Signed-off-by: Lars Schneider <redacted>
Signed-off-by: Eric Wong <redacted>
9 years agopull: warn on --verify-signatures with --rebase
Alexander Hirsch [Fri, 20 May 2016 21:00:54 +0000 (23:00 +0200)]
pull: warn on --verify-signatures with --rebase

git-pull silently ignores the --verify-signatures option when
running --rebase, potentially leaving users in the belief that
the rebase operation would check for valid GPG signatures.

Implementing --verify-signatures for git-rebase was talked about,
but doubts for a valid workflow rose up.  Since you usually merge
other's branches into your branch you might have an interest that
their side has a valid GPG signature.

Rebasing, on the other hand, is to rebuild your branch on top of
other's work, in order to push the result back, and it is too late
to reject their work even if you find their commits lack acceptable
signature.

Let's warn users that the --verify-signatures option is ignored
during "pull --rebase"; users do not wonder what would happen if
their commits lack acceptable signature that way.

Signed-off-by: Alexander Hirsch <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agot0008: 4 tests fail with ksh88
Armin Kunaschik [Fri, 20 May 2016 14:31:30 +0000 (16:31 +0200)]
t0008: 4 tests fail with ksh88

In t0008, we have

cat <<-EOF
...
a/b/.gitignore:8:!on* "a/b/one\"three"
...
EOF

and expect that the backslash-dq is passed through literally.

ksh88 eats the backslash and produces a wrong expect file to
compare the actual output with.

Using \\" works this around without breaking other POSIX shells
(which collapse backslash-backslash to a single backslash), and
ksh88 does so, too.

It makes it easier to read, too, because the reason why we are
writing backslash there is *not* because we think dq is special and
want to quote it (if that were the case we would have two more
backslashes on that line).  It is simply because we want a single
literal backslash there.  Since backslash is treated specially in
unquoted here-document, explicitly doubling it to quote it expresses
our intent better than relying on the character that immediately
comes after it (i.e. '"') not being a special character.

Signed-off-by: Armin Kunaschik <redacted>
Acked-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
9 years agorerere: remove an null statement
Junio C Hamano [Thu, 19 May 2016 19:51:22 +0000 (12:51 -0700)]
rerere: remove an null statement

J6t spotted that previous commit added an empty statement by
mistake.

Signed-off-by: Junio C Hamano <redacted>
9 years agoSync with 2.8.3
Junio C Hamano [Wed, 18 May 2016 22:33:57 +0000 (15:33 -0700)]
Sync with 2.8.3

* maint:
  Git 2.8.3

9 years agoGit 2.8.3
Junio C Hamano [Wed, 18 May 2016 21:45:08 +0000 (14:45 -0700)]
Git 2.8.3

Signed-off-by: Junio C Hamano <redacted>
9 years agoMerge branch 'jk/push-client-deadlock-fix'
Junio C Hamano [Wed, 18 May 2016 22:11:46 +0000 (15:11 -0700)]
Merge branch 'jk/push-client-deadlock-fix'

Some Windows SDK lacks pthread_sigmask() implementation and fails
to compile the recently updated "git push" codepath that uses it.

* jk/push-client-deadlock-fix:
  Windows: only add a no-op pthread_sigmask() when needed
  Windows: add pthread_sigmask() that does nothing

9 years agoMerge branch 'sb/misc-cleanups' into HEAD
Junio C Hamano [Wed, 18 May 2016 21:40:15 +0000 (14:40 -0700)]
Merge branch 'sb/misc-cleanups' into HEAD

* sb/misc-cleanups:
  submodule-config: don't shadow `cache`
  config.c: drop local variable
  credential-cache, send_request: close fd when done
  bundle: don't leak an fd in case of early return
  abbrev_sha1_in_line: don't leak memory
  notes: don't leak memory in git_config_get_notes_strategy

9 years agoMerge branch 'ew/doc-split-pack-disables-bitmap' into HEAD
Junio C Hamano [Wed, 18 May 2016 21:40:15 +0000 (14:40 -0700)]
Merge branch 'ew/doc-split-pack-disables-bitmap' into HEAD

Doc update.

* ew/doc-split-pack-disables-bitmap:
  pack-objects: warn on split packs disabling bitmaps

9 years agoMerge branch 'sb/clean-test-fix' into HEAD
Junio C Hamano [Wed, 18 May 2016 21:40:14 +0000 (14:40 -0700)]
Merge branch 'sb/clean-test-fix' into HEAD

* sb/clean-test-fix:
  t7300: mark test with SANITY

9 years agoMerge branch 'rn/glossary-typofix' into HEAD
Junio C Hamano [Wed, 18 May 2016 21:40:13 +0000 (14:40 -0700)]
Merge branch 'rn/glossary-typofix' into HEAD

* rn/glossary-typofix:
  Documentation: fix typo 'In such these cases'

9 years agoMerge branch 'ew/normal-to-e' into HEAD
Junio C Hamano [Wed, 18 May 2016 21:40:12 +0000 (14:40 -0700)]
Merge branch 'ew/normal-to-e' into HEAD

* ew/normal-to-e:
  .mailmap: update to my shorter email address

9 years agoMerge branch 'sb/config-exit-status-list' into HEAD
Junio C Hamano [Wed, 18 May 2016 21:40:12 +0000 (14:40 -0700)]
Merge branch 'sb/config-exit-status-list' into HEAD

Doc update.

* sb/config-exit-status-list:
  config doc: improve exit code listing

9 years agoMerge branch 'rt/string-list-lookup-cleanup' into HEAD
Junio C Hamano [Wed, 18 May 2016 21:40:12 +0000 (14:40 -0700)]
Merge branch 'rt/string-list-lookup-cleanup' into HEAD

Code cleanup.

* rt/string-list-lookup-cleanup:
  string_list: use string-list API in unsorted_string_list_lookup()

9 years agoMerge branch 'jk/fix-attribute-macro-in-2.5' into HEAD
Junio C Hamano [Wed, 18 May 2016 21:40:12 +0000 (14:40 -0700)]
Merge branch 'jk/fix-attribute-macro-in-2.5' into HEAD

Code fixup.

* jk/fix-attribute-macro-in-2.5:
  remote.c: spell __attribute__ correctly

9 years agoMerge branch 'sg/test-lib-simplify-expr-away' into HEAD
Junio C Hamano [Wed, 18 May 2016 21:40:11 +0000 (14:40 -0700)]
Merge branch 'sg/test-lib-simplify-expr-away' into HEAD

Code cleanup.

* sg/test-lib-simplify-expr-away:
  test-lib: simplify '--option=value' parsing

9 years agoMerge branch 'nd/remove-unused' into HEAD
Junio C Hamano [Wed, 18 May 2016 21:40:11 +0000 (14:40 -0700)]
Merge branch 'nd/remove-unused' into HEAD

Code cleanup.

* nd/remove-unused:
  wrapper.c: delete dead function git_mkstemps()
  dir.c: remove dead function fnmatch_icase()

9 years agoMerge branch 'sk/gitweb-highlight-encoding' into HEAD
Junio C Hamano [Wed, 18 May 2016 21:40:10 +0000 (14:40 -0700)]
Merge branch 'sk/gitweb-highlight-encoding' into HEAD

Some multi-byte encoding can have a backslash byte as a later part
of one letter, which would confuse "highlight" filter used in
gitweb.

* sk/gitweb-highlight-encoding:
  gitweb: apply fallback encoding before highlight

9 years agoMerge branch 'ls/travis-submitting-patches' into HEAD
Junio C Hamano [Wed, 18 May 2016 21:40:09 +0000 (14:40 -0700)]
Merge branch 'ls/travis-submitting-patches' into HEAD

* ls/travis-submitting-patches:
  Documentation: add setup instructions for Travis CI

9 years agoMerge branch 'js/close-packs-before-gc' into HEAD
Junio C Hamano [Wed, 18 May 2016 21:40:09 +0000 (14:40 -0700)]
Merge branch 'js/close-packs-before-gc' into HEAD

* js/close-packs-before-gc:
  t5510: run auto-gc in the foreground

9 years agoMerge branch 'ls/p4-lfs' into HEAD
Junio C Hamano [Wed, 18 May 2016 21:40:08 +0000 (14:40 -0700)]
Merge branch 'ls/p4-lfs' into HEAD

Recent update to Git LFS broke "git p4" by changing the output from
its "lfs pointer" subcommand.

* ls/p4-lfs:
  git-p4: fix Git LFS pointer parsing
  travis-ci: express Linux/OS X dependency versions more clearly
  travis-ci: update Git-LFS and P4 to the latest version

git clone https://git.99rst.org/PROJECT