git/git.git
3 years agosubmodule: check for unmerged .gitmodules outside of config parsing
Brandon Williams [Wed, 2 Aug 2017 19:49:21 +0000 (12:49 -0700)]
submodule: check for unmerged .gitmodules outside of config parsing

Add 'is_gitmodules_unmerged()' function which can be used to determine
in the '.gitmodules' file is unmerged based on the passed in index
instead of relying on a global variable which is set during the
submodule-config parsing.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agosubmodule: check for unstaged .gitmodules outside of config parsing
Brandon Williams [Wed, 2 Aug 2017 19:49:20 +0000 (12:49 -0700)]
submodule: check for unstaged .gitmodules outside of config parsing

Teach 'is_staging_gitmodules_ok()' to be able to determine in the
'.gitmodules' file has unstaged changes based on the passed in index
instead of relying on a global variable which is set during the
submodule-config parsing.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agosubmodule: remove fetch.recursesubmodules from submodule-config parsing
Brandon Williams [Wed, 2 Aug 2017 19:49:19 +0000 (12:49 -0700)]
submodule: remove fetch.recursesubmodules from submodule-config parsing

Remove the 'fetch.recursesubmodules' configuration option from the
general submodule-config parsing and instead rely on using
'config_from_gitmodules()' in order to maintain backwards compatibility
with this config being placed in the '.gitmodules' file.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agosubmodule: remove submodule.fetchjobs from submodule-config parsing
Brandon Williams [Wed, 2 Aug 2017 19:49:18 +0000 (12:49 -0700)]
submodule: remove submodule.fetchjobs from submodule-config parsing

The '.gitmodules' file should only contain information pertinent to
configuring individual submodules (name to path mapping, URL where to
obtain the submodule, etc.) while other configuration like the number of
jobs to use when fetching submodules should be a part of the
repository's config.

Remove the 'submodule.fetchjobs' configuration option from the general
submodule-config parsing and instead rely on using the
'config_from_gitmodules()' in order to maintain backwards compatibility
with this config being placed in the '.gitmodules' file.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoconfig: add config_from_gitmodules
Brandon Williams [Wed, 2 Aug 2017 19:49:17 +0000 (12:49 -0700)]
config: add config_from_gitmodules

Add 'config_from_gitmodules()' function which can be used by 'fetch' and
'update_clone' in order to maintain backwards compatibility with
configuration being stored in .gitmodules' since a future patch will
remove reading these values in the submodule-config.

This function should not be used anywhere other than in 'fetch' and
'update_clone'.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agocache.h: add GITMODULES_FILE macro
Brandon Williams [Wed, 2 Aug 2017 19:49:16 +0000 (12:49 -0700)]
cache.h: add GITMODULES_FILE macro

Add a macro to be used when specifying the '.gitmodules' file and
convert any existing hard coded '.gitmodules' file strings to use the
new macro.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agorepository: have the_repository use the_index
Brandon Williams [Tue, 18 Jul 2017 19:05:19 +0000 (12:05 -0700)]
repository: have the_repository use the_index

Have the index state which is stored in 'the_repository' be a pointer to
the in-core index 'the_index'.  This makes it easier to begin
transitioning more parts of the code base to operate on a 'struct
repository'.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agorepo_read_index: don't discard the index
Brandon Williams [Tue, 18 Jul 2017 19:05:18 +0000 (12:05 -0700)]
repo_read_index: don't discard the index

Have 'repo_read_index()' behave more like the other read_index family of
functions and don't discard the index if it has already been populated
and instead rely on the quick return of read_index_from which has:

  /* istate->initialized covers both .git/index and .git/sharedindex.xxx */
  if (istate->initialized)
    return istate->cache_nr;

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoGit 2.14-rc0 v2.14.0-rc0
Junio C Hamano [Thu, 13 Jul 2017 23:22:29 +0000 (16:22 -0700)]
Git 2.14-rc0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoMerge branch 'jk/build-with-asan'
Junio C Hamano [Thu, 13 Jul 2017 23:14:54 +0000 (16:14 -0700)]
Merge branch 'jk/build-with-asan'

The build procedure has been improved to allow building and testing
Git with address sanitizer more easily.

* jk/build-with-asan:
  Makefile: disable unaligned loads with UBSan
  Makefile: turn off -fomit-frame-pointer with sanitizers
  Makefile: add helper for compiling with -fsanitize
  test-lib: turn on ASan abort_on_error by default
  test-lib: set ASAN_OPTIONS variable before we run git

3 years agoMerge branch 'sb/pull-rebase-submodule'
Junio C Hamano [Thu, 13 Jul 2017 23:14:54 +0000 (16:14 -0700)]
Merge branch 'sb/pull-rebase-submodule'

"git pull --rebase --recurse-submodules" learns to rebase the
branch in the submodules to an updated base.

* sb/pull-rebase-submodule:
  builtin/fetch cleanup: always set default value for submodule recursing
  pull: optionally rebase submodules (remote submodule changes only)
  builtin/fetch: parse recurse-submodules-default at default options parsing
  builtin/fetch: factor submodule recurse parsing out to submodule config

3 years agoMerge branch 'sb/hashmap-customize-comparison'
Junio C Hamano [Thu, 13 Jul 2017 23:14:54 +0000 (16:14 -0700)]
Merge branch 'sb/hashmap-customize-comparison'

Update the hashmap API so that data to customize the behaviour of
the comparison function can be specified at the time a hashmap is
initialized.

* sb/hashmap-customize-comparison:
  hashmap: migrate documentation from Documentation/technical into header
  patch-ids.c: use hashmap correctly
  hashmap.h: compare function has access to a data field

3 years agoMerge branch 'ab/grep-lose-opt-regflags'
Junio C Hamano [Thu, 13 Jul 2017 23:14:54 +0000 (16:14 -0700)]
Merge branch 'ab/grep-lose-opt-regflags'

Code cleanup.

* ab/grep-lose-opt-regflags:
  grep: remove redundant REG_NEWLINE when compiling fixed regex
  grep: remove regflags from the public grep_opt API
  grep: remove redundant and verbose re-assignments to 0
  grep: remove redundant "fixed" field re-assignment to 0
  grep: adjust a redundant grep pattern type assignment
  grep: remove redundant double assignment to 0

3 years agoSync with v2.13.3
Junio C Hamano [Wed, 12 Jul 2017 22:25:14 +0000 (15:25 -0700)]
Sync with v2.13.3

3 years agoGit 2.13.3 v2.13.3
Junio C Hamano [Wed, 12 Jul 2017 22:24:15 +0000 (15:24 -0700)]
Git 2.13.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoMerge branch 'kn/ref-filter-branch-list' into maint
Junio C Hamano [Wed, 12 Jul 2017 22:23:09 +0000 (15:23 -0700)]
Merge branch 'kn/ref-filter-branch-list' into maint

The rewrite of "git branch --list" using for-each-ref's internals
that happened in v2.13 regressed its handling of color.branch.local;
this has been fixed.

* kn/ref-filter-branch-list:
  ref-filter.c: drop return from void function
  branch: set remote color in ref-filter branch immediately
  branch: use BRANCH_COLOR_LOCAL in ref-filter format
  branch: only perform HEAD check for local branches

3 years agoMerge branch 'ks/typofix-commit-c-comment' into maint
Junio C Hamano [Wed, 12 Jul 2017 22:20:48 +0000 (15:20 -0700)]
Merge branch 'ks/typofix-commit-c-comment' into maint

Typofix.

* ks/typofix-commit-c-comment:
  builtin/commit.c: fix a typo in the comment

3 years agoMerge branch 'jk/reflog-walk-maint' into maint
Junio C Hamano [Wed, 12 Jul 2017 22:20:35 +0000 (15:20 -0700)]
Merge branch 'jk/reflog-walk-maint' into maint

After "git branch --move" of the currently checked out branch, the
code to walk the reflog of HEAD via "log -g" and friends
incorrectly stopped at the reflog entry that records the renaming
of the branch.

* jk/reflog-walk-maint:
  reflog-walk: include all fields when freeing complete_reflogs
  reflog-walk: don't free reflogs added to cache
  reflog-walk: duplicate strings in complete_reflogs list
  reflog-walk: skip over double-null oid due to HEAD rename

3 years agoHopefully the last batch before -rc0
Junio C Hamano [Wed, 12 Jul 2017 22:19:27 +0000 (15:19 -0700)]
Hopefully the last batch before -rc0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoMerge branch 'ks/fix-rebase-doc-picture'
Junio C Hamano [Wed, 12 Jul 2017 22:18:24 +0000 (15:18 -0700)]
Merge branch 'ks/fix-rebase-doc-picture'

Doc update.

* ks/fix-rebase-doc-picture:
  doc: correct a mistake in an illustration

3 years agoMerge branch 'rs/wt-status-cleanup'
Junio C Hamano [Wed, 12 Jul 2017 22:18:23 +0000 (15:18 -0700)]
Merge branch 'rs/wt-status-cleanup'

Code cleanup.

* rs/wt-status-cleanup:
  wt-status: use separate variable for result of shorten_unambiguous_ref

3 years agoMerge branch 'rs/use-div-round-up'
Junio C Hamano [Wed, 12 Jul 2017 22:18:23 +0000 (15:18 -0700)]
Merge branch 'rs/use-div-round-up'

Code cleanup.

* rs/use-div-round-up:
  use DIV_ROUND_UP

3 years agoMerge branch 'kn/ref-filter-branch-list'
Junio C Hamano [Wed, 12 Jul 2017 22:18:23 +0000 (15:18 -0700)]
Merge branch 'kn/ref-filter-branch-list'

The rewrite of "git branch --list" using for-each-ref's internals
that happened in v2.13 regressed its handling of color.branch.local;
this has been fixed.

* kn/ref-filter-branch-list:
  ref-filter.c: drop return from void function
  branch: set remote color in ref-filter branch immediately
  branch: use BRANCH_COLOR_LOCAL in ref-filter format
  branch: only perform HEAD check for local branches

3 years agoMerge branch 'rs/urlmatch-cleanup'
Junio C Hamano [Wed, 12 Jul 2017 22:18:22 +0000 (15:18 -0700)]
Merge branch 'rs/urlmatch-cleanup'

Code cleanup.

* rs/urlmatch-cleanup:
  urlmatch: use hex2chr() in append_normalized_escapes()

3 years agoMerge branch 'rs/apply-avoid-over-reading'
Junio C Hamano [Wed, 12 Jul 2017 22:18:22 +0000 (15:18 -0700)]
Merge branch 'rs/apply-avoid-over-reading'

Code cleanup.

* rs/apply-avoid-over-reading:
  apply: use strcmp(3) for comparing strings in gitdiff_verify_name()

3 years agoMerge branch 'sb/submodule-doc'
Junio C Hamano [Wed, 12 Jul 2017 22:18:21 +0000 (15:18 -0700)]
Merge branch 'sb/submodule-doc'

Doc update.

* sb/submodule-doc:
  submodules: overhaul documentation

3 years agouse DIV_ROUND_UP
René Scharfe [Sat, 8 Jul 2017 10:35:35 +0000 (12:35 +0200)]
use DIV_ROUND_UP

Convert code that divides and rounds up to use DIV_ROUND_UP to make the
intent clearer and reduce the number of magic constants.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoSync with maint
Junio C Hamano [Mon, 10 Jul 2017 21:02:45 +0000 (14:02 -0700)]
Sync with maint

3 years agoPrepare for 2.13.3
Junio C Hamano [Mon, 10 Jul 2017 21:02:07 +0000 (14:02 -0700)]
Prepare for 2.13.3

3 years agoMerge branch 'sb/merge-recursive-code-cleanup' into maint
Junio C Hamano [Mon, 10 Jul 2017 20:59:09 +0000 (13:59 -0700)]
Merge branch 'sb/merge-recursive-code-cleanup' into maint

Code clean-up.

* sb/merge-recursive-code-cleanup:
  merge-recursive: use DIFF_XDL_SET macro

3 years agoMerge branch 'jc/utf8-fprintf' into maint
Junio C Hamano [Mon, 10 Jul 2017 20:59:08 +0000 (13:59 -0700)]
Merge branch 'jc/utf8-fprintf' into maint

Code cleanup.

* jc/utf8-fprintf:
  submodule--helper: do not call utf8_fprintf() unnecessarily

3 years agoMerge branch 'js/fsck-name-object' into maint
Junio C Hamano [Mon, 10 Jul 2017 20:59:08 +0000 (13:59 -0700)]
Merge branch 'js/fsck-name-object' into maint

Test fix.

* js/fsck-name-object:
  t1450: use egrep for regexp "alternation"

3 years agoMerge branch 'js/t5534-rev-parse-gives-multi-line-output-fix' into maint
Junio C Hamano [Mon, 10 Jul 2017 20:59:07 +0000 (13:59 -0700)]
Merge branch 'js/t5534-rev-parse-gives-multi-line-output-fix' into maint

A few tests that tried to verify the contents of push certificates
did not use 'git rev-parse' to formulate the line to look for in
the certificate correctly.

* js/t5534-rev-parse-gives-multi-line-output-fix:
  t5534: fix misleading grep invocation

3 years agoMerge branch 'ab/sha1dc-maint' into maint
Junio C Hamano [Mon, 10 Jul 2017 20:59:06 +0000 (13:59 -0700)]
Merge branch 'ab/sha1dc-maint' into maint

Update the sha1dc again to fix portability glitches.

* ab/sha1dc-maint:
  sha1dc: update from upstream

3 years agoMerge branch 'aw/contrib-subtree-doc-asciidoctor' into maint
Junio C Hamano [Mon, 10 Jul 2017 20:59:06 +0000 (13:59 -0700)]
Merge branch 'aw/contrib-subtree-doc-asciidoctor' into maint

The Makefile rule in contrib/subtree for building documentation
learned to honour USE_ASCIIDOCTOR just like the main documentation
set does.

* aw/contrib-subtree-doc-asciidoctor:
  subtree: honour USE_ASCIIDOCTOR when set

3 years agoMerge branch 'cc/shared-index-permfix' into maint
Junio C Hamano [Mon, 10 Jul 2017 20:59:05 +0000 (13:59 -0700)]
Merge branch 'cc/shared-index-permfix' into maint

The split index code did not honor core.sharedrepository setting
correctly.

* cc/shared-index-permfix:
  t1700: make sure split-index respects core.sharedrepository
  t1301: move modebits() to test-lib-functions.sh
  read-cache: use shared perms when writing shared index

3 years agoMerge branch 'ah/doc-pretty-color-auto-prefix' into maint
Junio C Hamano [Mon, 10 Jul 2017 20:59:05 +0000 (13:59 -0700)]
Merge branch 'ah/doc-pretty-color-auto-prefix' into maint

Doc update.

* ah/doc-pretty-color-auto-prefix:
  doc: clarify syntax for %C(auto,...) in pretty formats

3 years agoMerge branch 'mb/reword-autocomplete-message' into maint
Junio C Hamano [Mon, 10 Jul 2017 20:59:04 +0000 (13:59 -0700)]
Merge branch 'mb/reword-autocomplete-message' into maint

Message update.

* mb/reword-autocomplete-message:
  auto-correct: tweak phrasing

3 years agoMerge branch 'ks/t7508-indent-fix' into maint
Junio C Hamano [Mon, 10 Jul 2017 20:59:03 +0000 (13:59 -0700)]
Merge branch 'ks/t7508-indent-fix' into maint

Cosmetic update to a test.

* ks/t7508-indent-fix:
  t7508: fix a broken indentation

3 years agoMerge branch 'sb/t4005-modernize' into maint
Junio C Hamano [Mon, 10 Jul 2017 20:59:02 +0000 (13:59 -0700)]
Merge branch 'sb/t4005-modernize' into maint

Test clean-up.

* sb/t4005-modernize:
  t4005: modernize style and drop hard coded sha1

3 years agoMerge branch 'rs/apply-validate-input' into maint
Junio C Hamano [Mon, 10 Jul 2017 20:59:01 +0000 (13:59 -0700)]
Merge branch 'rs/apply-validate-input' into maint

Tighten error checks for invalid "git apply" input.

* rs/apply-validate-input:
  apply: check git diffs for mutually exclusive header lines
  apply: check git diffs for invalid file modes
  apply: check git diffs for missing old filenames

3 years agoMerge branch 'jc/pack-bitmap-unaligned' into maint
Junio C Hamano [Mon, 10 Jul 2017 20:59:00 +0000 (13:59 -0700)]
Merge branch 'jc/pack-bitmap-unaligned' into maint

An unaligned 32-bit access in pack-bitmap code ahs been corrected.

* jc/pack-bitmap-unaligned:
  pack-bitmap: don't perform unaligned memory access

3 years agoMerge branch 'pw/rebase-i-regression-fix-tests' into maint
Junio C Hamano [Mon, 10 Jul 2017 20:58:59 +0000 (13:58 -0700)]
Merge branch 'pw/rebase-i-regression-fix-tests' into maint

Fix a recent regression to "git rebase -i" and add tests that would
have caught it and others.

* pw/rebase-i-regression-fix-tests:
  t3420: fix under GETTEXT_POISON build
  rebase: add more regression tests for console output
  rebase: add regression tests for console output
  rebase -i: add test for reflog message
  sequencer: print autostash messages to stderr

3 years agoMerge branch 'jk/add-p-commentchar-fix' into maint
Junio C Hamano [Mon, 10 Jul 2017 20:58:58 +0000 (13:58 -0700)]
Merge branch 'jk/add-p-commentchar-fix' into maint

"git add -p" were updated in 2.12 timeframe to cope with custom
core.commentchar but the implementation was buggy and a
metacharacter like $ and * did not work.

* jk/add-p-commentchar-fix:
  add--interactive: quote commentChar regex
  add--interactive: handle EOF in prompt_yesno

3 years agoMerge branch 'js/alias-early-config' into maint
Junio C Hamano [Mon, 10 Jul 2017 20:58:57 +0000 (13:58 -0700)]
Merge branch 'js/alias-early-config' into maint

The code to pick up and execute command alias definition from the
configuration used to switch to the top of the working tree and
then come back when the expanded alias was executed, which was
unnecessarilyl complex.  Attempt to simplify the logic by using the
early-config mechanism that does not chdir around.

* js/alias-early-config:
  alias: use the early config machinery to expand aliases
  t7006: demonstrate a problem with aliases in subdirectories
  t1308: relax the test verifying that empty alias values are disallowed
  help: use early config when autocorrecting aliases
  config: report correct line number upon error
  discover_git_directory(): avoid setting invalid git_dir

3 years agoMerge branch 'rs/pretty-add-again' into maint
Junio C Hamano [Mon, 10 Jul 2017 20:58:57 +0000 (13:58 -0700)]
Merge branch 'rs/pretty-add-again' into maint

The pretty-format specifiers like '%h', '%t', etc. had an
optimization that no longer works correctly.  In preparation/hope
of getting it correctly implemented, first discard the optimization
that is broken.

* rs/pretty-add-again:
  pretty: recalculate duplicate short hashes

3 years agoMerge branch 'ah/doc-gitattributes-empty-index' into maint
Junio C Hamano [Mon, 10 Jul 2017 20:58:56 +0000 (13:58 -0700)]
Merge branch 'ah/doc-gitattributes-empty-index' into maint

An example in documentation that does not work in multi worktree
configuration has been corrected.

* ah/doc-gitattributes-empty-index:
  doc: do not use `rm .git/index` when normalizing line endings

3 years agoMerge branch 'da/mergetools-meld-output-opt-on-macos' into maint
Junio C Hamano [Mon, 10 Jul 2017 20:58:56 +0000 (13:58 -0700)]
Merge branch 'da/mergetools-meld-output-opt-on-macos' into maint

"git mergetool" learned to work around a wrapper MacOS X adds
around underlying meld.

* da/mergetools-meld-output-opt-on-macos:
  mergetools/meld: improve compatibiilty with Meld on macOS X

3 years agoMerge branch 'jk/diff-highlight-module' into maint
Junio C Hamano [Mon, 10 Jul 2017 20:58:56 +0000 (13:58 -0700)]
Merge branch 'jk/diff-highlight-module' into maint

The 'diff-highlight' program (in contrib/) has been restructured
for easier reuse by an external project 'diff-so-fancy'.

* jk/diff-highlight-module:
  diff-highlight: split code into module

3 years agoSixteenth batch for 2.14
Junio C Hamano [Mon, 10 Jul 2017 20:44:30 +0000 (13:44 -0700)]
Sixteenth batch for 2.14

Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoMerge branch 'jk/reflog-walk-maint'
Junio C Hamano [Mon, 10 Jul 2017 20:42:52 +0000 (13:42 -0700)]
Merge branch 'jk/reflog-walk-maint'

After "git branch --move" of the currently checked out branch, the
code to walk the reflog of HEAD via "log -g" and friends
incorrectly stopped at the reflog entry that records the renaming
of the branch.

* jk/reflog-walk-maint:
  reflog-walk: include all fields when freeing complete_reflogs
  reflog-walk: don't free reflogs added to cache
  reflog-walk: duplicate strings in complete_reflogs list
  reflog-walk: skip over double-null oid due to HEAD rename

3 years agoMerge branch 'bb/unicode-10.0'
Junio C Hamano [Mon, 10 Jul 2017 20:42:52 +0000 (13:42 -0700)]
Merge branch 'bb/unicode-10.0'

Update the character width tables.

* bb/unicode-10.0:
  unicode: update the width tables to Unicode 10

3 years agoMerge branch 'ks/typofix-commit-c-comment'
Junio C Hamano [Mon, 10 Jul 2017 20:42:51 +0000 (13:42 -0700)]
Merge branch 'ks/typofix-commit-c-comment'

Typofix.

* ks/typofix-commit-c-comment:
  builtin/commit.c: fix a typo in the comment

3 years agoMerge branch 'ab/wildmatch'
Junio C Hamano [Mon, 10 Jul 2017 20:42:51 +0000 (13:42 -0700)]
Merge branch 'ab/wildmatch'

Minor code cleanup.

* ab/wildmatch:
  wildmatch: remove unused wildopts parameter

3 years agoMerge branch 'ab/sha1dc'
Junio C Hamano [Mon, 10 Jul 2017 20:42:51 +0000 (13:42 -0700)]
Merge branch 'ab/sha1dc'

The "collission-detecting" implementation of SHA-1 hash we borrowed
from is replaced by directly binding the upstream project as our
submodule.  Glitches on minority platforms are still being worked out.

* ab/sha1dc:
  sha1collisiondetection: automatically enable when submodule is populated
  sha1dc: optionally use sha1collisiondetection as a submodule

3 years agoMerge branch 'rs/free-and-null'
Junio C Hamano [Mon, 10 Jul 2017 20:42:51 +0000 (13:42 -0700)]
Merge branch 'rs/free-and-null'

Code cleanup.

* rs/free-and-null:
  coccinelle: polish FREE_AND_NULL rules

3 years agoMerge branch 'pw/unquote-path-in-git-pm'
Junio C Hamano [Mon, 10 Jul 2017 20:42:50 +0000 (13:42 -0700)]
Merge branch 'pw/unquote-path-in-git-pm'

Code refactoring.

* pw/unquote-path-in-git-pm:
  t9700: add tests for Git::unquote_path()
  Git::unquote_path(): throw an exception on bad path
  Git::unquote_path(): handle '\a'
  add -i: move unquote_path() to Git.pm

3 years agoMerge branch 'ks/commit-assuming-only-warning-removal'
Junio C Hamano [Mon, 10 Jul 2017 20:42:50 +0000 (13:42 -0700)]
Merge branch 'ks/commit-assuming-only-warning-removal'

An old message shown in the commit log template was removed, as it
has outlived its usefulness.

* ks/commit-assuming-only-warning-removal:
  commit-template: distinguish status information unconditionally
  commit-template: remove outdated notice about explicit paths

3 years agoref-filter.c: drop return from void function
Alejandro R. Sedeño [Mon, 10 Jul 2017 19:03:03 +0000 (15:03 -0400)]
ref-filter.c: drop return from void function

Sun's C compiler errors out on this pattern:

void foo() { ... }
void bar() { return foo(); }

Signed-off-by: Alejandro R. Sedeño <asedeno@mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agol10n: de.po: fix typo
Ralf Thielow [Mon, 10 Jul 2017 16:23:08 +0000 (18:23 +0200)]
l10n: de.po: fix typo

Reported-by: Andre Hinrichs <andre.hinrichs@gmx.de>
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoMakefile: disable unaligned loads with UBSan
Jeff King [Mon, 10 Jul 2017 13:24:50 +0000 (09:24 -0400)]
Makefile: disable unaligned loads with UBSan

The undefined behavior sanitizer complains about unaligned
loads, even if they're OK for a particular platform in
practice. It's possible that they _are_ a problem, of
course, but since it's a known tradeoff the UBSan errors are
just noise.

Let's quiet it automatically by building with
NO_UNALIGNED_LOADS when SANITIZE=undefined is in use.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoMakefile: turn off -fomit-frame-pointer with sanitizers
Jeff King [Mon, 10 Jul 2017 13:24:47 +0000 (09:24 -0400)]
Makefile: turn off -fomit-frame-pointer with sanitizers

The ASan manual recommends disabling this optimization, as
it can make the backtraces produced by the tool harder to
follow (and since this is a test-debug build, we don't care
about squeezing out every last drop of performance).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoMakefile: add helper for compiling with -fsanitize
Jeff King [Mon, 10 Jul 2017 13:24:42 +0000 (09:24 -0400)]
Makefile: add helper for compiling with -fsanitize

You can already build and test with ASan by doing:

  make CFLAGS=-fsanitize=address test

but there are a few slight annoyances:

  1. It's a little long to type.

  2. It override your CFLAGS completely. You'd probably
     still want -O2, for instance.

  3. It's a good idea to also turn off "recovery", which
     lets the program keep running after a problem is
     detected (with the intention of finding as many bugs as
     possible in a given run). Since Git's test suite should
     generally run without triggering any problems, it's
     better to abort immediately and fail the test when we
     do find an issue.

With this patch, all of that happens automatically when you
run:

  make SANITIZE=address test

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agotest-lib: turn on ASan abort_on_error by default
Jeff King [Mon, 10 Jul 2017 13:24:39 +0000 (09:24 -0400)]
test-lib: turn on ASan abort_on_error by default

By default, ASan will exit with code 1 when it sees an
error. This means we'll notice a problem when we expected
git to succeed, but not in a test_must_fail block.

Let's ask it to actually raise SIGABRT instead. That will
give us a signal death that test_must_fail will notice. As a
bonus, it may also leave a coredump, which can be handy for
digging into a failure.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agotest-lib: set ASAN_OPTIONS variable before we run git
Jeff King [Mon, 10 Jul 2017 13:24:35 +0000 (09:24 -0400)]
test-lib: set ASAN_OPTIONS variable before we run git

We turn off ASan's leak detection by default in the test
suite because it's too noisy. But we don't do so until
part-way through test-lib. This is before we've run any
tests, but after we do our initial "./git" to see if the
binary has even been built.

When built with clang, this seems to work fine. However,
using "gcc -fsanitize=address", the leak checker seems to
complain more aggressively:

  $ ./git
  ...
  ==5352==ERROR: LeakSanitizer: detected memory leaks
  Direct leak of 2 byte(s) in 1 object(s) allocated from:
      #0 0x7f120e7afcf8 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc1cf8)
      #1 0x559fc2a3ce41 in do_xmalloc /home/peff/compile/git/wrapper.c:60
      #2 0x559fc2a3cf1a in do_xmallocz /home/peff/compile/git/wrapper.c:100
      #3 0x559fc2a3d0ad in xmallocz /home/peff/compile/git/wrapper.c:108
      #4 0x559fc2a3d0ad in xmemdupz /home/peff/compile/git/wrapper.c:124
      #5 0x559fc2a3d0ad in xstrndup /home/peff/compile/git/wrapper.c:130
      #6 0x559fc274535a in main /home/peff/compile/git/common-main.c:39
      #7 0x7f120dabd2b0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202b0)

This is a leak in the sense that we never free it, but it's
in a global that is meant to last the whole program. So it's
not really interesting or in need of fixing. And at any
rate, mentioning leaks outside of the test_expect blocks is
certainly unwelcome, as it pollutes stderr.

Let's bump the setting of ASAN_OPTIONS higher in test-lib.sh
to catch our initial "can we even run git?" test.  While
we're at it, we can add a comment to make it a bit less
inscrutable.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agodoc: correct a mistake in an illustration
Kaartic Sivaraam [Mon, 10 Jul 2017 14:18:30 +0000 (19:48 +0530)]
doc: correct a mistake in an illustration

The first illustration of the "RECOVERING FROM UPSTREAM REBASE"
section in the 'git-rebase' documentation meant to depict that
there are number of commits on the 'master' branch, but it is
longer than the 'master' branch in the following illustrations
by one commit, even though there is no resetting of 'master' to
lose that commit.

Correct it.

Signed-off-by: Kaartic Sivaraam <kaarticsivaraam91196@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agowt-status: use separate variable for result of shorten_unambiguous_ref
René Scharfe [Sat, 8 Jul 2017 10:51:01 +0000 (12:51 +0200)]
wt-status: use separate variable for result of shorten_unambiguous_ref

Store the pointer to the string allocated by shorten_unambiguous_ref in
a dedicated variable, short_base, and keep base unchanged.  A non-const
variable is more appropriate for such an object.  It avoids having to
cast const away on free and stops redefining the meaning of base, making
the code slightly clearer.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agourlmatch: use hex2chr() in append_normalized_escapes()
René Scharfe [Sat, 8 Jul 2017 08:59:19 +0000 (10:59 +0200)]
urlmatch: use hex2chr() in append_normalized_escapes()

Simplify the code by using hex2chr() to convert and check for invalid
characters at the same time instead of doing that sequentially with
one table lookup for each.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoapply: use strcmp(3) for comparing strings in gitdiff_verify_name()
René Scharfe [Sat, 8 Jul 2017 08:58:42 +0000 (10:58 +0200)]
apply: use strcmp(3) for comparing strings in gitdiff_verify_name()

We don't know the length of the C string "another".  It could be
shorter than "name", which we compare it to using memchr(3).  Call
strcmp(3) instead to avoid running over the end of the former, and
get rid of a strlen(3) call as a bonus.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agobranch: set remote color in ref-filter branch immediately
Jeff King [Sun, 9 Jul 2017 10:00:45 +0000 (06:00 -0400)]
branch: set remote color in ref-filter branch immediately

We set the current and local branch colors at the top of the
build_format() function. Let's do the same for the remote
color. This saves a little bit of repetition, but more
importantly it puts all of the color-setting in the same
place. That makes it easier to see that we are coloring all
possibilities.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agobranch: use BRANCH_COLOR_LOCAL in ref-filter format
Jeff King [Sun, 9 Jul 2017 09:59:33 +0000 (05:59 -0400)]
branch: use BRANCH_COLOR_LOCAL in ref-filter format

Since 949af0684 (branch: use ref-filter printing APIs,
2017-01-10), git-branch's output is generated by passing a
custom format to the ref-filter code. This format forgot to
pass BRANCH_COLOR_LOCAL, meaning that local branches
(besides the current one) were never colored at all.

We can add it in the %(if) block where we decide whether the
branch is "current" or merely "local".  Note that this means
the current/local coloring is either/or. You can't set:

  [color "branch"]
  local = blue
  current = bold

and expect the current branch to be "bold blue". This
matches the pre-949af0684 behavior.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agobranch: only perform HEAD check for local branches
Jeff King [Sun, 9 Jul 2017 09:58:10 +0000 (05:58 -0400)]
branch: only perform HEAD check for local branches

When assembling the ref-filter format to show "git branch"
output, we put the "%(if)%(HEAD)" conditional at the start
of the overall format. But there's no point in checking
whether a remote branch matches HEAD, as it never will.
The check should go inside the local conditional; we
assemble that format inside the "local" strbuf.

By itself, this is just a minor optimization. But in a
future patch, we'll need this refactoring to fix
local-branch coloring.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agounicode: update the width tables to Unicode 10
Beat Bolli [Fri, 7 Jul 2017 12:08:44 +0000 (14:08 +0200)]
unicode: update the width tables to Unicode 10

Now that Unicode 10 has been announced[0], update the character
width tables to the new version.

[0] http://blog.unicode.org/2017/06/announcing-unicode-standard-version-100.html

Signed-off-by: Beat Bolli <dev+git@drbeat.li>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoreflog-walk: include all fields when freeing complete_reflogs
Jeff King [Fri, 7 Jul 2017 08:43:16 +0000 (04:43 -0400)]
reflog-walk: include all fields when freeing complete_reflogs

When we encounter an error adding reflogs for a walk, we try
to free any logs we have read. But we didn't free all
fields, meaning that we could in theory leak all of the
"items" array (which would consitute the bulk of the
allocated memory).

This patch adds a helper which frees all of the entries and
uses it as appropriate.

As it turns out, the leak seems impossible to trigger with
the current code. Of the three error paths that free the
complete_reflogs struct, two only kick in when the items
array is empty, and the third was removed entirely in the
previous commit.

So this patch should be a noop in terms of behavior, but it
fixes a potential maintenance headache should anybody add a
new error path and copy the partial-free code. Which is
what happened in 5026b47175 (add_reflog_for_walk: avoid
memory leak, 2017-05-04), though its leaky call was the
third one that was recently removed.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoreflog-walk: don't free reflogs added to cache
Jeff King [Fri, 7 Jul 2017 08:41:49 +0000 (04:41 -0400)]
reflog-walk: don't free reflogs added to cache

The add_reflog_for_walk() function keeps a cache mapping
refnames to their reflog contents. We use a cached reflog
entry if available, and otherwise allocate and store a new
one.

Since 5026b47175 (add_reflog_for_walk: avoid memory leak,
2017-05-04), when we hit an error parsing a date-based
reflog spec, we free the reflog memory but leave the cache
entry pointing to the now-freed memory.

We can fix this by just leaving the memory intact once it
has made it into the cache. This may leave an unused entry
in the cache, but that's OK. And it means we also catch a
similar situation: we may not have allocated at all in this
invocation, but simply be pointing to a cached entry from a
previous invocation (which is relying on that entry being
present).

The new test in t1411 exercises this case and fails when run
with --valgrind or ASan.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoreflog-walk: duplicate strings in complete_reflogs list
Jeff King [Fri, 7 Jul 2017 08:39:50 +0000 (04:39 -0400)]
reflog-walk: duplicate strings in complete_reflogs list

As part of the add_reflog_to_walk() function, we keep a
string_list mapping refnames to their reflog contents. This
serves as a cache so that accessing the same reflog twice
requires only a single copy of the log in memory.

The string_list is initialized via xcalloc, meaning its
strdup_strings field is set to 0. But after inserting a
string into the list, we unconditionally call free() on the
string, leaving the list pointing to freed memory. If
another reflog is added (e.g., "git log -g HEAD HEAD"), then
the second one may have unpredictable results.

The extra free was added by 5026b47175 (add_reflog_for_walk:
avoid memory leak, 2017-05-04). Though if you look
carefully, you can see that the code was buggy even before
then. If we tried to read the reflogs by time but came up
with no entries, we exited with an error, freeing the string
in that code path. So the bug was harder to trigger, but
still there.

We can fix it by just asking the string list to make a copy
of the string. Technically we could fix the problem by not
calling free() on our string (and just handing over
ownership to the string list), but there are enough
conditionals that it's quite hard to figure out which code
paths need the free and which do not. Simpler is better
here.

The new test reliably shows the problem when run with
--valgrind or ASAN.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoFifteenth batch for 2.14
Junio C Hamano [Fri, 7 Jul 2017 01:26:13 +0000 (18:26 -0700)]
Fifteenth batch for 2.14

Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoMerge branch 'ab/strbuf-addftime-tzname-boolify'
Junio C Hamano [Fri, 7 Jul 2017 01:14:47 +0000 (18:14 -0700)]
Merge branch 'ab/strbuf-addftime-tzname-boolify'

strbuf_addftime() is further getting tweaked.

* ab/strbuf-addftime-tzname-boolify:
  strbuf: change an always NULL/"" strbuf_addftime() param to bool
  strbuf.h comment: discuss strbuf_addftime() arguments in order

3 years agoMerge branch 'xz/send-email-batch-size'
Junio C Hamano [Fri, 7 Jul 2017 01:14:46 +0000 (18:14 -0700)]
Merge branch 'xz/send-email-batch-size'

"git send-email" learned to overcome some SMTP server limitation
that does not allow many pieces of e-mails to be sent over a single
session.

* xz/send-email-batch-size:
  send-email: --batch-size to work around some SMTP server limit

3 years agoMerge branch 'js/t5534-rev-parse-gives-multi-line-output-fix'
Junio C Hamano [Fri, 7 Jul 2017 01:14:46 +0000 (18:14 -0700)]
Merge branch 'js/t5534-rev-parse-gives-multi-line-output-fix'

A few tests that tried to verify the contents of push certificates
did not use 'git rev-parse' to formulate the line to look for in
the certificate correctly.

* js/t5534-rev-parse-gives-multi-line-output-fix:
  t5534: fix misleading grep invocation

3 years agoMerge branch 'sb/merge-recursive-code-cleanup'
Junio C Hamano [Fri, 7 Jul 2017 01:14:45 +0000 (18:14 -0700)]
Merge branch 'sb/merge-recursive-code-cleanup'

Code clean-up.

* sb/merge-recursive-code-cleanup:
  merge-recursive: use DIFF_XDL_SET macro

3 years agoMerge branch 'rs/apply-avoid-over-reading'
Junio C Hamano [Fri, 7 Jul 2017 01:14:45 +0000 (18:14 -0700)]
Merge branch 'rs/apply-avoid-over-reading'

Code clean-up to fix possible buffer over-reading.

* rs/apply-avoid-over-reading:
  apply: use starts_with() in gitdiff_verify_name()

3 years agoMerge branch 'ab/sha1dc-maint'
Junio C Hamano [Fri, 7 Jul 2017 01:14:44 +0000 (18:14 -0700)]
Merge branch 'ab/sha1dc-maint'

Update the sha1dc again to fix portability glitches.

* ab/sha1dc-maint:
  sha1dc: update from upstream

3 years agoMerge branch 'jc/utf8-fprintf'
Junio C Hamano [Fri, 7 Jul 2017 01:14:44 +0000 (18:14 -0700)]
Merge branch 'jc/utf8-fprintf'

Code cleanup.

* jc/utf8-fprintf:
  submodule--helper: do not call utf8_fprintf() unnecessarily

3 years agoMerge branch 'js/fsck-name-object'
Junio C Hamano [Fri, 7 Jul 2017 01:14:43 +0000 (18:14 -0700)]
Merge branch 'js/fsck-name-object'

Test fix.

* js/fsck-name-object:
  t1450: use egrep for regexp "alternation"

3 years agoMerge branch 'aw/contrib-subtree-doc-asciidoctor'
Junio C Hamano [Fri, 7 Jul 2017 01:14:42 +0000 (18:14 -0700)]
Merge branch 'aw/contrib-subtree-doc-asciidoctor'

The Makefile rule in contrib/subtree for building documentation
learned to honour USE_ASCIIDOCTOR just like the main documentation
set does.

* aw/contrib-subtree-doc-asciidoctor:
  subtree: honour USE_ASCIIDOCTOR when set

3 years agobuiltin/commit.c: fix a typo in the comment
Kaartic Sivaraam [Thu, 6 Jul 2017 03:19:57 +0000 (08:49 +0530)]
builtin/commit.c: fix a typo in the comment

Signed-off-by: Kaartic Sivaraam <kaarticsivaraam91196@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoFourteenth batch for 2.14
Junio C Hamano [Wed, 5 Jul 2017 20:33:51 +0000 (13:33 -0700)]
Fourteenth batch for 2.14

Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoMerge branch 'jt/unify-object-info'
Junio C Hamano [Wed, 5 Jul 2017 20:32:57 +0000 (13:32 -0700)]
Merge branch 'jt/unify-object-info'

Code clean-ups.

* jt/unify-object-info:
  sha1_file: refactor has_sha1_file_with_flags
  sha1_file: do not access pack if unneeded
  sha1_file: teach sha1_object_info_extended more flags
  sha1_file: refactor read_object
  sha1_file: move delta base cache code up
  sha1_file: rename LOOKUP_REPLACE_OBJECT
  sha1_file: rename LOOKUP_UNKNOWN_OBJECT
  sha1_file: teach packed_object_info about typename

3 years agoMerge branch 'cc/shared-index-permfix'
Junio C Hamano [Wed, 5 Jul 2017 20:32:57 +0000 (13:32 -0700)]
Merge branch 'cc/shared-index-permfix'

The split index code did not honor core.sharedrepository setting
correctly.

* cc/shared-index-permfix:
  t1700: make sure split-index respects core.sharedrepository
  t1301: move modebits() to test-lib-functions.sh
  read-cache: use shared perms when writing shared index

3 years agoMerge branch 'rs/sha1-name-readdir-optim'
Junio C Hamano [Wed, 5 Jul 2017 20:32:56 +0000 (13:32 -0700)]
Merge branch 'rs/sha1-name-readdir-optim'

Optimize "what are the object names already taken in an alternate
object database?" query that is used to derive the length of prefix
an object name is uniquely abbreviated to.

* rs/sha1-name-readdir-optim:
  sha1_file: guard against invalid loose subdirectory numbers
  sha1_file: let for_each_file_in_obj_subdir() handle subdir names
  p4205: add perf test script for pretty log formats
  sha1_name: cache readdir(3) results in find_short_object_filename()

3 years agoMerge branch 'bw/repo-object'
Junio C Hamano [Wed, 5 Jul 2017 20:32:55 +0000 (13:32 -0700)]
Merge branch 'bw/repo-object'

Introduce a "repository" object to eventually make it easier to
work in multiple repositories (the primary focus is to work with
the superproject and its submodules) in a single process.

* bw/repo-object:
  ls-files: use repository object
  repository: enable initialization of submodules
  submodule: convert is_submodule_initialized to work on a repository
  submodule: add repo_read_gitmodules
  submodule-config: store the_submodule_cache in the_repository
  repository: add index_state to struct repo
  config: read config from a repository object
  path: add repo_worktree_path and strbuf_repo_worktree_path
  path: add repo_git_path and strbuf_repo_git_path
  path: worktree_git_path() should not use file relocation
  path: convert do_git_path to take a 'struct repository'
  path: convert strbuf_git_common_path to take a 'struct repository'
  path: always pass in commondir to update_common_dir
  path: create path.h
  environment: store worktree in the_repository
  environment: place key repository state in the_repository
  repository: introduce the repository object
  environment: remove namespace_len variable
  setup: add comment indicating a hack
  setup: don't perform lazy initialization of repository state

3 years agoreflog-walk: skip over double-null oid due to HEAD rename
Jeff King [Wed, 5 Jul 2017 07:57:37 +0000 (03:57 -0400)]
reflog-walk: skip over double-null oid due to HEAD rename

Since 39ee4c6c2f (branch: record creation of renamed branch
in HEAD's log, 2017-02-20), a rename on the currently
checked out branch will create two entries in the HEAD
reflog: one where the branch goes away (switching to the
null oid), and one where it comes back (switching away from
the null oid).

This confuses the reflog-walk code. When walking backwards,
it first sees the null oid in the "old" field of the second
entry. Thanks to the "root commit" logic added by 71abeb753f
(reflog: continue walking the reflog past root commits,
2016-06-03), we keep looking for the next entry by scanning
the "new" field from the previous entry. But that field is
also null! We need to go just a tiny bit further, and look
at its "old" field. But with the current code, we decide the
reflog has nothing else to show and just give up. To the
user this looks like the reflog was truncated by the rename
operation, when in fact those entries are still there.

This patch does the absolute minimal fix, which is to look
back that one extra level and keep traversing.

The resulting behavior may not be the _best_ thing to do in
the long run (for example, we show both reflog entries each
with the same commit id), but it's a simple way to fix the
problem without risking further regressions.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agot5534: fix misleading grep invocation
Johannes Schindelin [Wed, 5 Jul 2017 11:37:49 +0000 (13:37 +0200)]
t5534: fix misleading grep invocation

It seems to be a little-known feature of `grep` (and it certainly came
as a surprise to this here developer who believed to know the Unix tools
pretty well) that multiple patterns can be passed in the same
command-line argument simply by separating them by newlines. Watch, and
learn:

$ printf '1\n2\n3\n' | grep "$(printf '1\n3\n')"
1
3

That behavior also extends to patterns passed via `-e`, and it is not
modified by passing the option `-E` (but trying this with -P issues the
error "grep: the -P option only supports a single pattern").

It seems that there are more old Unix hands who are surprised by this
behavior, as grep invocations of the form

grep "$(git rev-parse A B) C" file

were introduced in a85b377d041 (push: the beginning of "git push
--signed", 2014-09-12), and later faithfully copy-edited in b9459019bbb
(push: heed user.signingkey for signed pushes, 2014-10-22).

Please note that the output of `git rev-parse A B` separates the object
IDs via *newlines*, not via spaces, and those newlines are preserved
because the interpolation is enclosed in double quotes.

As a consequence, these tests try to validate that the file contains
either A's object ID, or B's object ID followed by C, or both. Clearly,
however, what the test wanted to see is that there is a line that
contains all of them.

This is clearly unintended, and the grep invocations in question really
match too many lines.

Fix the test by avoiding the newlines in the patterns.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agosend-email: --batch-size to work around some SMTP server limit
xiaoqiang zhao [Sun, 21 May 2017 12:59:50 +0000 (20:59 +0800)]
send-email: --batch-size to work around some SMTP server limit

Some email servers (e.g. smtp.163.com) limit the number emails to be
sent per session (connection) and this will lead to a faliure when
sending many messages.

Teach send-email to disconnect after sending a number of messages
(configurable via the --batch-size=<num> option), wait for a few
seconds (configurable via the --relogin-delay=<seconds> option) and
reconnect, to work around such a limit.

Also add two configuration variables to give these options the default.

Note:

  We will use this as a band-aid for now, but in the longer term, we
  should look at and react to the SMTP error code from the server;
  Xianqiang reports that 450 and 451 are returned by problematic
  servers.

  cf. https://public-inbox.org/git/7993e188.d18d.15c3560bcaf.Coremail.zxq_yx_007@163.com/

Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agosha1collisiondetection: automatically enable when submodule is populated
Junio C Hamano [Sat, 1 Jul 2017 22:05:47 +0000 (22:05 +0000)]
sha1collisiondetection: automatically enable when submodule is populated

If a user wants to experiment with the version of collision
detecting sha1 from the submodule, the user needed to not just
populate the submodule but also needed to turn the knob.

A Makefile trick is easy enough to do so, so let's do this.  When
somebody with a copy of the submodule populated wants not to use it,
that can be done by overriding it in config.mak or from the command
line.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agosha1dc: optionally use sha1collisiondetection as a submodule
Ævar Arnfjörð Bjarmason [Sat, 1 Jul 2017 22:05:46 +0000 (22:05 +0000)]
sha1dc: optionally use sha1collisiondetection as a submodule

Add an option to use the sha1collisiondetection library from the
submodule in sha1collisiondetection/ instead of in the copy in the
sha1dc/ directory.

This allows us to try out the submodule in sha1collisiondetection
without breaking the build for anyone who's not expecting them as we
work out any kinks.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agosha1dc: update from upstream
Ævar Arnfjörð Bjarmason [Sat, 1 Jul 2017 22:05:45 +0000 (22:05 +0000)]
sha1dc: update from upstream

Update sha1dc from the latest version by the upstream maintainer[1].

See commit 6b851e536b ("sha1dc: update from upstream", 2017-06-06) for
the last update.

This solves the Big Endian detection on Solaris reported against
v2.13.2[2], hopefully without any regressions. A version of this has
been tested on two Solaris SPARC installations, Cygwin (by jturney on
cygwin@Freenode), and on numerous more boring systems (mainly
linux/x86_64). See [3] for a discussion of the implementation and
platform-specific issues.

See commit a0103914c2 ("sha1dc: update from upstream", 2017-05-20) and
6b851e536b ("sha1dc: update from upstream", 2017-06-06) for previous
attempts in the 2.13 series to address various compile-time feature
detection in this library.

1. https://github.com/cr-marcstevens/sha1collisiondetection/commit/19d97bf5af05312267c2e874ee6bcf584d9e9681
2. <CAKKM46tHq13XiW5C8sux3=PZ1VHSu_npG8ExfWwcPD7rkZkyRQ@mail.gmail.com>
   (https://public-inbox.org/git/CAKKM46tHq13XiW5C8sux3=PZ1VHSu_npG8ExfWwcPD7rkZkyRQ@mail.gmail.com/)
3. https://github.com/cr-marcstevens/sha1collisiondetection/pull/34

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agostrbuf: change an always NULL/"" strbuf_addftime() param to bool
Ævar Arnfjörð Bjarmason [Sat, 1 Jul 2017 13:15:47 +0000 (13:15 +0000)]
strbuf: change an always NULL/"" strbuf_addftime() param to bool

strbuf_addftime() allows callers to pass a time zone name for
expanding %Z. The only current caller either passes the empty string
or NULL, in which case %Z is handed over verbatim to strftime(3).
Replace that string parameter with a flag controlling whether to
remove %Z from the format specification. This simplifies the code.

Commit-message-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoapply: use starts_with() in gitdiff_verify_name()
René Scharfe [Sat, 1 Jul 2017 09:10:07 +0000 (11:10 +0200)]
apply: use starts_with() in gitdiff_verify_name()

Avoid running over the end of line -- a C string whose length is not
known to this function -- by using starts_with() instead of memcmp(3)
for checking if it starts with "/dev/null".  Also simply include the
newline in the string constant to compare against.  Drop a comment that
just states the obvious.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>