git/git.git
4 years agoattr: change validity check for attribute names to use positive logic
Junio C Hamano [Sat, 28 Jan 2017 02:02:00 +0000 (18:02 -0800)]
attr: change validity check for attribute names to use positive logic

Convert 'invalid_attr_name()' to 'attr_name_valid()' and use positive
logic for the return value.  In addition create a helper function that
prints out an error message when an invalid attribute name is used.

We could later update the message to exactly spell out what the
rules for a good attribute name are, etc.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoattr: pass struct attr_check to collect_some_attrs
Brandon Williams [Sat, 28 Jan 2017 02:01:59 +0000 (18:01 -0800)]
attr: pass struct attr_check to collect_some_attrs

The old callchain used to take an array of attr_check_item items.
Instead pass the 'attr_check' container object to 'collect_some_attrs()'
and access the fields in the data structure directly.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoattr: retire git_check_attrs() API
Junio C Hamano [Sat, 28 Jan 2017 02:01:58 +0000 (18:01 -0800)]
attr: retire git_check_attrs() API

Since nobody uses the old API, make it file-scope static, and update
the documentation to describe the new API.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoattr: convert git_check_attrs() callers to use the new API
Junio C Hamano [Sat, 28 Jan 2017 02:01:57 +0000 (18:01 -0800)]
attr: convert git_check_attrs() callers to use the new API

The remaining callers are all simple "I have N attributes I am
interested in.  I'll ask about them with various paths one by one".

After this step, no caller to git_check_attrs() remains.  After
removing it, we can extend "struct attr_check" struct with data
that can be used in optimizing the query for the specific N
attributes it contains.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoattr: convert git_all_attrs() to use "struct attr_check"
Junio C Hamano [Mon, 30 Jan 2017 18:06:08 +0000 (10:06 -0800)]
attr: convert git_all_attrs() to use "struct attr_check"

This updates the other two ways the attribute check is done via an
array of "struct attr_check_item" elements.  These two niches
appear only in "git check-attr".

 * The caller does not know offhand what attributes it wants to ask
   about and cannot use attr_check_initl() to prepare the
   attr_check structure.

 * The caller may not know what attributes it wants to ask at all,
   and instead wants to learn everything that the given path has.

Such a caller can call attr_check_alloc() to allocate an empty
attr_check, and then call attr_check_append() to add attribute names
one by one.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoattr: (re)introduce git_check_attr() and struct attr_check
Junio C Hamano [Mon, 30 Jan 2017 18:05:20 +0000 (10:05 -0800)]
attr: (re)introduce git_check_attr() and struct attr_check

A common pattern to check N attributes for many paths is to

 (1) prepare an array A of N attr_check_item items;
 (2) call git_attr() to intern the N attribute names and fill A;
 (3) repeatedly call git_check_attrs() for path with N and A;

A look-up for these N attributes for a single path P scans the
entire attr_stack, starting from the .git/info/attributes file and
then .gitattributes file in the directory the path P is in, going
upwards to find .gitattributes file found in parent directories.

An earlier commit 06a604e6 (attr: avoid heavy work when we know the
specified attr is not defined, 2014-12-28) tried to optimize out
this scanning for one trivial special case: when the attribute being
sought is known not to exist, we do not have to scan for it.  While
this may be a cheap and effective heuristic, it would not work well
when N is (much) more than 1.

What we would want is a more customized way to skip irrelevant
entries in the attribute stack, and the definition of irrelevance
is tied to the set of attributes passed to git_check_attrs() call,
i.e. the set of attributes being sought.  The data necessary for
this optimization needs to live alongside the set of attributes, but
a simple array of git_attr_check_elem simply does not have any place
for that.

Introduce "struct attr_check" that contains N, the number of
attributes being sought, and A, the array that holds N
attr_check_item items, and a function git_check_attr() that
takes a path P and this structure as its parameters.  This structure
can later be extended to hold extra data necessary for optimization.

Also, to make it easier to write the first two steps in common
cases, introduce git_attr_check_initl() helper function, which takes
a NULL-terminated list of attribute names and initialize this
structure.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoattr: rename function and struct related to checking attributes
Junio C Hamano [Sat, 28 Jan 2017 02:01:54 +0000 (18:01 -0800)]
attr: rename function and struct related to checking attributes

The traditional API to check attributes is to prepare an N-element
array of "struct git_attr_check" and pass N and the array to the
function "git_check_attr()" as arguments.

In preparation to revamp the API to pass a single structure, in
which these N elements are held, rename the type used for these
individual array elements to "struct attr_check_item" and rename
the function to "git_check_attrs()".

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoattr.c: outline the future plans by heavily commenting
Junio C Hamano [Sat, 28 Jan 2017 02:01:53 +0000 (18:01 -0800)]
attr.c: outline the future plans by heavily commenting

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoDocumentation: fix a typo
Stefan Beller [Sat, 28 Jan 2017 02:01:52 +0000 (18:01 -0800)]
Documentation: fix a typo

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoattr.c: add push_stack() helper
Junio C Hamano [Sat, 28 Jan 2017 02:01:51 +0000 (18:01 -0800)]
attr.c: add push_stack() helper

There are too many repetitious "I have this new attr_stack element;
push it at the top of the stack" sequence.  The new helper function
push_stack() gives us a way to express what is going on at these
places, and as a side effect, halves the number of times we mention
the attr_stack global variable.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoattr: support quoting pathname patterns in C style
Nguyễn Thái Ngọc Duy [Sat, 28 Jan 2017 02:01:50 +0000 (18:01 -0800)]
attr: support quoting pathname patterns in C style

Full pattern must be quoted. So 'pat"t"ern attr' will give exactly
'pat"t"ern', not 'pattern'. Also clarify that leading whitespaces are
not part of the pattern and document comment syntax.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoattr.c: plug small leak in parse_attr_line()
Junio C Hamano [Sat, 28 Jan 2017 02:01:49 +0000 (18:01 -0800)]
attr.c: plug small leak in parse_attr_line()

If any error is noticed after the match_attr structure is allocated,
we shouldn't just return NULL from this function.

Add a fail_return label that frees the allocated structure and
returns NULL, and consistently jump there when we want to return
NULL after cleaning up.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoattr.c: tighten constness around "git_attr" structure
Junio C Hamano [Sat, 28 Jan 2017 02:01:48 +0000 (18:01 -0800)]
attr.c: tighten constness around "git_attr" structure

It holds an interned string, and git_attr_name() is a way to peek
into it.  Make sure the involved pointer types are pointer-to-const.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoattr.c: simplify macroexpand_one()
Junio C Hamano [Sat, 28 Jan 2017 02:01:47 +0000 (18:01 -0800)]
attr.c: simplify macroexpand_one()

The double-loop wants to do an early return immediately when one
matching macro is found.  Eliminate the extra variable 'a' used for
that purpose and rewrite the "assign the found item to 'a' to make
it non-NULL and force the loop(s) to terminate" with a direct return
from there.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoattr.c: mark where #if DEBUG ends more clearly
Junio C Hamano [Sat, 28 Jan 2017 02:01:46 +0000 (18:01 -0800)]
attr.c: mark where #if DEBUG ends more clearly

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoattr.c: complete a sentence in a comment
Junio C Hamano [Sat, 28 Jan 2017 02:01:45 +0000 (18:01 -0800)]
attr.c: complete a sentence in a comment

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoattr.c: explain the lack of attr-name syntax check in parse_attr()
Junio C Hamano [Sat, 28 Jan 2017 02:01:44 +0000 (18:01 -0800)]
attr.c: explain the lack of attr-name syntax check in parse_attr()

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoattr.c: update a stale comment on "struct match_attr"
Junio C Hamano [Sat, 28 Jan 2017 02:01:43 +0000 (18:01 -0800)]
attr.c: update a stale comment on "struct match_attr"

When 82dce998 (attr: more matching optimizations from .gitignore,
2012-10-15) changed a pointer to a string "*pattern" into an
embedded "struct pattern" in struct match_attr, it forgot to update
the comment that describes the structure.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoattr.c: use strchrnul() to scan for one line
Junio C Hamano [Sat, 28 Jan 2017 02:01:42 +0000 (18:01 -0800)]
attr.c: use strchrnul() to scan for one line

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agocommit.c: use strchrnul() to scan for one line
Junio C Hamano [Sat, 28 Jan 2017 02:01:41 +0000 (18:01 -0800)]
commit.c: use strchrnul() to scan for one line

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoFifth batch 2.12
Junio C Hamano [Tue, 10 Jan 2017 23:25:46 +0000 (15:25 -0800)]
Fifth batch 2.12

Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoMerge branch 'sb/submodule-embed-gitdir'
Junio C Hamano [Tue, 10 Jan 2017 23:24:27 +0000 (15:24 -0800)]
Merge branch 'sb/submodule-embed-gitdir'

A new submodule helper "git submodule embedgitdirs" to make it
easier to move embedded .git/ directory for submodules in a
superproject to .git/modules/ (and point the latter with the former
that is turned into a "gitdir:" file) has been added.

* sb/submodule-embed-gitdir:
  worktree: initialize return value for submodule_uses_worktrees
  submodule: add absorb-git-dir function
  move connect_work_tree_and_git_dir to dir.h
  worktree: check if a submodule uses worktrees
  test-lib-functions.sh: teach test_commit -C <dir>
  submodule helper: support super prefix
  submodule: use absolute path for computing relative path connecting

4 years agoMerge branch 'jc/retire-compaction-heuristics'
Junio C Hamano [Tue, 10 Jan 2017 23:24:27 +0000 (15:24 -0800)]
Merge branch 'jc/retire-compaction-heuristics'

"git diff" and its family had two experimental heuristics to shift
the contents of a hunk to make the patch easier to read.  One of
them turns out to be better than the other, so leave only the
"--indent-heuristic" option and remove the other one.

* jc/retire-compaction-heuristics:
  diff: retire "compaction" heuristics

4 years agoMerge branch 'nd/config-misc-fixes'
Junio C Hamano [Tue, 10 Jan 2017 23:24:27 +0000 (15:24 -0800)]
Merge branch 'nd/config-misc-fixes'

Leakage of lockfiles in the config subsystem has been fixed.

* nd/config-misc-fixes:
  config.c: handle lock file in error case in git_config_rename_...
  config.c: rename label unlock_and_out
  config.c: handle error case for fstat() calls

4 years agoMerge branch 'jc/abbrev-autoscale-config'
Junio C Hamano [Tue, 10 Jan 2017 23:24:26 +0000 (15:24 -0800)]
Merge branch 'jc/abbrev-autoscale-config'

Recent update to the default abbreviation length that auto-scales
lacked documentation update, which has been corrected.

* jc/abbrev-autoscale-config:
  config.abbrev: document the new default that auto-scales

4 years agoMerge branch 'mh/fast-import-notes-fix-new'
Junio C Hamano [Tue, 10 Jan 2017 23:24:26 +0000 (15:24 -0800)]
Merge branch 'mh/fast-import-notes-fix-new'

"git fast-import" sometimes mishandled while rebalancing notes
tree, which has been fixed.

* mh/fast-import-notes-fix-new:
  fast-import: properly fanout notes when tree is imported

4 years agoMerge branch 'jc/git-open-cloexec'
Junio C Hamano [Tue, 10 Jan 2017 23:24:26 +0000 (15:24 -0800)]
Merge branch 'jc/git-open-cloexec'

The codeflow of setting NOATIME and CLOEXEC on file descriptors Git
opens has been simplified.
We may want to drop the tip one, but we'll see.

* jc/git-open-cloexec:
  sha1_file: stop opening files with O_NOATIME
  git_open_cloexec(): use fcntl(2) w/ FD_CLOEXEC fallback
  git_open(): untangle possible NOATIME and CLOEXEC interactions

4 years agoMerge branch 'jc/compression-config'
Junio C Hamano [Tue, 10 Jan 2017 23:24:25 +0000 (15:24 -0800)]
Merge branch 'jc/compression-config'

Compression setting for producing packfiles were spread across
three codepaths, one of which did not honor any configuration.
Unify these so that all of them honor core.compression and
pack.compression variables the same way.

* jc/compression-config:
  compression: unify pack.compression configuration parsing

4 years agoMerge branch 'dt/smart-http-detect-server-going-away'
Junio C Hamano [Tue, 10 Jan 2017 23:24:25 +0000 (15:24 -0800)]
Merge branch 'dt/smart-http-detect-server-going-away'

When the http server gives an incomplete response to a smart-http
rpc call, it could lead to client waiting for a full response that
will never come.  Teach the client side to notice this condition
and abort the transfer.

An improvement counterproposal has failed.
cf. <20161114194049.mktpsvgdhex2f4zv@sigill.intra.peff.net>

* dt/smart-http-detect-server-going-away:
  upload-pack: optionally allow fetching any sha1
  remote-curl: don't hang when a server dies before any output

4 years agoMerge branch 'mm/gc-safety-doc'
Junio C Hamano [Tue, 10 Jan 2017 23:24:25 +0000 (15:24 -0800)]
Merge branch 'mm/gc-safety-doc'

Doc update.

* mm/gc-safety-doc:
  git-gc.txt: expand discussion of races with other processes

4 years agoMerge branch 'mm/push-social-engineering-attack-doc'
Junio C Hamano [Tue, 10 Jan 2017 23:24:24 +0000 (15:24 -0800)]
Merge branch 'mm/push-social-engineering-attack-doc'

Doc update on fetching and pushing.

* mm/push-social-engineering-attack-doc:
  doc: mention transfer data leaks in more places

4 years agoMerge branch 'jt/fetch-no-redundant-tag-fetch-map'
Junio C Hamano [Tue, 10 Jan 2017 23:24:23 +0000 (15:24 -0800)]
Merge branch 'jt/fetch-no-redundant-tag-fetch-map'

Code cleanup to avoid using redundant refspecs while fetching with
the --tags option.

* jt/fetch-no-redundant-tag-fetch-map:
  fetch: do not redundantly calculate tag refmap

4 years agoMerge branch 'jc/latin-1'
Junio C Hamano [Tue, 10 Jan 2017 23:24:22 +0000 (15:24 -0800)]
Merge branch 'jc/latin-1'

Some platforms no longer understand "latin-1" that is still seen in
the wild in e-mail headers; replace them with "iso-8859-1" that is
more widely known when conversion fails from/to it.

* jc/latin-1:
  utf8: accept "latin-1" as ISO-8859-1
  utf8: refactor code to decide fallback encoding

4 years agoworktree: initialize return value for submodule_uses_worktrees
Stefan Beller [Tue, 27 Dec 2016 17:50:13 +0000 (09:50 -0800)]
worktree: initialize return value for submodule_uses_worktrees

When the worktrees directory is empty, the `ret` will be returned
uninitialized. Fix it by initializing the value.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoFourth batch for 2.12
Junio C Hamano [Tue, 27 Dec 2016 17:17:51 +0000 (09:17 -0800)]
Fourth batch for 2.12

Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoMerge branch 'jc/lock-report-on-error'
Junio C Hamano [Tue, 27 Dec 2016 17:17:32 +0000 (09:17 -0800)]
Merge branch 'jc/lock-report-on-error'

* jc/lock-report-on-error:
  lockfile: move REPORT_ON_ERROR bit elsewhere

4 years agolockfile: move REPORT_ON_ERROR bit elsewhere
Junio C Hamano [Tue, 27 Dec 2016 17:12:09 +0000 (09:12 -0800)]
lockfile: move REPORT_ON_ERROR bit elsewhere

There was LOCK_NO_DEREF defined as 2 = 1<<1 with the same value,
which was missed due to a huge comment block.  Deconflict by moving
the new one to 4 = 1<<2 for now.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoMerge branch 'js/mingw-isatty'
Junio C Hamano [Tue, 27 Dec 2016 08:11:46 +0000 (00:11 -0800)]
Merge branch 'js/mingw-isatty'

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

4 years agoMerge branch 'ls/p4-lfs'
Junio C Hamano [Tue, 27 Dec 2016 08:11:46 +0000 (00:11 -0800)]
Merge branch 'ls/p4-lfs'

Update GitLFS integration with "git p4".

* ls/p4-lfs:
  git-p4: add diff/merge properties to .gitattributes for GitLFS files

4 years agoMerge branch 'va/i18n-even-more'
Junio C Hamano [Tue, 27 Dec 2016 08:11:45 +0000 (00:11 -0800)]
Merge branch 'va/i18n-even-more'

* va/i18n-even-more:
  i18n: fix misconversion in shell scripts

4 years agoMerge branch 'lt/shortlog-by-committer'
Junio C Hamano [Tue, 27 Dec 2016 08:11:44 +0000 (00:11 -0800)]
Merge branch 'lt/shortlog-by-committer'

"git shortlog" learned "--committer" option to group commits by
committer, instead of author.

* lt/shortlog-by-committer:
  t4201: make tests work with and without the MINGW prerequiste
  shortlog: test and document --committer option
  shortlog: group by committer information

4 years agoMerge branch 'mk/mingw-winansi-ttyname-termination-fix'
Junio C Hamano [Tue, 27 Dec 2016 08:11:44 +0000 (00:11 -0800)]
Merge branch 'mk/mingw-winansi-ttyname-termination-fix'

A potential but unlikely buffer overflow in Windows port has been
fixed.

* mk/mingw-winansi-ttyname-termination-fix:
  mingw: consider that UNICODE_STRING::Length counts bytes

4 years agoMerge branch 'gv/p4-multi-path-commit-fix'
Junio C Hamano [Tue, 27 Dec 2016 08:11:43 +0000 (00:11 -0800)]
Merge branch 'gv/p4-multi-path-commit-fix'

"git p4" that tracks multile p4 paths imported a single changelist
that touches files in these multiple paths as one commit, followed
by many empty commits.  This has been fixed.

* gv/p4-multi-path-commit-fix:
  git-p4: fix multi-path changelist empty commits

4 years agoMerge branch 'jk/difftool-in-subdir'
Junio C Hamano [Tue, 27 Dec 2016 08:11:43 +0000 (00:11 -0800)]
Merge branch 'jk/difftool-in-subdir'

Even though an fix was attempted in Git 2.9.3 days, but running
"git difftool --dir-diff" from a subdirectory never worked. This
has been fixed.

* jk/difftool-in-subdir:
  difftool: rename variables for consistency
  difftool: chdir as early as possible
  difftool: sanitize $workdir as early as possible
  difftool: fix dir-diff index creation when in a subdirectory

4 years agoMerge branch 'ld/p4-compare-dir-vs-symlink'
Junio C Hamano [Tue, 27 Dec 2016 08:11:42 +0000 (00:11 -0800)]
Merge branch 'ld/p4-compare-dir-vs-symlink'

"git p4" misbehaved when swapping a directory and a symbolic link.

* ld/p4-compare-dir-vs-symlink:
  git-p4: avoid crash adding symlinked directory

4 years agoMerge branch 'ls/filter-process'
Junio C Hamano [Tue, 27 Dec 2016 08:11:42 +0000 (00:11 -0800)]
Merge branch 'ls/filter-process'

Doc update.

* ls/filter-process:
  t0021: fix flaky test
  docs: warn about possible '=' in clean/smudge filter process values

4 years agoMerge branch 'bw/transport-protocol-policy'
Junio C Hamano [Tue, 27 Dec 2016 08:11:41 +0000 (00:11 -0800)]
Merge branch 'bw/transport-protocol-policy'

Finer-grained control of what protocols are allowed for transports
during clone/fetch/push have been enabled via a new configuration
mechanism.

* bw/transport-protocol-policy:
  http: respect protocol.*.allow=user for http-alternates
  transport: add from_user parameter to is_transport_allowed
  http: create function to get curl allowed protocols
  transport: add protocol policy config option
  http: always warn if libcurl version is too old
  lib-proto-disable: variable name fix

4 years agoMerge branch 'cp/merge-continue'
Junio C Hamano [Tue, 27 Dec 2016 08:11:41 +0000 (00:11 -0800)]
Merge branch 'cp/merge-continue'

"git merge --continue" has been added as a synonym to "git commit"
to conclude a merge that has stopped due to conflicts.

* cp/merge-continue:
  merge: mark usage error strings for translation
  merge: ensure '--abort' option takes no arguments
  completion: add --continue option for merge
  merge: add '--continue' option as a synonym for 'git commit'

4 years agoMerge branch 'va/i18n-perl-scripts'
Junio C Hamano [Tue, 27 Dec 2016 08:11:40 +0000 (00:11 -0800)]
Merge branch 'va/i18n-perl-scripts'

Porcelain scripts written in Perl are getting internationalized.

* va/i18n-perl-scripts:
  i18n: difftool: mark warnings for translation
  i18n: send-email: mark composing message for translation
  i18n: send-email: mark string with interpolation for translation
  i18n: send-email: mark warnings and errors for translation
  i18n: send-email: mark strings for translation
  i18n: add--interactive: mark status words for translation
  i18n: add--interactive: remove %patch_modes entries
  i18n: add--interactive: mark edit_hunk_manually message for translation
  i18n: add--interactive: i18n of help_patch_cmd
  i18n: add--interactive: mark patch prompt for translation
  i18n: add--interactive: mark plural strings
  i18n: clean.c: match string with git-add--interactive.perl
  i18n: add--interactive: mark strings with interpolation for translation
  i18n: add--interactive: mark simple here-documents for translation
  i18n: add--interactive: mark strings for translation
  Git.pm: add subroutines for commenting lines

4 years agoMerge branch 'sb/submodule-config-cleanup'
Junio C Hamano [Tue, 27 Dec 2016 08:11:40 +0000 (00:11 -0800)]
Merge branch 'sb/submodule-config-cleanup'

Minor code clean-up.

* sb/submodule-config-cleanup:
  submodule-config: clarify parsing of null_sha1 element
  submodule-config: rename commit_sha1 to treeish_name
  submodule config: inline config_from_{name, path}

4 years agoMerge branch 'jc/push-default-explicit'
Junio C Hamano [Tue, 27 Dec 2016 08:11:40 +0000 (00:11 -0800)]
Merge branch 'jc/push-default-explicit'

A lazy "git push" without refspec did not internally use a fully
specified refspec to perform 'current', 'simple', or 'upstream'
push, causing unnecessary "ambiguous ref" errors.

* jc/push-default-explicit:
  push: test pushing ambiguously named branches
  push: do not use potentially ambiguous default refspec

4 years agodiff: retire "compaction" heuristics
Junio C Hamano [Fri, 23 Dec 2016 20:32:22 +0000 (12:32 -0800)]
diff: retire "compaction" heuristics

When a patch inserts a block of lines, whose last lines are the
same as the existing lines that appear before the inserted block,
"git diff" can choose any place between these existing lines as the
boundary between the pre-context and the added lines (adjusting the
end of the inserted block as appropriate) to come up with variants
of the same patch, and some variants are easier to read than others.

We have been trying to improve the choice of this boundary, and Git
2.11 shipped with an experimental "compaction-heuristic".  Since
then another attempt to improve the logic further resulted in a new
"indent-heuristic" logic.  It is agreed that the latter gives better
result overall, and the former outlived its usefulness.

Retire "compaction", and keep "indent" as an experimental feature.
The latter hopefully will be turned on by default in a future
release, but that should be done as a separate step.

Suggested-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoconfig.abbrev: document the new default that auto-scales
Junio C Hamano [Wed, 2 Nov 2016 01:34:07 +0000 (18:34 -0700)]
config.abbrev: document the new default that auto-scales

We somehow forgot to update the "default is 7" in the
documentation.  Also give a way to explicitly ask the auto-scaling
by setting config.abbrev to "auto".

Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoconfig.c: handle lock file in error case in git_config_rename_...
Nguyễn Thái Ngọc Duy [Tue, 20 Dec 2016 09:48:36 +0000 (16:48 +0700)]
config.c: handle lock file in error case in git_config_rename_...

We could rely on atexit() to clean up everything, but let's be
explicit when we can. And it's good anyway because the function is
called the second time in the same process, we're in trouble.

This function should not affect the successful case because after
commit_lock_file() is called, rollback_lock_file() becomes no-op,
as long as it is initialized.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 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>
4 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>
4 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>
4 years agoThird batch for 2.12
Junio C Hamano [Wed, 21 Dec 2016 22:57:26 +0000 (14:57 -0800)]
Third batch for 2.12

Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoMerge branch 'jt/mailinfo-fold-in-body-headers'
Junio C Hamano [Wed, 21 Dec 2016 22:55:03 +0000 (14:55 -0800)]
Merge branch 'jt/mailinfo-fold-in-body-headers'

Fix for NDEBUG builds.

* jt/mailinfo-fold-in-body-headers:
  mailinfo.c: move side-effects outside of assert

4 years agoMerge branch 'jk/index-pack-wo-repo-from-stdin'
Junio C Hamano [Wed, 21 Dec 2016 22:55:03 +0000 (14:55 -0800)]
Merge branch 'jk/index-pack-wo-repo-from-stdin'

"git index-pack --stdin" needs an access to an existing repository,
but "git index-pack file.pack" to generate an .idx file that
corresponds to a packfile does not.

* jk/index-pack-wo-repo-from-stdin:
  index-pack: skip collision check when not in repository
  t: use nongit() function where applicable
  index-pack: complain when --stdin is used outside of a repo
  t5000: extract nongit function to test-lib-functions.sh

4 years agoMerge branch 'jk/parseopt-usage-msg-opt'
Junio C Hamano [Wed, 21 Dec 2016 22:55:03 +0000 (14:55 -0800)]
Merge branch 'jk/parseopt-usage-msg-opt'

The function usage_msg_opt() has been updated to say "fatal:"
before the custom message programs give, when they want to die
with a message about wrong command line options followed by the
standard usage string.

* jk/parseopt-usage-msg-opt:
  parse-options: print "fatal:" before usage_msg_opt()

4 years agoMerge branch 'jk/quote-env-path-list-component'
Junio C Hamano [Wed, 21 Dec 2016 22:55:02 +0000 (14:55 -0800)]
Merge branch 'jk/quote-env-path-list-component'

A recent update to receive-pack to make it easier to drop garbage
objects made it clear that GIT_ALTERNATE_OBJECT_DIRECTORIES cannot
have a pathname with a colon in it (no surprise!), and this in turn
made it impossible to push into a repository at such a path.  This
has been fixed by introducing a quoting mechanism used when
appending such a path to the colon-separated list.

* jk/quote-env-path-list-component:
  t5615-alternate-env: double-quotes in file names do not work on Windows
  t5547-push-quarantine: run the path separator test on Windows, too
  tmp-objdir: quote paths we add to alternates
  alternates: accept double-quoted paths

4 years agoMerge branch 'vs/submodule-clone-nested-submodules-alternates'
Junio C Hamano [Wed, 21 Dec 2016 22:55:02 +0000 (14:55 -0800)]
Merge branch 'vs/submodule-clone-nested-submodules-alternates'

"git clone --reference $there --recurse-submodules $super" has been
taught to guess repositories usable as references for submodules of
$super that are embedded in $there while making a clone of the
superproject borrow objects from $there; extend the mechanism to
also allow submodules of these submodules to borrow repositories
embedded in these clones of the submodules embedded in the clone of
the superproject.

* vs/submodule-clone-nested-submodules-alternates:
  submodule--helper: set alternateLocation for cloned submodules

4 years agoMerge branch 'nd/shallow-fixup'
Junio C Hamano [Wed, 21 Dec 2016 22:55:01 +0000 (14:55 -0800)]
Merge branch 'nd/shallow-fixup'

Code cleanup in shallow boundary computation.

* nd/shallow-fixup:
  shallow.c: remove useless code
  shallow.c: bit manipulation tweaks
  shallow.c: avoid theoretical pointer wrap-around
  shallow.c: make paint_alloc slightly more robust
  shallow.c: stop abusing COMMIT_SLAB_SIZE for paint_info's memory pools
  shallow.c: rename fields in paint_info to better express their purposes

4 years agoMerge branch 'sb/sequencer-abort-safety'
Junio C Hamano [Wed, 21 Dec 2016 22:55:01 +0000 (14:55 -0800)]
Merge branch 'sb/sequencer-abort-safety'

Unlike "git am --abort", "git cherry-pick --abort" moved HEAD back
to where cherry-pick started while picking multiple changes, when
the cherry-pick stopped to ask for help from the user, and the user
did "git reset --hard" to a different commit in order to re-attempt
the operation.

* sb/sequencer-abort-safety:
  Revert "sequencer: remove useless get_dir() function"
  sequencer: remove useless get_dir() function
  sequencer: make sequencer abort safer
  t3510: test that cherry-pick --abort does not unsafely change HEAD
  am: change safe_to_abort()'s not rewinding error into a warning
  am: fix filename in safe_to_abort() error message

4 years agot5615-alternate-env: double-quotes in file names do not work on Windows
Johannes Sixt [Wed, 21 Dec 2016 21:33:43 +0000 (22:33 +0100)]
t5615-alternate-env: double-quotes in file names do not work on Windows

Protect a recently added test case with !MINGW.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agofast-import: properly fanout notes when tree is imported
Mike Hommey [Tue, 20 Dec 2016 21:04:48 +0000 (06:04 +0900)]
fast-import: properly fanout notes when tree is imported

In typical uses of fast-import, trees are inherited from a parent
commit. In that case, the tree_entry for the branch looks like:

  .versions[1].sha1 = $some_sha1
  .tree = <tree structure loaded from $some_sha1>

However, when trees are imported, rather than inherited, that is not the
case. One can import a tree with a filemodify command, replacing the
root tree object.

e.g.
  "M 040000 $some_sha1 \n"

In this case, the tree_entry for the branch looks like:

  .versions[1].sha1 = $some_sha1
  .tree = NULL

When adding new notes with the notemodify command, do_change_note_fanout
is called to get a notes count, and to do so, it loops over the
tree_entry->tree, but doesn't do anything when the tree is NULL.

In the latter case above, it means do_change_note_fanout thinks the tree
contains no notes, and new notes are added with no fanout.

Interestingly, do_change_note_fanout does check whether subdirectories
have a NULL .tree, in which case it uses load_tree(). Which means the
right behaviour happens when using the filemodify command to import
subdirectories.

This change makes do_change_note_fanount call load_tree() whenever the
tree_entry it is given has no tree loaded, making all cases handled
equally.

Signed-off-by: Mike Hommey <mh@glandium.org>
Reviewed-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agot4201: make tests work with and without the MINGW prerequiste
Junio C Hamano [Tue, 20 Dec 2016 18:35:54 +0000 (10:35 -0800)]
t4201: make tests work with and without the MINGW prerequiste

Make sure the tests do not depend on the result of the previous
tests.  With MINGW prerequisite satisfied, a "reset to original and
rebuild" in an earlier test was skipped, resulting in different
history being tested with this and the next tests.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoconfig.c: rename label unlock_and_out
Nguyễn Thái Ngọc Duy [Tue, 20 Dec 2016 09:48:35 +0000 (16:48 +0700)]
config.c: rename label unlock_and_out

There are two ways to unlock a file: commit, or revert. Rename it to
commit_and_out to avoid confusion.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoconfig.c: handle error case for fstat() calls
Nguyễn Thái Ngọc Duy [Mon, 19 Dec 2016 09:21:55 +0000 (16:21 +0700)]
config.c: handle error case for fstat() calls

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agogit-p4: add diff/merge properties to .gitattributes for GitLFS files
Lars Schneider [Sun, 18 Dec 2016 19:01:40 +0000 (20:01 +0100)]
git-p4: add diff/merge properties to .gitattributes for GitLFS files

The `git lfs track` command generates a .gitattributes file with diff
and merge properties [1]. Set the same .gitattributes format for files
tracked with GitLFS in git-p4.

[1] https://github.com/git-lfs/git-lfs/blob/v1.5.3/commands/command_track.go#L121

Signed-off-by: Lars Schneider <larsxschneider@gmail.com>
Reviewed-by: Luke Diamand <luke@diamand.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoi18n: fix misconversion in shell scripts
Junio C Hamano [Tue, 20 Dec 2016 17:36:23 +0000 (09:36 -0800)]
i18n: fix misconversion in shell scripts

An earlier series that was merged at 2703572b3a ("Merge branch
'va/i18n-even-more'", 2016-07-13) failed to use $(eval_gettext
"string with \$variable interpolation") and instead used gettext in
a few places, and ended up showing the variable names in the
message, e.g.

    $ git submodule
    fatal: $program_name cannot be used without a working tree.

Catch these mistakes with

    $ git grep -n '[^_]gettext .*\\\$'

and fix them all to use eval_gettext instead.

Reported-by: Josh Bleecher Snyder
Acked-by: Vasco Almeida <vascomalmeida@sapo.pt>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agomailinfo.c: move side-effects outside of assert
Kyle J. McKay [Mon, 19 Dec 2016 23:13:00 +0000 (15:13 -0800)]
mailinfo.c: move side-effects outside of assert

Since 6b4b013f18 (mailinfo: handle in-body header continuations,
2016-09-20, v2.11.0) mailinfo.c has contained new code with an
assert of the form:

assert(call_a_function(...))

The function in question, check_header, has side effects.  This
means that when NDEBUG is defined during a release build the
function call is omitted entirely, the side effects do not
take place and tests (fortunately) start failing.

Since the only time that mi->inbody_header_accum is appended to is
in check_inbody_header, and appending onto a blank
mi->inbody_header_accum always happens when is_inbody_header is
true, this guarantees a prefix that causes check_header to always
return true.

Therefore replace the assert with an if !check_header + DIE
combination to reflect this.

Helped-by: Jonathan Tan <jonathantanmy@google.com>
Helped-by: Jeff King <peff@peff.net>
Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agomingw: consider that UNICODE_STRING::Length counts bytes
Max Kirillov [Mon, 19 Dec 2016 21:32:00 +0000 (23:32 +0200)]
mingw: consider that UNICODE_STRING::Length counts bytes

UNICODE_STRING::Length field means size of buffer in bytes[1],
despite of buffer itself being array of wchar_t. Because of that
terminating zero is placed twice as far. Fix it.

[1] https://msdn.microsoft.com/en-us/library/windows/desktop/aa380518.aspx

Signed-off-by: Max Kirillov <max@max630.net>
Acked-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoSecond batch for 2.12
Junio C Hamano [Mon, 19 Dec 2016 22:50:31 +0000 (14:50 -0800)]
Second batch for 2.12

Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoMerge branch 'kh/tutorial-grammofix'
Junio C Hamano [Mon, 19 Dec 2016 22:45:41 +0000 (14:45 -0800)]
Merge branch 'kh/tutorial-grammofix'

* kh/tutorial-grammofix:
  doc: omit needless "for"
  doc: make the intent of sentence clearer
  doc: add verb in front of command to run
  doc: add articles (grammar)

4 years agoMerge branch 'da/mergetool-xxdiff-hotkey'
Junio C Hamano [Mon, 19 Dec 2016 22:45:41 +0000 (14:45 -0800)]
Merge branch 'da/mergetool-xxdiff-hotkey'

The way to specify hotkeys to "xxdiff" that is used by "git
mergetool" has been modernized to match recent versions of xxdiff.

* da/mergetool-xxdiff-hotkey:
  mergetools: fix xxdiff hotkeys

4 years agoMerge branch 'lr/doc-fix-cet'
Junio C Hamano [Mon, 19 Dec 2016 22:45:41 +0000 (14:45 -0800)]
Merge branch 'lr/doc-fix-cet'

* lr/doc-fix-cet:
  date-formats.txt: Typo fix

4 years agoMerge branch 'sb/t3600-cleanup'
Junio C Hamano [Mon, 19 Dec 2016 22:45:39 +0000 (14:45 -0800)]
Merge branch 'sb/t3600-cleanup'

Code cleanup.

* sb/t3600-cleanup:
  t3600: slightly modernize style
  t3600: remove useless redirect

4 years agoMerge branch 'jc/pull-rebase-ff'
Junio C Hamano [Mon, 19 Dec 2016 22:45:38 +0000 (14:45 -0800)]
Merge branch 'jc/pull-rebase-ff'

"git pull --rebase", when there is no new commits on our side since
we forked from the upstream, should be able to fast-forward without
invoking "git rebase", but it didn't.

* jc/pull-rebase-ff:
  pull: fast-forward "pull --rebase=true"

4 years agoMerge branch 'ld/p4-worktree'
Junio C Hamano [Mon, 19 Dec 2016 22:45:37 +0000 (14:45 -0800)]
Merge branch 'ld/p4-worktree'

"git p4" didn't interact with the internal of .git directory
correctly in the modern "git-worktree"-enabled world.

* ld/p4-worktree:
  git-p4: support git worktrees

4 years agoMerge branch 'jk/make-tags-find-sources-tweak'
Junio C Hamano [Mon, 19 Dec 2016 22:45:37 +0000 (14:45 -0800)]
Merge branch 'jk/make-tags-find-sources-tweak'

Update the procedure to generate "tags" for developer support.

* jk/make-tags-find-sources-tweak:
  Makefile: exclude contrib from FIND_SOURCE_FILES
  Makefile: match shell scripts in FIND_SOURCE_FILES
  Makefile: exclude test cruft from FIND_SOURCE_FILES
  Makefile: reformat FIND_SOURCE_FILES

4 years agoMerge branch 'js/normalize-path-copy-ceil'
Junio C Hamano [Mon, 19 Dec 2016 22:45:37 +0000 (14:45 -0800)]
Merge branch 'js/normalize-path-copy-ceil'

A pathname that begins with "//" or "\\" on Windows is special but
path normalization logic was unaware of it.

* js/normalize-path-copy-ceil:
  normalize_path_copy(): fix pushing to //server/share/dir on Windows

4 years agoMerge branch 'bb/unicode-9.0'
Junio C Hamano [Mon, 19 Dec 2016 22:45:36 +0000 (14:45 -0800)]
Merge branch 'bb/unicode-9.0'

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

4 years agoMerge branch 'jk/readme-gmane-is-no-more'
Junio C Hamano [Mon, 19 Dec 2016 22:45:35 +0000 (14:45 -0800)]
Merge branch 'jk/readme-gmane-is-no-more'

* jk/readme-gmane-is-no-more:
  README: replace gmane link with public-inbox

4 years agoMerge branch 'jc/lock-report-on-error'
Junio C Hamano [Mon, 19 Dec 2016 22:45:35 +0000 (14:45 -0800)]
Merge branch 'jc/lock-report-on-error'

Git 2.11 had a minor regression in "merge --ff-only" that competed
with another process that simultanously attempted to update the
index. We used to explain what went wrong with an error message,
but the new code silently failed.  The error message has been
resurrected.

* jc/lock-report-on-error:
  lockfile: LOCK_REPORT_ON_ERROR
  hold_locked_index(): align error handling with hold_lockfile_for_update()
  wt-status: implement opportunisitc index update correctly

4 years agoMerge branch 'jk/xdiff-drop-xdl-fast-hash'
Junio C Hamano [Mon, 19 Dec 2016 22:45:35 +0000 (14:45 -0800)]
Merge branch 'jk/xdiff-drop-xdl-fast-hash'

Retire the "fast hash" that had disastrous performance issues in
some corner cases.

* jk/xdiff-drop-xdl-fast-hash:
  xdiff: drop XDL_FAST_HASH

4 years agoMerge branch 'nd/rebase-forget'
Junio C Hamano [Mon, 19 Dec 2016 22:45:35 +0000 (14:45 -0800)]
Merge branch 'nd/rebase-forget'

"git rebase" learned "--quit" option, which allows a user to
remove the metadata left by an earlier "git rebase" that was
manually aborted without using "git rebase --abort".

* nd/rebase-forget:
  rebase: add --quit to cleanup rebase, leave everything else untouched

4 years agoMerge branch 'jk/trailers-placeholder-in-pretty'
Junio C Hamano [Mon, 19 Dec 2016 22:45:34 +0000 (14:45 -0800)]
Merge branch 'jk/trailers-placeholder-in-pretty'

In addition to %(subject), %(body), "log --pretty=format:..."
learned a new placeholder %(trailers).

* jk/trailers-placeholder-in-pretty:
  ref-filter: add support to display trailers as part of contents
  pretty: add %(trailers) format for displaying trailers of a commit message

4 years agoMerge branch 'ak/commit-only-allow-empty'
Junio C Hamano [Mon, 19 Dec 2016 22:45:34 +0000 (14:45 -0800)]
Merge branch 'ak/commit-only-allow-empty'

"git commit --allow-empty --only" (no pathspec) with dirty index
ought to be an acceptable way to create a new commit that does not
change any paths, but it was forbidden, perhaps because nobody
needed it so far.

* ak/commit-only-allow-empty:
  commit: remove 'Clever' message for --only --amend
  commit: make --only --allow-empty work without paths

4 years agoMerge branch 'da/difftool-dir-diff-fix'
Junio C Hamano [Mon, 19 Dec 2016 22:45:33 +0000 (14:45 -0800)]
Merge branch 'da/difftool-dir-diff-fix'

"git difftool --dir-diff" had a minor regression when started from
a subdirectory, which has been fixed.

* da/difftool-dir-diff-fix:
  difftool: fix dir-diff index creation when in a subdirectory

4 years agoMerge branch 'jb/diff-no-index-no-abbrev'
Junio C Hamano [Mon, 19 Dec 2016 22:45:33 +0000 (14:45 -0800)]
Merge branch 'jb/diff-no-index-no-abbrev'

"git diff --no-index" did not take "--no-abbrev" option.

* jb/diff-no-index-no-abbrev:
  diff: handle --no-abbrev in no-index case

4 years agoMerge branch 'rj/git-version-gen-do-not-force-abbrev'
Junio C Hamano [Mon, 19 Dec 2016 22:45:33 +0000 (14:45 -0800)]
Merge branch 'rj/git-version-gen-do-not-force-abbrev'

A minor build update.

* rj/git-version-gen-do-not-force-abbrev:
  GIT-VERSION-GEN: do not force abbreviation length used by 'describe'

4 years agoMerge branch 'jk/stash-disable-renames-internally'
Junio C Hamano [Mon, 19 Dec 2016 22:45:33 +0000 (14:45 -0800)]
Merge branch 'jk/stash-disable-renames-internally'

When diff.renames configuration is on (and with Git 2.9 and later,
it is enabled by default, which made it worse), "git stash"
misbehaved if a file is removed and another file with a very
similar content is added.

* jk/stash-disable-renames-internally:
  stash: prefer plumbing over git-diff

4 years agoMerge branch 'jk/http-walker-limit-redirect'
Junio C Hamano [Mon, 19 Dec 2016 22:45:32 +0000 (14:45 -0800)]
Merge branch 'jk/http-walker-limit-redirect'

Update the error messages from the dumb-http client when it fails
to obtain loose objects; we used to give sensible error message
only upon 404 but we now forbid unexpected redirects that needs to
be reported with something sensible.

* jk/http-walker-limit-redirect:
  http-walker: complain about non-404 loose object errors

4 years agoMerge branch 'jk/http-walker-limit-redirect-2.9'
Junio C Hamano [Mon, 19 Dec 2016 22:45:31 +0000 (14:45 -0800)]
Merge branch 'jk/http-walker-limit-redirect-2.9'

Transport with dumb http can be fooled into following foreign URLs
that the end user does not intend to, especially with the server
side redirects and http-alternates mechanism, which can lead to
security issues.  Tighten the redirection and make it more obvious
to the end user when it happens.

* jk/http-walker-limit-redirect-2.9:
  http: treat http-alternates like redirects
  http: make redirects more obvious
  remote-curl: rename shadowed options variable
  http: always update the base URL for redirects
  http: simplify update_url_from_redirect

4 years agoMerge branch 'nd/for-each-ref-ignore-case'
Junio C Hamano [Mon, 19 Dec 2016 22:45:31 +0000 (14:45 -0800)]
Merge branch 'nd/for-each-ref-ignore-case'

"git branch --list" and friends learned "--ignore-case" option to
optionally sort branches and tags case insensitively.

* nd/for-each-ref-ignore-case:
  tag, branch, for-each-ref: add --ignore-case for sorting and filtering

4 years agoMerge branch 'sb/unpack-trees-grammofix'
Junio C Hamano [Mon, 19 Dec 2016 22:45:31 +0000 (14:45 -0800)]
Merge branch 'sb/unpack-trees-grammofix'

* sb/unpack-trees-grammofix:
  unpack-trees: fix grammar for untracked files in directories

4 years agoMerge branch 'ls/travis-update-p4-and-lfs'
Junio C Hamano [Mon, 19 Dec 2016 22:45:30 +0000 (14:45 -0800)]
Merge branch 'ls/travis-update-p4-and-lfs'

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

4 years agoMerge branch 'ls/t0021-fixup'
Junio C Hamano [Mon, 19 Dec 2016 22:45:30 +0000 (14:45 -0800)]
Merge branch 'ls/t0021-fixup'

* ls/t0021-fixup:
  t0021: minor filter process test cleanup