git
7 years agoMerge branch 'jc/renormalize-merge-kill-safer-crlf' into maint
Junio C Hamano [Tue, 17 Jan 2017 22:49:28 +0000 (14:49 -0800)] 
Merge branch 'jc/renormalize-merge-kill-safer-crlf' into maint

Fix a corner case in merge-recursive regression that crept in
during 2.10 development cycle.

* jc/renormalize-merge-kill-safer-crlf:
  convert: git cherry-pick -Xrenormalize did not work
  merge-recursive: handle NULL in add_cacheinfo() correctly
  cherry-pick: demonstrate a segmentation fault

7 years agoMerge branch 'ls/p4-empty-file-on-lfs' into maint
Junio C Hamano [Tue, 17 Jan 2017 22:49:27 +0000 (14:49 -0800)] 
Merge branch 'ls/p4-empty-file-on-lfs' into maint

"git p4" LFS support was broken when LFS stores an empty blob.

* ls/p4-empty-file-on-lfs:
  git-p4: fix empty file processing for large file system backend GitLFS

7 years agoMerge branch 'da/mergetool-trust-exit-code' into maint
Junio C Hamano [Tue, 17 Jan 2017 22:49:27 +0000 (14:49 -0800)] 
Merge branch 'da/mergetool-trust-exit-code' into maint

mergetool.<tool>.trustExitCode configuration variable did not apply
to built-in tools, but now it does.

* da/mergetool-trust-exit-code:
  mergetools/vimdiff: trust Vim's exit code
  mergetool: honor mergetool.$tool.trustExitCode for built-in tools

7 years agoMerge branch 'nd/worktree-list-fixup' into maint
Junio C Hamano [Tue, 17 Jan 2017 22:49:27 +0000 (14:49 -0800)] 
Merge branch 'nd/worktree-list-fixup' into maint

The output from "git worktree list" was made in readdir() order,
and was unstable.

* nd/worktree-list-fixup:
  worktree list: keep the list sorted
  worktree.c: get_worktrees() takes a new flag argument
  get_worktrees() must return main worktree as first item even on error
  worktree: reorder an if statement
  worktree.c: zero new 'struct worktree' on allocation

7 years agoMerge branch 'bw/push-dry-run' into maint
Junio C Hamano [Tue, 17 Jan 2017 22:49:27 +0000 (14:49 -0800)] 
Merge branch 'bw/push-dry-run' into maint

"git push --dry-run --recurse-submodule=on-demand" wasn't
"--dry-run" in the submodules.

* bw/push-dry-run:
  push: fix --dry-run to not push submodules
  push: --dry-run updates submodules when --recurse-submodules=on-demand

7 years agoMerge branch 'hv/submodule-not-yet-pushed-fix' into maint
Junio C Hamano [Tue, 17 Jan 2017 22:49:26 +0000 (14:49 -0800)] 
Merge branch 'hv/submodule-not-yet-pushed-fix' into maint

The code in "git push" to compute if any commit being pushed in the
superproject binds a commit in a submodule that hasn't been pushed
out was overly inefficient, making it unusable even for a small
project that does not have any submodule but have a reasonable
number of refs.

* hv/submodule-not-yet-pushed-fix:
  submodule_needs_pushing(): explain the behaviour when we cannot answer
  batch check whether submodule needs pushing into one call
  serialize collection of refs that contain submodule changes
  serialize collection of changed submodules

7 years agoMerge branch 'dt/empty-submodule-in-merge' into maint
Junio C Hamano [Tue, 17 Jan 2017 22:49:26 +0000 (14:49 -0800)] 
Merge branch 'dt/empty-submodule-in-merge' into maint

An empty directory in a working tree that can simply be nuked used
to interfere while merging or cherry-picking a change to create a
submodule directory there, which has been fixed..

* dt/empty-submodule-in-merge:
  submodules: allow empty working-tree dirs in merge/cherry-pick

7 years agoMerge branch 'jk/rev-parse-symbolic-parents-fix' into maint
Junio C Hamano [Tue, 17 Jan 2017 22:49:26 +0000 (14:49 -0800)] 
Merge branch 'jk/rev-parse-symbolic-parents-fix' into maint

"git rev-parse --symbolic" failed with a more recent notation like
"HEAD^-1" and "HEAD^!".

* jk/rev-parse-symbolic-parents-fix:
  rev-parse: fix parent shorthands with --symbolic

7 years agoMerge branch 'js/mingw-isatty' into maint
Junio C Hamano [Tue, 17 Jan 2017 22:49:25 +0000 (14:49 -0800)] 
Merge branch 'js/mingw-isatty' into maint

Update the isatty() emulation for Windows by updating the previous
hack that depended on internals of (older) MSVC runtime.

* js/mingw-isatty:
  mingw: replace isatty() hack
  mingw: fix colourization on Cygwin pseudo terminals
  mingw: adjust is_console() to work with stdin
  mingw: intercept isatty() to handle /dev/null as Git expects it

7 years agoMerge branch 'bb/unicode-9.0' into maint
Junio C Hamano [Tue, 17 Jan 2017 22:49:25 +0000 (14:49 -0800)] 
Merge branch 'bb/unicode-9.0' into maint

The character width table has been updated to match Unicode 9.0

* bb/unicode-9.0:
  unicode_width.h: update the width tables to Unicode 9.0
  update_unicode.sh: remove the plane filter
  update_unicode.sh: automatically download newer definition files
  update_unicode.sh: pin the uniset repo to a known good commit
  update_unicode.sh: remove an unnecessary subshell level
  update_unicode.sh: move it into contrib/update-unicode

7 years agoMerge branch 'ls/travis-update-p4-and-lfs' into maint
Junio C Hamano [Tue, 17 Jan 2017 22:49:24 +0000 (14:49 -0800)] 
Merge branch 'ls/travis-update-p4-and-lfs' into maint

The default Travis-CI configuration specifies newer P4 and GitLFS.

* ls/travis-update-p4-and-lfs:
  travis-ci: update P4 to 16.2 and GitLFS to 1.5.2 in Linux build

7 years agomingw: replace isatty() hack
Jeff Hostetler [Thu, 22 Dec 2016 17:09:23 +0000 (18:09 +0100)] 
mingw: replace isatty() hack

Git for Windows has carried a patch that depended on internals
of MSVC runtime, but it does not work correctly with recent MSVC
runtime. A replacement was written originally for compiling
with VC++. The patch in this message is a backport of that
replacement, and it also fixes the previous attempt to make
isatty() tell that /dev/null is *not* an interactive terminal.

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Tested-by: Beat Bolli <dev+git@drbeat.li>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agomingw: fix colourization on Cygwin pseudo terminals
Alan Davies [Thu, 22 Dec 2016 17:09:18 +0000 (18:09 +0100)] 
mingw: fix colourization on Cygwin pseudo terminals

Git only colours the output and uses pagination if isatty() returns 1.
MSYS2 and Cygwin emulate pseudo terminals via named pipes, meaning that
isatty() returns 0.

f7f90e0f4f (mingw: make isatty() recognize MSYS2's pseudo terminals
(/dev/pty*), 2016-04-27) fixed this for MSYS2 terminals, but not for
Cygwin.

The named pipes that Cygwin and MSYS2 use are very similar. MSYS2 PTY pipes
are called 'msys-*-pty*' and Cygwin uses 'cygwin-*-pty*'. This commit
modifies the existing check to allow both MSYS2 and Cygwin PTY pipes to be
identified as TTYs.

Note that pagination is still broken when running Git for Windows from
within Cygwin, as MSYS2's less.exe is spawned (and does not like to
interact with Cygwin's PTY).

This partially fixes https://github.com/git-for-windows/git/issues/267

Signed-off-by: Alan Davies <alan.n.davies@gmail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agomingw: adjust is_console() to work with stdin
Johannes Schindelin [Thu, 22 Dec 2016 17:08:57 +0000 (18:08 +0100)] 
mingw: adjust is_console() to work with stdin

When determining whether a handle corresponds to a *real* Win32 Console
(as opposed to, say, a character device such as /dev/null), we use the
GetConsoleOutputBufferInfo() function as a tell-tale.

However, that does not work for *input* handles associated with a
console. Let's just use the GetConsoleMode() function for input handles,
and since it does not work on output handles fall back to the previous
method for those.

This patch prepares for using is_console() instead of my previous
misguided attempt in cbb3f3c9b1 (mingw: intercept isatty() to handle
/dev/null as Git expects it, 2016-12-11) that broke everything on
Windows.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agounicode_width.h: update the width tables to Unicode 9.0
Beat Bolli [Tue, 13 Dec 2016 23:31:44 +0000 (00:31 +0100)] 
unicode_width.h: update the width tables to Unicode 9.0

Rerunning update-unicode.sh that we fixed in the previous commits
produces these new tables.

Signed-off-by: Beat Bolli <dev+git@drbeat.li>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoupdate_unicode.sh: remove the plane filter
Beat Bolli [Tue, 13 Dec 2016 23:31:43 +0000 (00:31 +0100)] 
update_unicode.sh: remove the plane filter

The uniset upstream has accepted my patches that eliminate the Unicode
plane offsets from the output in '--32' mode.

Remove the corresponding filter in update_unicode.sh.

This also fixes the issue that the plane offsets were not removed from
the second uniset call.

Signed-off-by: Beat Bolli <dev+git@drbeat.li>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoupdate_unicode.sh: automatically download newer definition files
Beat Bolli [Tue, 13 Dec 2016 23:31:42 +0000 (00:31 +0100)] 
update_unicode.sh: automatically download newer definition files

Checking just for the unicode data files' existence is not sufficient;
we should also download them if a newer version exists on the Unicode
consortium's servers. Option -N of wget does this nicely for us.

Reviewed-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Beat Bolli <dev+git@drbeat.li>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoupdate_unicode.sh: pin the uniset repo to a known good commit
Beat Bolli [Tue, 13 Dec 2016 23:31:41 +0000 (00:31 +0100)] 
update_unicode.sh: pin the uniset repo to a known good commit

The uniset upstream has added more commits that for example change the
hexadecimal output in '--32' mode to decimal. Let's pin the repo to a
commit that still outputs the width tables in the format we want.

Signed-off-by: Beat Bolli <dev+git@drbeat.li>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoupdate_unicode.sh: remove an unnecessary subshell level
Beat Bolli [Tue, 13 Dec 2016 23:31:40 +0000 (00:31 +0100)] 
update_unicode.sh: remove an unnecessary subshell level

After the move into contrib/update-unicode, we no longer create the
unicode directory to have a clean working folder. Instead, the directory
of the script is used. This means that the subshell can be removed.

Signed-off-by: Beat Bolli <dev+git@drbeat.li>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoupdate_unicode.sh: move it into contrib/update-unicode
Beat Bolli [Tue, 13 Dec 2016 23:31:39 +0000 (00:31 +0100)] 
update_unicode.sh: move it into contrib/update-unicode

As it's used only by a tiny minority of the Git developer population,
this script does not belong into the main Git source directory.

Move it into contrib/ and adjust the paths to account for the new
location.

Signed-off-by: Beat Bolli <dev+git@drbeat.li>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agomingw: intercept isatty() to handle /dev/null as Git expects it
Johannes Schindelin [Sun, 11 Dec 2016 11:16:57 +0000 (12:16 +0100)] 
mingw: intercept isatty() to handle /dev/null as Git expects it

When Git's source code calls isatty(), it really asks whether the
respective file descriptor is connected to an interactive terminal.

Windows' _isatty() function, however, determines whether the file
descriptor is associated with a character device. And NUL, Windows'
equivalent of /dev/null, is a character device.

Which means that for years, Git mistakenly detected an associated
interactive terminal when being run through the test suite, which
almost always redirects stdin, stdout and stderr to /dev/null.

This bug only became obvious, and painfully so, when the new
bisect--helper entered the `pu` branch and made the automatic build & test
time out because t6030 was waiting for an answer.

For details, see

https://msdn.microsoft.com/en-us/library/f4s0ddew.aspx

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agogit-p4: fix empty file processing for large file system backend GitLFS
Lars Schneider [Sun, 4 Dec 2016 16:03:37 +0000 (17:03 +0100)] 
git-p4: fix empty file processing for large file system backend GitLFS

If git-p4 tried to store an empty file in GitLFS then it crashed while
parsing the pointer file:

  oid = re.search(r'^oid \w+:(\w+)', pointerFile, re.MULTILINE).group(1)
  AttributeError: 'NoneType' object has no attribute 'group'

This happens because GitLFS does not create a pointer file for an empty
file. Teach git-p4 this behavior to fix the problem and add a test case.

Signed-off-by: Lars Schneider <larsxschneider@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agotravis-ci: update P4 to 16.2 and GitLFS to 1.5.2 in Linux build
Lars Schneider [Sun, 4 Dec 2016 13:52:41 +0000 (14:52 +0100)] 
travis-ci: update P4 to 16.2 and GitLFS to 1.5.2 in Linux build

Update Travis-CI dependencies to the latest available versions in
Linux build.

Signed-off-by: Lars Schneider <larsxschneider@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoSync with maint-2.10
Junio C Hamano [Mon, 5 Dec 2016 19:25:47 +0000 (11:25 -0800)] 
Sync with maint-2.10

* maint-2.10:
  preparing for 2.10.3

7 years agopreparing for 2.10.3
Junio C Hamano [Mon, 5 Dec 2016 19:25:02 +0000 (11:25 -0800)] 
preparing for 2.10.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoMerge branch 'jk/common-main' into maint-2.10
Junio C Hamano [Mon, 5 Dec 2016 19:24:17 +0000 (11:24 -0800)] 
Merge branch 'jk/common-main' into maint-2.10

* jk/common-main:
  common-main: stop munging argv[0] path
  git-compat-util: move content inside ifdef/endif guards

7 years agoconvert: git cherry-pick -Xrenormalize did not work
Torsten Bögershausen [Wed, 30 Nov 2016 17:02:32 +0000 (18:02 +0100)] 
convert: git cherry-pick -Xrenormalize did not work

Working with a repo that used to be all CRLF. At some point it
was changed to all LF, with `text=auto` in .gitattributes.
Trying to cherry-pick a commit from before the switchover fails:

    $ git cherry-pick -Xrenormalize <commit>
    fatal: CRLF would be replaced by LF in [path]

Commit 65237284 "unify the "auto" handling of CRLF" introduced
a regression:

Whenever crlf_action is CRLF_TEXT_XXX and not CRLF_AUTO_XXX,
SAFE_CRLF_RENORMALIZE was feed into check_safe_crlf().  This is
wrong because here everything else than SAFE_CRLF_WARN is treated as
SAFE_CRLF_FAIL.

Call check_safe_crlf() only if checksafe is SAFE_CRLF_WARN or
SAFE_CRLF_FAIL.

Reported-by: Eevee (Lexy Munroe) <eevee@veekun.com>
Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoMerge branch 'tb/t0027-raciness-fix' into jc/renormalize-merge-kill-safer-crlf
Junio C Hamano [Thu, 1 Dec 2016 18:34:42 +0000 (10:34 -0800)] 
Merge branch 'tb/t0027-raciness-fix' into jc/renormalize-merge-kill-safer-crlf

* tb/t0027-raciness-fix:
  convert: Correct NNO tests and missing `LF will be replaced by CRLF`

7 years agoMerge branch 'tk/diffcore-delta-remove-unused' into maint
Junio C Hamano [Tue, 29 Nov 2016 21:28:03 +0000 (13:28 -0800)] 
Merge branch 'tk/diffcore-delta-remove-unused' into maint

Code cleanup.

* tk/diffcore-delta-remove-unused:
  diffcore-delta: remove unused parameter to diffcore_count_changes()

7 years agoMerge branch 'jk/create-branch-remove-unused-param' into maint
Junio C Hamano [Tue, 29 Nov 2016 21:28:02 +0000 (13:28 -0800)] 
Merge branch 'jk/create-branch-remove-unused-param' into maint

Code clean-up.

* jk/create-branch-remove-unused-param:
  create_branch: drop unused "head" parameter

7 years agoMerge branch 'nd/worktree-lock' into maint
Junio C Hamano [Tue, 29 Nov 2016 21:28:02 +0000 (13:28 -0800)] 
Merge branch 'nd/worktree-lock' into maint

Typofix.

* nd/worktree-lock:
  git-worktree.txt: fix typo "to"/"two", and add comma

7 years agoMerge branch 'ps/common-info-doc' into maint
Junio C Hamano [Tue, 29 Nov 2016 21:28:01 +0000 (13:28 -0800)] 
Merge branch 'ps/common-info-doc' into maint

Doc fix.

* ps/common-info-doc:
  doc: fix location of 'info/' with $GIT_COMMON_DIR

7 years agoMerge branch 'rs/cocci' into maint
Junio C Hamano [Tue, 29 Nov 2016 21:28:00 +0000 (13:28 -0800)] 
Merge branch 'rs/cocci' into maint

Improve the rule to convert "unsigned char [20]" into "struct
object_id *" in contrib/coccinelle/

* rs/cocci:
  cocci: avoid self-references in object_id transformations

7 years agoMerge branch 'nd/test-helpers' into maint
Junio C Hamano [Tue, 29 Nov 2016 21:28:00 +0000 (13:28 -0800)] 
Merge branch 'nd/test-helpers' into maint

Update to the test framework made in 2.9 timeframe broke running
the tests under valgrind, which has been fixed.

* nd/test-helpers:
  valgrind: support test helpers

7 years agoMerge branch 'sc/fmt-merge-msg-doc-markup-fix' into maint
Junio C Hamano [Tue, 29 Nov 2016 21:27:59 +0000 (13:27 -0800)] 
Merge branch 'sc/fmt-merge-msg-doc-markup-fix' into maint

Documentation fix.

* sc/fmt-merge-msg-doc-markup-fix:
  Documentation/fmt-merge-msg: fix markup in example

7 years agoMerge branch 'rs/commit-pptr-simplify' into maint
Junio C Hamano [Tue, 29 Nov 2016 21:27:59 +0000 (13:27 -0800)] 
Merge branch 'rs/commit-pptr-simplify' into maint

Code simplification.

* rs/commit-pptr-simplify:
  commit: simplify building parents list

7 years agoMerge branch 'jk/rebase-config-insn-fmt-docfix' into maint
Junio C Hamano [Tue, 29 Nov 2016 21:27:58 +0000 (13:27 -0800)] 
Merge branch 'jk/rebase-config-insn-fmt-docfix' into maint

Documentation fix.

* jk/rebase-config-insn-fmt-docfix:
  doc: fix missing "::" in config list

7 years agoMerge branch 'ak/pre-receive-hook-template-modefix' into maint
Junio C Hamano [Tue, 29 Nov 2016 21:27:57 +0000 (13:27 -0800)] 
Merge branch 'ak/pre-receive-hook-template-modefix' into maint

A trivial clean-up to a recently graduated topic.

* ak/pre-receive-hook-template-modefix:
  pre-receive.sample: mark it executable

7 years agoMerge branch 'ls/macos-update' into maint
Junio C Hamano [Tue, 29 Nov 2016 21:27:56 +0000 (13:27 -0800)] 
Merge branch 'ls/macos-update' into maint

Portability update and workaround for builds on recent Mac OS X.

* ls/macos-update:
  travis-ci: disable GIT_TEST_HTTPD for macOS
  Makefile: set NO_OPENSSL on macOS by default

7 years agoMerge branch 'as/merge-attr-sleep' into maint
Junio C Hamano [Tue, 29 Nov 2016 21:27:56 +0000 (13:27 -0800)] 
Merge branch 'as/merge-attr-sleep' into maint

Fix for a racy false-positive test failure.

* as/merge-attr-sleep:
  t6026: clarify the point of "kill $(cat sleep.pid)"
  t6026: ensure that long-running script really is
  Revert "t6026-merge-attr: don't fail if sleep exits early"
  Revert "t6026-merge-attr: ensure that the merge driver was called"
  t6026-merge-attr: ensure that the merge driver was called
  t6026-merge-attr: don't fail if sleep exits early

7 years agoMerge branch 'ak/sh-setup-dot-source-i18n-fix' into maint
Junio C Hamano [Tue, 29 Nov 2016 21:27:56 +0000 (13:27 -0800)] 
Merge branch 'ak/sh-setup-dot-source-i18n-fix' into maint

Recent update to git-sh-setup (a library of shell functions that
are used by our in-tree scripted Porcelain commands) included
another shell library git-sh-i18n without specifying where it is,
relying on the $PATH.  This has been fixed to be more explicit by
prefixing $(git --exec-path) output in front.

* ak/sh-setup-dot-source-i18n-fix:
  git-sh-setup: be explicit where to dot-source git-sh-i18n from.

7 years agoMerge branch 'jk/daemon-path-ok-check-truncation' into maint
Junio C Hamano [Tue, 29 Nov 2016 21:27:55 +0000 (13:27 -0800)] 
Merge branch 'jk/daemon-path-ok-check-truncation' into maint

"git daemon" used fixed-length buffers to turn URL to the
repository the client asked for into the server side directory
path, using snprintf() to avoid overflowing these buffers, but
allowed possibly truncated paths to the directory.  This has been
tightened to reject such a request that causes overlong path to be
required to serve.

* jk/daemon-path-ok-check-truncation:
  daemon: detect and reject too-long paths

7 years agoMerge branch 'rs/ring-buffer-wraparound' into maint
Junio C Hamano [Tue, 29 Nov 2016 21:27:55 +0000 (13:27 -0800)] 
Merge branch 'rs/ring-buffer-wraparound' into maint

The code that we have used for the past 10+ years to cycle
4-element ring buffers turns out to be not quite portable in
theoretical world.

* rs/ring-buffer-wraparound:
  hex: make wraparound of the index into ring-buffer explicit

7 years agoMerge branch 'mm/send-email-cc-cruft-after-address' into maint
Junio C Hamano [Tue, 29 Nov 2016 21:27:54 +0000 (13:27 -0800)] 
Merge branch 'mm/send-email-cc-cruft-after-address' into maint

"git send-email" attempts to pick up valid e-mails from the
trailers, but people in real world write non-addresses there, like
"Cc: Stable <add@re.ss> # 4.8+", which broke the output depending
on the availability and vintage of Mail::Address perl module.

* mm/send-email-cc-cruft-after-address:
  Git.pm: add comment pointing to t9000
  t9000-addresses: update expected results after fix
  parse_mailboxes: accept extra text after <...> address

7 years agoMerge branch 'cp/completion-negative-refs' into maint
Junio C Hamano [Tue, 29 Nov 2016 21:27:53 +0000 (13:27 -0800)] 
Merge branch 'cp/completion-negative-refs' into maint

The command-line completion script (in contrib/) learned to
complete "git cmd ^mas<HT>" to complete the negative end of
reference to "git cmd ^master".

* cp/completion-negative-refs:
  completion: support excluding refs

7 years agoMerge branch 'jc/am-read-author-file' into maint
Junio C Hamano [Tue, 29 Nov 2016 21:27:53 +0000 (13:27 -0800)] 
Merge branch 'jc/am-read-author-file' into maint

Extract a small helper out of the function that reads the authors
script file "git am" internally uses.
This by itself is not useful until a second caller appears in the
future for "rebase -i" helper.

* jc/am-read-author-file:
  am: refactor read_author_script()

7 years agoGit 2.11 v2.11.0
Junio C Hamano [Tue, 29 Nov 2016 20:23:07 +0000 (12:23 -0800)] 
Git 2.11

Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoMerge branch 'jk/common-main'
Junio C Hamano [Tue, 29 Nov 2016 20:22:13 +0000 (12:22 -0800)] 
Merge branch 'jk/common-main'

Fix for a small regression in a topic already in 'master'.

* jk/common-main:
  common-main: stop munging argv[0] path

7 years agoMerge tag 'l10n-2.11.0-rnd3.1' of git://github.com/git-l10n/git-po
Junio C Hamano [Tue, 29 Nov 2016 19:36:11 +0000 (11:36 -0800)] 
Merge tag 'l10n-2.11.0-rnd3.1' of git://github.com/git-l10n/git-po

l10n-2.11.0-rnd3.1: update ru and ca translations

* tag 'l10n-2.11.0-rnd3.1' of git://github.com/git-l10n/git-po:
  l10n: ru.po: update Russian translation
  l10n: ca.po: update translation

7 years agocommon-main: stop munging argv[0] path
Jeff King [Sun, 27 Nov 2016 04:31:13 +0000 (23:31 -0500)] 
common-main: stop munging argv[0] path

Since 650c44925 (common-main: call git_extract_argv0_path(),
2016-07-01), the argv[0] that is seen in cmd_main() of
individual programs is always the basename of the
executable, as common-main strips off the full path. This
can produce confusing results for git-daemon, which wants to
re-exec itself.

For instance, if the program was originally run as
"/usr/lib/git/git-daemon", it will try just re-execing
"git-daemon", which will find the first instance in $PATH.
If git's exec-path has not been prepended to $PATH, we may
find the git-daemon from a different version (or no
git-daemon at all).

Normally this isn't a problem. Git commands are run as "git
daemon", the git wrapper puts the exec-path at the front of
$PATH, and argv[0] is already "daemon" anyway. But running
git-daemon via its full exec-path, while not really a
recommended method, did work prior to 650c44925. Let's make
it work again.

The real goal of 650c44925 was not to munge argv[0], but to
reliably set the argv0_path global. The only reason it
munges at all is that one caller, the git.c wrapper,
piggy-backed on that computation to find the command
basename.  Instead, let's leave argv[0] untouched in
common-main, and have git.c do its own basename computation.

While we're at it, let's drop the return value from
git_extract_argv0_path(). It was only ever used in this one
callsite, and its dual purposes is what led to this
confusion in the first place.

Note that by changing the interface, the compiler can
confirm for us that there are no other callers storing the
return value. But the compiler can't tell us whether any of
the cmd_main() functions (besides git.c) were relying on the
basename munging. However, we can observe that prior to
650c44925, no other cmd_main() functions did that munging,
and no new cmd_main() functions have been introduced since
then. So we can't be regressing any of those cases.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agomergetools/vimdiff: trust Vim's exit code
David Aguilar [Tue, 29 Nov 2016 09:38:20 +0000 (01:38 -0800)] 
mergetools/vimdiff: trust Vim's exit code

Allow vimdiff users to signal that they do not want to use the
result of a merge by exiting with ":cquit", which tells Vim to
exit with an error code.

This is better than the current behavior because it allows users
to directly flag that the merge is bad, using a standard Vim
feature, rather than relying on a timestamp heuristic that is
unforgiving to users that save in-progress merge files.

The original behavior can be restored by configuring
mergetool.vimdiff.trustExitCode to false.

Reported-by: Dun Peal <dunpealer@gmail.com>
Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agomergetool: honor mergetool.$tool.trustExitCode for built-in tools
David Aguilar [Tue, 29 Nov 2016 09:38:07 +0000 (01:38 -0800)] 
mergetool: honor mergetool.$tool.trustExitCode for built-in tools

Built-in merge tools contain a hard-coded assumption about
whether or not a tool's exit code can be trusted to determine
the success or failure of a merge.  Tools whose exit codes are
not trusted contain calls to check_unchanged() in their
merge_cmd() functions.

A problem with this is that the trustExitCode configuration is
not honored for built-in tools.

Teach built-in tools to honor the trustExitCode configuration.
Extend run_merge_cmd() so that it is responsible for calling
check_unchanged() when a tool's exit code cannot be trusted.
Remove check_unchanged() calls from scriptlets since they are no
longer responsible for calling it.

When no configuration is present, exit_code_trustable() is
checked to see whether the exit code should be trusted.
The default implementation returns false.

Tools whose exit codes can be trusted override
exit_code_trustable() to true.

Reported-by: Dun Peal <dunpealer@gmail.com>
Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoMerge branch 'russian-l10n' of https://github.com/DJm00n/git-po-ru
Jiang Xin [Tue, 29 Nov 2016 13:19:43 +0000 (21:19 +0800)] 
Merge branch 'russian-l10n' of https://github.com/DJm00n/git-po-ru

* 'russian-l10n' of https://github.com/DJm00n/git-po-ru:
  l10n: ru.po: update Russian translation

7 years agol10n: ru.po: update Russian translation
Dimitriy Ryazantcev [Tue, 29 Nov 2016 09:33:07 +0000 (11:33 +0200)] 
l10n: ru.po: update Russian translation

Signed-off-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com>
7 years agol10n: ca.po: update translation
Alex Henrie [Tue, 29 Nov 2016 03:06:25 +0000 (20:06 -0700)] 
l10n: ca.po: update translation

Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
7 years agoRelNotes: spelling and phrasing fixups
Marc Branchaud [Thu, 24 Nov 2016 16:59:00 +0000 (11:59 -0500)] 
RelNotes: spelling and phrasing fixups

Signed-off-by: Marc Branchaud <marcnarc@xiplink.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoMerge tag 'l10n-2.11.0-rnd3' of git://github.com/git-l10n/git-po
Junio C Hamano [Mon, 28 Nov 2016 23:28:04 +0000 (15:28 -0800)] 
Merge tag 'l10n-2.11.0-rnd3' of git://github.com/git-l10n/git-po

l10n-2.11.0-rnd3

* tag 'l10n-2.11.0-rnd3' of git://github.com/git-l10n/git-po:
  l10n: de.po: translate 210 new messages
  l10n: fix unmatched single quote in error message

7 years agoworktree list: keep the list sorted
Nguyễn Thái Ngọc Duy [Mon, 28 Nov 2016 09:36:56 +0000 (16:36 +0700)] 
worktree list: keep the list sorted

It makes it easier to write tests for. But it should also be good for
the user since locating a worktree by eye would be easier once they
notice this.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoworktree.c: get_worktrees() takes a new flag argument
Nguyễn Thái Ngọc Duy [Mon, 28 Nov 2016 09:36:55 +0000 (16:36 +0700)] 
worktree.c: get_worktrees() takes a new flag argument

This is another no-op patch, in preparation for get_worktrees() to do
optional things, like sorting.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoget_worktrees() must return main worktree as first item even on error
Nguyễn Thái Ngọc Duy [Mon, 28 Nov 2016 09:36:54 +0000 (16:36 +0700)] 
get_worktrees() must return main worktree as first item even on error

This is required by git-worktree.txt, stating that the main worktree is
the first line (especially in --porcelain mode when we can't just change
behavior at will).

There's only one case when get_worktrees() may skip main worktree, when
parse_ref() fails. Update the code so that we keep first item as main
worktree and return something sensible in this case:

 - In user-friendly mode, since we're not constraint by anything,
   returning "(error)" should do the job (we already show "(detached
   HEAD)" which is not machine-friendly). Actually errors should be
   printed on stderr by parse_ref() (*)

 - In plumbing mode, we do not show neither 'bare', 'detached' or
   'branch ...', which is possible by the format description if I read
   it right.

Careful readers may realize that when the local variable "head_ref" in
get_main_worktree() is emptied, add_head_info() will do nothing to
wt->head_sha1. But that's ok because head_sha1 is zero-ized in the
previous patch.

(*) Well, it does not. But it's supposed to be a stop gap implementation
    until we can reuse refs code to parse "ref: " stuff in HEAD, from
    resolve_refs_unsafe(). Now may be the time since refs refactoring is
    mostly done.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoworktree: reorder an if statement
Nguyễn Thái Ngọc Duy [Mon, 28 Nov 2016 09:36:53 +0000 (16:36 +0700)] 
worktree: reorder an if statement

This is no-op. But it helps reduce diff noise in the next patch.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agomerge-recursive: handle NULL in add_cacheinfo() correctly
Johannes Schindelin [Sat, 26 Nov 2016 12:48:06 +0000 (13:48 +0100)] 
merge-recursive: handle NULL in add_cacheinfo() correctly

1335d76e45 ("merge: avoid "safer crlf" during recording of merge
results", 2016-07-08) tried to split make_cache_entry() call made
with CE_MATCH_REFRESH into a call to make_cache_entry() without one,
followed by a call to add_cache_entry(), refresh_cache() and another
add_cache_entry() as needed.  However the conversion was botched in
that it forgot that refresh_cache() can return NULL, which was
handled correctly in make_cache_entry() but in the updated code.

This fixes https://github.com/git-for-windows/git/issues/952

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agocherry-pick: demonstrate a segmentation fault
Johannes Schindelin [Sat, 26 Nov 2016 12:48:02 +0000 (13:48 +0100)] 
cherry-pick: demonstrate a segmentation fault

In https://github.com/git-for-windows/git/issues/952, a complicated
scenario was described that leads to a segmentation fault in
cherry-pick.

It boils down to a certain code path involving a renamed file that is
dirty, for which `refresh_cache_entry()` returns `NULL`, and that
`NULL` not being handled properly.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agol10n: de.po: translate 210 new messages
Ralf Thielow [Wed, 2 Nov 2016 17:51:08 +0000 (18:51 +0100)] 
l10n: de.po: translate 210 new messages

Translate 210 new messages came from git.pot update in fda7b09
(l10n: git.pot: v2.11.0 round 1 (209 new, 53 removed)) and c091ffb
(l10n: git.pot: v2.11.0 round 2 (1 new, 1 removed)).

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
7 years agol10n: fix unmatched single quote in error message
Jiang Xin [Sun, 20 Nov 2016 12:26:17 +0000 (20:26 +0800)] 
l10n: fix unmatched single quote in error message

Translate one message introduced by commit:

 * 358718064b i18n: fix unmatched single quote in error message

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
7 years agoGit 2.11-rc3 v2.11.0-rc3
Junio C Hamano [Wed, 23 Nov 2016 19:24:59 +0000 (11:24 -0800)] 
Git 2.11-rc3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoMerge branch 'jc/setup-cleanup-fix'
Junio C Hamano [Wed, 23 Nov 2016 19:23:17 +0000 (11:23 -0800)] 
Merge branch 'jc/setup-cleanup-fix'

"git archive" and "git mailinfo" stopped reading from local
configuration file with a recent update.

* jc/setup-cleanup-fix:
  archive: read local configuration
  mailinfo: read local configuration

7 years agoMerge branch 'jt/trailer-with-cruft'
Junio C Hamano [Wed, 23 Nov 2016 19:23:17 +0000 (11:23 -0800)] 
Merge branch 'jt/trailer-with-cruft'

Doc update.

* jt/trailer-with-cruft:
  doc: mention user-configured trailers

7 years agoMerge branch 'js/rebase-i-commentchar-fix'
Junio C Hamano [Wed, 23 Nov 2016 19:23:17 +0000 (11:23 -0800)] 
Merge branch 'js/rebase-i-commentchar-fix'

"git rebase -i" did not work well with core.commentchar
configuration variable for two reasons, both of which have been
fixed.

* js/rebase-i-commentchar-fix:
  rebase -i: handle core.commentChar=auto
  stripspace: respect repository config
  rebase -i: highlight problems with core.commentchar

7 years agoMerge branch 'jc/for-each-ref-head-segfault-fix'
Junio C Hamano [Wed, 23 Nov 2016 19:23:16 +0000 (11:23 -0800)] 
Merge branch 'jc/for-each-ref-head-segfault-fix'

Using a %(HEAD) placeholder in "for-each-ref --format=" option
caused the command to segfault when on an unborn branch.

* jc/for-each-ref-head-segfault-fix:
  for-each-ref: do not segv with %(HEAD) on an unborn branch

7 years agoworktree.c: zero new 'struct worktree' on allocation
Nguyễn Thái Ngọc Duy [Tue, 22 Nov 2016 10:00:44 +0000 (17:00 +0700)] 
worktree.c: zero new 'struct worktree' on allocation

This keeps things a bit simpler when we add more fields, knowing that
default values are always zero.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agopush: fix --dry-run to not push submodules
Brandon Williams [Thu, 17 Nov 2016 18:46:04 +0000 (10:46 -0800)] 
push: fix --dry-run to not push submodules

Teach push to respect the --dry-run option when configured to
recursively push submodules 'on-demand'.  This is done by passing the
--dry-run flag to the child process which performs a push for a
submodules when performing a dry-run.

In order to preserve good user experience, the additional check for
unpushed submodules is skipped during a dry-run when
--recurse-submodules=on-demand.  The check is skipped because the submodule
pushes were performed as dry-runs and this check would always fail as the
submodules would still need to be pushed.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agopush: --dry-run updates submodules when --recurse-submodules=on-demand
Brandon Williams [Thu, 17 Nov 2016 18:46:03 +0000 (10:46 -0800)] 
push: --dry-run updates submodules when --recurse-submodules=on-demand

This patch adds a test to illustrate how push run with --dry-run doesn't
actually perform a dry-run when push is configured to push submodules
on-demand.  Instead all submodules which need to be pushed are actually
pushed to their remotes while any updates for the superproject are
performed as a dry-run.  This is a bug and not the intended behaviour of
a dry-run.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoMerge tag 'l10n-2.11.0-rnd2' of git://github.com/git-l10n/git-po
Junio C Hamano [Tue, 22 Nov 2016 22:16:06 +0000 (14:16 -0800)] 
Merge tag 'l10n-2.11.0-rnd2' of git://github.com/git-l10n/git-po

l10n-2.11.0-rnd2

* tag 'l10n-2.11.0-rnd2' of git://github.com/git-l10n/git-po:
  l10n: Fixed typo of git fetch-pack command
  l10n: git.pot: v2.11.0 round 2 (1 new, 1 removed)
  l10n: zh_CN: for git v2.11.0 l10n round 1
  l10n: pt_PT: update Portuguese translation
  l10n: fr.po fix grammar mistakes
  l10n: fr.po v2.11.0_rnd1
  l10n: sv.po: Update Swedish translation (2913t0f0u)
  l10n: vi.po: Updated translation to v2.11.0 (2913t)
  l10n: ko.po: Update Korean translation
  l10n: git.pot: v2.11.0 round 1 (209 new, 53 removed)
  l10n: ru.po: update Russian translation

7 years agoMerge branch 'js/prepare-sequencer'
Junio C Hamano [Tue, 22 Nov 2016 22:15:38 +0000 (14:15 -0800)] 
Merge branch 'js/prepare-sequencer'

Fix for an error message string.

* js/prepare-sequencer:
  i18n: fix unmatched single quote in error message

7 years agoarchive: read local configuration
Junio C Hamano [Tue, 22 Nov 2016 21:37:04 +0000 (13:37 -0800)] 
archive: read local configuration

Since b9605bc4f2 ("config: only read .git/config from configured
repos", 2016-09-12), we do not read from ".git/config" unless we
know we are in a repository.  "git archive" however didn't do the
repository discovery and instead relied on the old behaviour.

Teach the command to run a "gentle" version of repository discovery
so that local configuration variables are honoured.

[jc: stole tests from peff]
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agomailinfo: read local configuration
Junio C Hamano [Tue, 22 Nov 2016 21:13:16 +0000 (13:13 -0800)] 
mailinfo: read local configuration

Since b9605bc4f2 ("config: only read .git/config from configured
repos", 2016-09-12), we do not read from ".git/config" unless we
know we are in a repository.  "git mailinfo" however didn't do the
repository discovery and instead relied on the old behaviour.  This
was mostly OK because it was merely run as a helper program by other
porcelain scripts that first chdir's up to the root of the working
tree.

Teach the command to run a "gentle" version of repository discovery
so that local configuration variables like mailinfo.scissors are
honoured.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agol10n: Fixed typo of git fetch-pack command
Jiang Xin [Tue, 22 Nov 2016 14:24:59 +0000 (22:24 +0800)] 
l10n: Fixed typo of git fetch-pack command

Git 2.11.0-rc2 introduced one small l10n update, and this commit fixed
the affected translations all in one batch.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
7 years agol10n: git.pot: v2.11.0 round 2 (1 new, 1 removed)
Jiang Xin [Tue, 22 Nov 2016 14:22:59 +0000 (22:22 +0800)] 
l10n: git.pot: v2.11.0 round 2 (1 new, 1 removed)

Generate po/git.pot from v2.11.0-rc2 for git v2.11.0 l10n round 2.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
7 years agoMerge branch 'master' of git://github.com/git-l10n/git-po
Jiang Xin [Tue, 22 Nov 2016 14:08:47 +0000 (22:08 +0800)] 
Merge branch 'master' of git://github.com/git-l10n/git-po

* 'master' of git://github.com/git-l10n/git-po:
  l10n: zh_CN: for git v2.11.0 l10n round 1
  l10n: pt_PT: update Portuguese translation
  l10n: fr.po fix grammar mistakes
  l10n: fr.po v2.11.0_rnd1
  l10n: sv.po: Update Swedish translation (2913t0f0u)
  l10n: vi.po: Updated translation to v2.11.0 (2913t)
  l10n: ko.po: Update Korean translation
  l10n: git.pot: v2.11.0 round 1 (209 new, 53 removed)
  l10n: ru.po: update Russian translation

7 years agodoc: mention user-configured trailers
Jonathan Tan [Mon, 21 Nov 2016 20:47:21 +0000 (12:47 -0800)] 
doc: mention user-configured trailers

In commit 1462450 ("trailer: allow non-trailers in trailer block",
2016-10-21), functionality was added (and tested [1]) to allow
non-trailer lines in trailer blocks, as long as those blocks contain at
least one Git-generated or user-configured trailer, and consists of at
least 25% trailers. The documentation was updated to mention this new
functionality, but did not mention "user-configured trailer".

Further update the documentation to also mention "user-configured
trailer".

[1] "with non-trailer lines mixed with a configured trailer" in
t/t7513-interpret-trailers.sh

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agorebase -i: handle core.commentChar=auto
Johannes Schindelin [Mon, 21 Nov 2016 14:18:29 +0000 (15:18 +0100)] 
rebase -i: handle core.commentChar=auto

When 84c9dc2 (commit: allow core.commentChar=auto for character auto
selection, 2014-05-17) extended the core.commentChar functionality to
allow for the value 'auto', it forgot that rebase -i was already taught to
handle core.commentChar, and in turn forgot to let rebase -i handle that
new value gracefully.

Reported by Taufiq Hoven.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agostripspace: respect repository config
Johannes Schindelin [Mon, 21 Nov 2016 14:18:24 +0000 (15:18 +0100)] 
stripspace: respect repository config

The way "git stripspace" reads the configuration was not quite
kosher, in that the code forgot to probe for a possibly existing
repository (note: stripspace is designed to be usable outside the
repository as well).  It read .git/config only when it was run from
the top-level of the working tree by accident.  A recent change
b9605bc4f2 ("config: only read .git/config from configured repos",
2016-09-12) stopped reading the repository-local configuration file
".git/config" unless the repository discovery process is done, so
that .git/config is never read even when run from the top-level,
exposing the old bug more.

When rebasing interactively with a commentChar defined in the
current repository's config, the help text at the bottom of the edit
script potentially used an incorrect comment character. This was not
only funny-looking, but also resulted in tons of warnings like this
one:

Warning: the command isn't recognized in the following line
 - #

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agorebase -i: highlight problems with core.commentchar
Johannes Schindelin [Mon, 21 Nov 2016 14:18:05 +0000 (15:18 +0100)] 
rebase -i: highlight problems with core.commentchar

The interactive rebase does not currently play well with
core.commentchar. Let's add some tests to highlight those problems
that will be fixed in the remainder of the series.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoi18n: fix unmatched single quote in error message
Jiang Xin [Sun, 20 Nov 2016 12:26:17 +0000 (20:26 +0800)] 
i18n: fix unmatched single quote in error message

Fixed unmatched single quote introduced by commit:

 * f56fffef9a sequencer: teach write_message() to append an optional LF

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Acked-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agol10n: zh_CN: for git v2.11.0 l10n round 1
Jiang Xin [Thu, 27 Oct 2016 13:53:37 +0000 (21:53 +0800)] 
l10n: zh_CN: for git v2.11.0 l10n round 1

Update 209 translations (2913t0f0u) for git v2.11.0-rc0.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
7 years agofor-each-ref: do not segv with %(HEAD) on an unborn branch
Junio C Hamano [Fri, 18 Nov 2016 23:21:12 +0000 (15:21 -0800)] 
for-each-ref: do not segv with %(HEAD) on an unborn branch

The code to flip between "*" and " " prefixes depending on what
branch is checked out used in --format='%(HEAD)' did not consider
that HEAD may resolve to an unborn branch and dereferenced a NULL.

This will become a lot easier to trigger as the codepath will be
used to reimplement "git branch [--list]" in the future.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agosubmodules: allow empty working-tree dirs in merge/cherry-pick
David Turner [Mon, 7 Nov 2016 18:31:31 +0000 (13:31 -0500)] 
submodules: allow empty working-tree dirs in merge/cherry-pick

When a submodule is being merged or cherry-picked into a working
tree that already contains a corresponding empty directory, do not
record a conflict.

One situation where this bug appears is:

- Commit 1 adds a submodule
- Commit 2 removes that submodule and re-adds it into a subdirectory
       (sub1 to sub1/sub1).
- Commit 3 adds an unrelated file.

Now the user checks out commit 1 (first deinitializing the submodule),
and attempts to cherry-pick commit 3.  Previously, this would fail,
because the incoming submodule sub1/sub1 would falsely conflict with
the empty sub1 directory.

This patch ignores the empty sub1 directory, fixing the bug.  We only
ignore the empty directory if the object being emplaced is a
submodule, which expects an empty directory.

Signed-off-by: David Turner <dturner@twosigma.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoGit 2.11-rc2 v2.11.0-rc2
Junio C Hamano [Thu, 17 Nov 2016 21:47:36 +0000 (13:47 -0800)] 
Git 2.11-rc2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoMerge branch 'tk/diffcore-delta-remove-unused'
Junio C Hamano [Thu, 17 Nov 2016 21:45:22 +0000 (13:45 -0800)] 
Merge branch 'tk/diffcore-delta-remove-unused'

Code cleanup.

* tk/diffcore-delta-remove-unused:
  diffcore-delta: remove unused parameter to diffcore_count_changes()

7 years agoMerge branch 'jk/create-branch-remove-unused-param'
Junio C Hamano [Thu, 17 Nov 2016 21:45:21 +0000 (13:45 -0800)] 
Merge branch 'jk/create-branch-remove-unused-param'

Code clean-up.

* jk/create-branch-remove-unused-param:
  create_branch: drop unused "head" parameter

7 years agoMerge branch 'nd/worktree-lock'
Junio C Hamano [Thu, 17 Nov 2016 21:45:21 +0000 (13:45 -0800)] 
Merge branch 'nd/worktree-lock'

Typofix.

* nd/worktree-lock:
  git-worktree.txt: fix typo "to"/"two", and add comma

7 years agosubmodule_needs_pushing(): explain the behaviour when we cannot answer
Heiko Voigt [Wed, 16 Nov 2016 15:11:07 +0000 (16:11 +0100)] 
submodule_needs_pushing(): explain the behaviour when we cannot answer

When we do not have commits that are involved in the update of the
superproject in our copy of submodule, we cannot tell if the remote
end needs to acquire these commits to be able to check out the
superproject tree.  Explain why we answer "no there is no need/point
in pushing from our submodule repository" in this case.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agobatch check whether submodule needs pushing into one call
Heiko Voigt [Wed, 16 Nov 2016 15:11:06 +0000 (16:11 +0100)] 
batch check whether submodule needs pushing into one call

We run a command for each sha1 change in a submodule. This is
unnecessary since we can simply batch all sha1's we want to check into
one command. Lets do it so we can speedup the check when many submodule
changes are in need of checking.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoserialize collection of refs that contain submodule changes
Heiko Voigt [Wed, 16 Nov 2016 15:11:05 +0000 (16:11 +0100)] 
serialize collection of refs that contain submodule changes

We are iterating over each pushed ref and want to check whether it
contains changes to submodules. Instead of immediately checking each ref
lets first collect them and then do the check for all of them in one
revision walk.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoserialize collection of changed submodules
Heiko Voigt [Wed, 16 Nov 2016 15:11:04 +0000 (16:11 +0100)] 
serialize collection of changed submodules

To check whether a submodule needs to be pushed we need to collect all
changed submodules. Lets collect them first and then execute the
possibly expensive test whether certain revisions are already pushed
only once per submodule.

There is further potential for optimization since we can assemble one
command and only issued that instead of one call for each remote ref in
the submodule.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agorev-parse: fix parent shorthands with --symbolic
Jeff King [Wed, 16 Nov 2016 08:46:26 +0000 (00:46 -0800)] 
rev-parse: fix parent shorthands with --symbolic

The try_parent_shorthands() function shows each parent via
show_rev(). We pass the correct parent sha1, but our "name"
parameter still points at the original refname. So asking
for a regular rev-parse works fine (it prints the sha1s),
but asking for the symbolic name gives nonsense like:

    $ git rev-parse --symbolic HEAD^-1
    HEAD
    ^HEAD

which is always an empty set of commits. Asking for "^!" is
likewise broken, with the added bonus that its prints ^HEAD
for _each_ parent. And "^@" just prints HEAD repeatedly.

Arguably it would be correct to just pass NULL as the name
here, and always get the parent expressed as a sha1. The
"--symbolic" documentaton claims only "as close to the
original input as possible", and we certainly fallback to
sha1s where necessary. But it's pretty easy to generate a
symbolic name on the fly from the original.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agodiffcore-delta: remove unused parameter to diffcore_count_changes()
Tobias Klauser [Mon, 14 Nov 2016 13:39:05 +0000 (14:39 +0100)] 
diffcore-delta: remove unused parameter to diffcore_count_changes()

The delta_limit parameter to diffcore_count_changes() has been unused
since commit ba23bbc8e ("diffcore-delta: make change counter to byte
oriented again.", 2006-03-04).

Remove the parameter and adjust all callers.

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agogit-worktree.txt: fix typo "to"/"two", and add comma
Ben North [Sat, 12 Nov 2016 08:55:16 +0000 (08:55 +0000)] 
git-worktree.txt: fix typo "to"/"two", and add comma

Signed-off-by: Ben North <ben@redfrontdoor.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agol10n: pt_PT: update Portuguese translation
Vasco Almeida [Sun, 6 Nov 2016 13:04:01 +0000 (12:04 -0100)] 
l10n: pt_PT: update Portuguese translation

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>