git/git.git
2 years agoMerge branch 'jc/how-to-document-api' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:58:03 +0000 (22:58 +0900)]
Merge branch 'jc/how-to-document-api' into maint

Doc update.

* jc/how-to-document-api:
  CodingGuidelines: document the API in *.h files

2 years agoMerge branch 'mw/doc-typofixes' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:58:03 +0000 (22:58 +0900)]
Merge branch 'mw/doc-typofixes' into maint

Typofixes.

* mw/doc-typofixes:
  docs: typo: s/isimilar/similar/
  docs: graph: remove unnecessary `graph_update()' call
  docs: typo: s/go/to/

2 years agoMerge branch 'rs/sequencer-oidset-insert-avoids-dups' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:58:02 +0000 (22:58 +0900)]
Merge branch 'rs/sequencer-oidset-insert-avoids-dups' into maint

Code clean-up.

* rs/sequencer-oidset-insert-avoids-dups:
  sequencer: use return value of oidset_insert()

2 years agoMerge branch 'ma/mailing-list-address-in-git-help' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:58:02 +0000 (22:58 +0900)]
Merge branch 'ma/mailing-list-address-in-git-help' into maint

Doc update.

* ma/mailing-list-address-in-git-help:
  git doc: direct bug reporters to mailing list archive

2 years agoMerge branch 'nd/packobjectshook-doc-fix' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:58:01 +0000 (22:58 +0900)]
Merge branch 'nd/packobjectshook-doc-fix' into maint

Doc update.

* nd/packobjectshook-doc-fix:
  config.txt: correct the note about uploadpack.packObjectsHook

2 years agoMerge branch 'ma/t1400-undebug-test' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:58:01 +0000 (22:58 +0900)]
Merge branch 'ma/t1400-undebug-test' into maint

Test fix.

* ma/t1400-undebug-test:
  t1400: drop debug `echo` to actually execute `test`

2 years agoMerge branch 'ma/commit-graph-docs' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:58:00 +0000 (22:58 +0900)]
Merge branch 'ma/commit-graph-docs' into maint

Doc update.

* ma/commit-graph-docs:
  Doc: refer to the "commit-graph file" with dash
  git-commit-graph.txt: refer to "*commit*-graph file"
  git-commit-graph.txt: typeset more in monospace
  git-commit-graph.txt: fix bullet lists

2 years agoMerge branch 'dz/credential-doc-url-matching-rules' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:58:00 +0000 (22:58 +0900)]
Merge branch 'dz/credential-doc-url-matching-rules' into maint

Doc update.

* dz/credential-doc-url-matching-rules:
  doc: clarify gitcredentials path component matching

2 years agoMerge branch 'jk/check-everything-connected-is-long-gone' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:59 +0000 (22:57 +0900)]
Merge branch 'jk/check-everything-connected-is-long-gone' into maint

Comment fix.

* jk/check-everything-connected-is-long-gone:
  receive-pack: update comment with check_everything_connected

2 years agoMerge branch 'fe/doc-updates' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:58 +0000 (22:57 +0900)]
Merge branch 'fe/doc-updates' into maint

Doc updates.

* fe/doc-updates:
  git-describe.1: clarify that "human readable" is also git-readable
  git-column.1: clarify initial description, provide examples
  git-archimport.1: specify what kind of Arch we're talking about

2 years agoMerge branch 'tg/t5551-with-curl-7.61.1' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:58 +0000 (22:57 +0900)]
Merge branch 'tg/t5551-with-curl-7.61.1' into maint

Test update.
Supersedes tz/t5551-with-curl-7.61.1 topic

* tg/t5551-with-curl-7.61.1:
  t5551: compare sorted cookies files
  t5551: move setup code inside test_expect blocks

2 years agoMerge branch 'tq/refs-internal-comment-fix' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:58 +0000 (22:57 +0900)]
Merge branch 'tq/refs-internal-comment-fix' into maint

Fix for typo in a sample code in comment.

* tq/refs-internal-comment-fix:
  refs: docstring typo

2 years agoMerge branch 'sg/split-index-test' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:57 +0000 (22:57 +0900)]
Merge branch 'sg/split-index-test' into maint

Test updates.

* sg/split-index-test:
  t0090: disable GIT_TEST_SPLIT_INDEX for the test checking split index
  t1700-split-index: drop unnecessary 'grep'

2 years agoMerge branch 'bw/protocol-v2' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:57 +0000 (22:57 +0900)]
Merge branch 'bw/protocol-v2' into maint

Doc fix.

* bw/protocol-v2:
  config: document value 2 for protocol.version

2 years agoMerge branch 'sb/string-list-remove-unused' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:56 +0000 (22:57 +0900)]
Merge branch 'sb/string-list-remove-unused' into maint

Code clean-up.

* sb/string-list-remove-unused:
  string-list: remove unused function print_string_list

2 years agoMerge branch 'jk/dev-build-format-security' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:56 +0000 (22:57 +0900)]
Merge branch 'jk/dev-build-format-security' into maint

Build tweak to help developers.

* jk/dev-build-format-security:
  config.mak.dev: add -Wformat-security

2 years agoMerge branch 'sg/t3701-tighten-trace' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:55 +0000 (22:57 +0900)]
Merge branch 'sg/t3701-tighten-trace' into maint

Test update.

* sg/t3701-tighten-trace:
  t3701-add-interactive: tighten the check of trace output

2 years agoMerge branch 'en/double-semicolon-fix' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:54 +0000 (22:57 +0900)]
Merge branch 'en/double-semicolon-fix' into maint

Code clean-up.

* en/double-semicolon-fix:
  Remove superfluous trailing semicolons

2 years agoMerge branch 'tb/void-check-attr' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:54 +0000 (22:57 +0900)]
Merge branch 'tb/void-check-attr' into maint

Code clean-up.

* tb/void-check-attr:
  Make git_check_attr() a void function

2 years agoMerge branch 'sg/doc-trace-appends' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:54 +0000 (22:57 +0900)]
Merge branch 'sg/doc-trace-appends' into maint

Docfix.

* sg/doc-trace-appends:
  Documentation/git.txt: clarify that GIT_TRACE=/path appends

2 years agoMerge branch 'tg/conflict-marker-size' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:53 +0000 (22:57 +0900)]
Merge branch 'tg/conflict-marker-size' into maint

Developer aid.

* tg/conflict-marker-size:
  .gitattributes: add conflict-marker-size for relevant files

2 years agoMerge branch 'ts/doc-build-manpage-xsl-quietly' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:53 +0000 (22:57 +0900)]
Merge branch 'ts/doc-build-manpage-xsl-quietly' into maint

Build tweak.

* ts/doc-build-manpage-xsl-quietly:
  Documentation/Makefile: make manpage-base-url.xsl generation quieter

2 years agoMerge branch 'jk/detect-truncated-zlib-input' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:52 +0000 (22:57 +0900)]
Merge branch 'jk/detect-truncated-zlib-input' into maint

A regression in Git 2.12 era made "git fsck" fall into an infinite
loop while processing truncated loose objects.

* jk/detect-truncated-zlib-input:
  cat-file: handle streaming failures consistently
  check_stream_sha1(): handle input underflow
  t1450: check large blob in trailing-garbage test

2 years agoMerge branch 'sg/test-verbose-log' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:52 +0000 (22:57 +0900)]
Merge branch 'sg/test-verbose-log' into maint

Our test scripts can now take the '-V' option as a synonym for the
'--verbose-log' option.

* sg/test-verbose-log:
  test-lib: introduce the '-V' short option for '--verbose-log'

2 years agoMerge branch 'ss/travis-ci-force-vm-mode' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:52 +0000 (22:57 +0900)]
Merge branch 'ss/travis-ci-force-vm-mode' into maint

The "container" mode of TravisCI is going away.  Our .travis.yml
file is getting prepared for the transition.

* ss/travis-ci-force-vm-mode:
  travis-ci: no longer use containers

2 years agoMerge branch 'md/exclude-promisor-objects-fix' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:52 +0000 (22:57 +0900)]
Merge branch 'md/exclude-promisor-objects-fix' into maint

Operations on promisor objects make sense in the context of only a
small subset of the commands that internally use the revisions
machinery, but the "--exclude-promisor-objects" option were taken
and led to nonsense results by commands like "log", to which it
didn't make much sense.  This has been corrected.

* md/exclude-promisor-objects-fix:
  exclude-promisor-objects: declare when option is allowed
  Documentation/git-log.txt: do not show --exclude-promisor-objects

2 years agoMerge branch 'js/shallow-and-fetch-prune' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:51 +0000 (22:57 +0900)]
Merge branch 'js/shallow-and-fetch-prune' into maint

"git repack" in a shallow clone did not correctly update the
shallow points in the repository, leading to a repository that
does not pass fsck.

* js/shallow-and-fetch-prune:
  repack -ad: prune the list of shallow commits
  shallow: offer to prune only non-existing entries
  repack: point out a bug handling stale shallow info

2 years agoMerge branch 'jc/receive-deny-current-branch-fix' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:51 +0000 (22:57 +0900)]
Merge branch 'jc/receive-deny-current-branch-fix' into maint

The receive.denyCurrentBranch=updateInstead codepath kicked in even
when the push should have been rejected due to other reasons, such
as it does not fast-forward or the update-hook rejects it, which
has been corrected.

* jc/receive-deny-current-branch-fix:
  receive: denyCurrentBranch=updateinstead should not blindly update

2 years agoMerge branch 'js/diff-notice-has-drive-prefix' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:50 +0000 (22:57 +0900)]
Merge branch 'js/diff-notice-has-drive-prefix' into maint

Under certain circumstances, "git diff D:/a/b/c D:/a/b/d" on
Windows would strip initial parts from the paths because they
were not recognized as absolute, which has been corrected.

* js/diff-notice-has-drive-prefix:
  diff: don't attempt to strip prefix from absolute Windows paths

2 years agoMerge branch 'js/pack-objects-mutex-init-fix' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:50 +0000 (22:57 +0900)]
Merge branch 'js/pack-objects-mutex-init-fix' into maint

A mutex used in "git pack-objects" were not correctly initialized
and this caused "git repack" to dump core on Windows.

* js/pack-objects-mutex-init-fix:
  pack-objects (mingw): initialize `packing_data` mutex in the correct spot
  pack-objects (mingw): demonstrate a segmentation fault with large deltas
  pack-objects: fix typo 'detla' -> 'delta'

2 years agoMerge branch 'jk/run-command-notdot' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:50 +0000 (22:57 +0900)]
Merge branch 'jk/run-command-notdot' into maint

The implementation of run_command() API on the UNIX platforms had a
bug that caused a command not on $PATH to be found in the current
directory.

* jk/run-command-notdot:
  run-command: mark path lookup errors with ENOENT

2 years agoMerge branch 'np/log-graph-octopus-fix' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:49 +0000 (22:57 +0900)]
Merge branch 'np/log-graph-octopus-fix' into maint

"git log --graph" showing an octopus merge sometimes miscounted the
number of display columns it is consuming to show the merge and its
parent commits, which has been corrected.

* np/log-graph-octopus-fix:
  log: fix coloring of certain octopus merge shapes

2 years agoMerge branch 'sg/split-index-racefix' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:48 +0000 (22:57 +0900)]
Merge branch 'sg/split-index-racefix' into maint

The codepath to support the experimental split-index mode had
remaining "racily clean" issues fixed.

* sg/split-index-racefix:
  split-index: BUG() when cache entry refers to non-existing shared entry
  split-index: smudge and add racily clean cache entries to split index
  split-index: don't compare cached data of entries already marked for split index
  split-index: count the number of deleted entries
  t1700-split-index: date back files to avoid racy situations
  split-index: add tests to demonstrate the racy split index problem
  t1700-split-index: document why FSMONITOR is disabled in this test script

2 years agoMerge branch 'jt/non-blob-lazy-fetch' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:48 +0000 (22:57 +0900)]
Merge branch 'jt/non-blob-lazy-fetch' into maint

A partial clone that is configured to lazily fetch missing objects
will on-demand issue a "git fetch" request to the originating
repository to fill not-yet-obtained objects.  The request has been
optimized for requesting a tree object (and not the leaf blob
objects contained in it) by telling the originating repository that
no blobs are needed.

* jt/non-blob-lazy-fetch:
  fetch-pack: exclude blobs when lazy-fetching trees
  fetch-pack: avoid object flags if no_dependents

2 years agoMerge branch 'sm/show-superproject-while-conflicted' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:48 +0000 (22:57 +0900)]
Merge branch 'sm/show-superproject-while-conflicted' into maint

A corner-case bugfix.

* sm/show-superproject-while-conflicted:
  rev-parse: --show-superproject-working-tree should work during a merge

2 years agoMerge branch 'en/status-multiple-renames-to-the-same-target-fix' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:48 +0000 (22:57 +0900)]
Merge branch 'en/status-multiple-renames-to-the-same-target-fix' into maint

The code in "git status" sometimes hit an assertion failure.  This
was caused by a structure that was reused without cleaning the data
used for the first run, which has been corrected.

* en/status-multiple-renames-to-the-same-target-fix:
  commit: fix erroneous BUG, 'multiple renames on the same target? how?'

2 years agoMerge branch 'jn/mailmap-update' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:47 +0000 (22:57 +0900)]
Merge branch 'jn/mailmap-update' into maint

The mailmap file update.

* jn/mailmap-update:
  mailmap: consistently normalize brian m. carlson's name

2 years agoMerge branch 'ds/commit-graph-with-grafts' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:47 +0000 (22:57 +0900)]
Merge branch 'ds/commit-graph-with-grafts' into maint

The recently introduced commit-graph auxiliary data is incompatible
with mechanisms such as replace & grafts that "breaks" immutable
nature of the object reference relationship.  Disable optimizations
based on its use (and updating existing commit-graph) when these
incompatible features are in use in the repository.

* ds/commit-graph-with-grafts:
  commit-graph: close_commit_graph before shallow walk
  commit-graph: not compatible with uninitialized repo
  commit-graph: not compatible with grafts
  commit-graph: not compatible with replace objects
  test-repository: properly init repo
  commit-graph: update design document
  refs.c: upgrade for_each_replace_ref to be a each_repo_ref_fn callback
  refs.c: migrate internal ref iteration to pass thru repository argument

2 years agoMerge branch 'tg/range-diff-corner-case-fix' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:46 +0000 (22:57 +0900)]
Merge branch 'tg/range-diff-corner-case-fix' into maint

Recently added "range-diff" had a corner-case bug to cause it
segfault, which has been corrected.

* tg/range-diff-corner-case-fix:
  linear-assignment: fix potential out of bounds memory access

2 years agoMerge branch 'en/update-ref-no-deref-stdin' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:46 +0000 (22:57 +0900)]
Merge branch 'en/update-ref-no-deref-stdin' into maint

"git update-ref" learned to make both "--no-deref" and "--stdin"
work at the same time.

* en/update-ref-no-deref-stdin:
  update-ref: allow --no-deref with --stdin
  update-ref: fix type of update_flags variable to match its usage

2 years agoMerge branch 'ms/remote-error-message-update' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:46 +0000 (22:57 +0900)]
Merge branch 'ms/remote-error-message-update' into maint

Update error messages given by "git remote" and make them consistent.

* ms/remote-error-message-update:
  builtin/remote: quote remote name on error to display empty name

2 years agoMerge branch 'jt/lazy-object-fetch-fix' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:45 +0000 (22:57 +0900)]
Merge branch 'jt/lazy-object-fetch-fix' into maint

The code to backfill objects in lazily cloned repository did not
work correctly, which has been corrected.

* jt/lazy-object-fetch-fix:
  fetch-object: set exact_oid when fetching
  fetch-object: unify fetch_object[s] functions

2 years agoMerge branch 'en/sequencer-empty-edit-result-aborts' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:45 +0000 (22:57 +0900)]
Merge branch 'en/sequencer-empty-edit-result-aborts' into maint

"git rebase" etc. in Git 2.19 fails to abort when given an empty
commit log message as result of editing, which has been corrected.

* en/sequencer-empty-edit-result-aborts:
  sequencer: fix --allow-empty-message behavior, make it smarter

2 years agoMerge branch 'nd/attr-pathspec-fix' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:45 +0000 (22:57 +0900)]
Merge branch 'nd/attr-pathspec-fix' into maint

"git add ':(attr:foo)'" is not supported and is supposed to be
rejected while the command line arguments are parsed, but we fail
to reject such a command line upfront.

* nd/attr-pathspec-fix:
  add: do not accept pathspec magic 'attr'

2 years agoMerge branch 'en/rerere-multi-stage-1-fix' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:44 +0000 (22:57 +0900)]
Merge branch 'en/rerere-multi-stage-1-fix' into maint

A corner case bugfix in "git rerere" code.

* en/rerere-multi-stage-1-fix:
  rerere: avoid buffer overrun
  t4200: demonstrate rerere segfault on specially crafted merge

2 years agoMerge branch 'js/mingw-o-append' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:44 +0000 (22:57 +0900)]
Merge branch 'js/mingw-o-append' into maint

Further fix for O_APPEND emulation on Windows

* js/mingw-o-append:
  mingw: fix mingw_open_append to work with named pipes
  t0051: test GIT_TRACE to a windows named pipe

2 years agoMerge branch 'jk/reopen-tempfile-truncate' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:43 +0000 (22:57 +0900)]
Merge branch 'jk/reopen-tempfile-truncate' into maint

Fix for a long-standing bug that leaves the index file corrupt when
it shrinks during a partial commit.

* jk/reopen-tempfile-truncate:
  reopen_tempfile(): truncate opened file

2 years agoMerge branch 'bp/mv-submodules-with-fsmonitor' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:43 +0000 (22:57 +0900)]
Merge branch 'bp/mv-submodules-with-fsmonitor' into maint

When fsmonitor is in use, after operation on submodules updates
.gitmodules, we lost track of the fact that we did so and relied on
stale fsmonitor data.

* bp/mv-submodules-with-fsmonitor:
  git-mv: allow submodules and fsmonitor to work together

2 years agoMerge branch 'js/rebase-i-autosquash-fix' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:42 +0000 (22:57 +0900)]
Merge branch 'js/rebase-i-autosquash-fix' into maint

"git rebase -i" did not clear the state files correctly when a run
of "squash/fixup" is aborted and then the user manually amended the
commit instead, which has been corrected.

* js/rebase-i-autosquash-fix:
  rebase -i: be careful to wrap up fixup/squash chains
  rebase -i --autosquash: demonstrate a problem skipping the last squash

2 years agoMerge branch 'jk/trailer-fixes' into maint
Junio C Hamano [Wed, 21 Nov 2018 13:57:41 +0000 (22:57 +0900)]
Merge branch 'jk/trailer-fixes' into maint

"git interpret-trailers" and its underlying machinery had a buggy
code that attempted to ignore patch text after commit log message,
which triggered in various codepaths that will always get the log
message alone and never get such an input.

* jk/trailer-fixes:
  append_signoff: use size_t for string offsets
  sequencer: ignore "---" divider when parsing trailers
  pretty, ref-filter: format %(trailers) with no_divider option
  interpret-trailers: allow suppressing "---" divider
  interpret-trailers: tighten check for "---" patch boundary
  trailer: pass process_trailer_opts to trailer_info_get()
  trailer: use size_t for iterating trailer list
  trailer: use size_t for string offsets

2 years agoMerge branch 'cc/shared-index-permbits'
Junio C Hamano [Wed, 21 Nov 2018 11:39:03 +0000 (20:39 +0900)]
Merge branch 'cc/shared-index-permbits'

The way .git/index and .git/sharedindex* files were initially
created gave these files different perm bits until they were
adjusted for shared repository settings.  This was made consistent.

* cc/shared-index-permbits:
  read-cache: make the split index obey umask settings

2 years agoMerge branch 'nd/clone-case-smashing-warning'
Junio C Hamano [Wed, 21 Nov 2018 11:39:02 +0000 (20:39 +0900)]
Merge branch 'nd/clone-case-smashing-warning'

Recently added check for case smashing filesystems did not
correctly utilize the cached stat information, leading to false
breakage detected by our test suite, which has been corrected.

* nd/clone-case-smashing-warning:
  clone: fix colliding file detection on APFS

2 years agoMerge branch 'tz/build-tech-midx-doc'
Junio C Hamano [Wed, 21 Nov 2018 11:39:02 +0000 (20:39 +0900)]
Merge branch 'tz/build-tech-midx-doc'

A documentation page that is referred to by other pages was not
built by mistake, which has been corrected.

* tz/build-tech-midx-doc:
  Documentation: build technical/multi-pack-index

2 years agoMerge branch 'jn/eoie-ieot'
Junio C Hamano [Wed, 21 Nov 2018 11:39:02 +0000 (20:39 +0900)]
Merge branch 'jn/eoie-ieot'

As the warning message shown by existing versions of Git for
unknown index extensions is a bit too alarming, two new extensions
are held back and not written by default for the upcoming release.

* jn/eoie-ieot:
  index: make index.threads=true enable ieot and eoie
  ieot: default to not writing IEOT section
  eoie: default to not writing EOIE section

2 years agoMerge branch 'cc/delta-islands'
Junio C Hamano [Wed, 21 Nov 2018 11:39:02 +0000 (20:39 +0900)]
Merge branch 'cc/delta-islands'

A few issues in the implementation of "delta-islands" feature has
been corrected.

* cc/delta-islands:
  pack-objects: fix off-by-one in delta-island tree-depth computation
  pack-objects: zero-initialize tree_depth/layer arrays
  pack-objects: fix tree_depth and layer invariants

2 years agoMerge branch 'js/rebase-am-options-fix'
Junio C Hamano [Wed, 21 Nov 2018 11:39:01 +0000 (20:39 +0900)]
Merge branch 'js/rebase-am-options-fix'

Recently, built-in "rebase" tightened the error checking for a few
options that are passed to underlying "am", but we forgot to make
the matching change to the scripted version, which has been
corrected.

* js/rebase-am-options-fix:
  legacy-rebase: backport -C<n> and --whitespace=<option> checks

2 years agoMerge branch 'js/builtin-rebase-perf-fix-err-fix'
Junio C Hamano [Wed, 21 Nov 2018 11:39:01 +0000 (20:39 +0900)]
Merge branch 'js/builtin-rebase-perf-fix-err-fix'

The object name of the tree reported in a recently added error
message was wrong, which has been corrected.

* js/builtin-rebase-perf-fix-err-fix:
  rebase: warn about the correct tree's OID

2 years agoindex: make index.threads=true enable ieot and eoie
Jonathan Nieder [Tue, 20 Nov 2018 06:14:26 +0000 (22:14 -0800)]
index: make index.threads=true enable ieot and eoie

If a user explicitly sets

[index]
threads = true

to read the index using multiple threads, ensure that index writes
include the offset table by default to make that possible.  This
ensures that the user's intent of turning on threading is respected.

In other words, permit the following configurations:

- index.threads and index.recordOffsetTable unspecified: do not write
  the offset table yet (to avoid alarming the user with "ignoring IEOT
  extension" messages when an older version of Git accesses the
  repository) but do make use of multiple threads to read the index if
  the supporting offset table is present.

  This can also be requested explicitly by setting index.threads=true,
  0, or >1 and index.recordOffsetTable=false.

- index.threads=false or 1: do not write the offset table, and do not
  make use of the offset table.

  One can set index.recordOffsetTable=false as well, to be more
  explicit.

- index.threads=true, 0, or >1 and index.recordOffsetTable unspecified:
  write the offset table and make use of threads at read time.

  This can also be requested by setting index.threads=true, 0, >1, or
  unspecified and index.recordOffsetTable=true.

Fortunately the complication is temporary: once most Git installations
have upgraded to a version with support for the IEOT and EOIE
extensions, we can flip the defaults for index.recordEndOfIndexEntries
and index.recordOffsetTable to true and eliminate the settings.

Helped-by: Ben Peart <benpeart@microsoft.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agoclone: fix colliding file detection on APFS
Nguyễn Thái Ngọc Duy [Tue, 20 Nov 2018 16:28:53 +0000 (17:28 +0100)]
clone: fix colliding file detection on APFS

Commit b878579ae7 (clone: report duplicate entries on case-insensitive
filesystems - 2018-08-17) adds a warning to user when cloning a repo
with case-sensitive file names on a case-insensitive file system. The
"find duplicate file" check was doing by comparing inode number (and
only fall back to fspathcmp() when inode is known to be unreliable
because fspathcmp() can't cover all case folding cases).

The inode check is very simple, and wrong. It compares between a
32-bit number (sd_ino) and potentially a 64-bit number (st_ino). When
an inode is larger than 2^32 (which seems to be the case for APFS), it
will be truncated and stored in sd_ino, but comparing with itself will
fail.

As a result, instead of showing a pair of files that have the same
name, we show just one file (marked before the beginning of the
loop). We fail to find the original one.

The fix could be just a simple type cast (*)

    dup->ce_stat_data.sd_ino == (unsigned int)st->st_ino

but this is no longer a reliable test, there are 4G possible inodes
that can match sd_ino because we only match the lower 32 bits instead
of full 64 bits.

There are two options to go. Either we ignore inode and go with
fspathcmp() on Apple platform. This means we can't do accurate inode
check on HFS anymore, or even on APFS when inode numbers are still
below 2^32.

Or we just to to reduce the odds of matching a wrong file by checking
more attributes, counting mostly on st_size because st_xtime is likely
the same. This patch goes with this direction, hoping that false
positive chances are too small to be seen in practice.

While at there, enable the test on Cygwin (verified working by Ramsay
Jones)

(*) this is also already done inside match_stat_data()

Reported-by: Carlo Arenas <carenas@gmail.com>
Helped-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agoDocumentation: build technical/multi-pack-index
Todd Zullinger [Tue, 20 Nov 2018 18:04:54 +0000 (13:04 -0500)]
Documentation: build technical/multi-pack-index

The git-multi-pack-index doc links to technical/multi-pack-index.html.
Ensure it is built to prevent a broken link.

Signed-off-by: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agopack-objects: fix off-by-one in delta-island tree-depth computation
Jeff King [Tue, 20 Nov 2018 09:50:53 +0000 (04:50 -0500)]
pack-objects: fix off-by-one in delta-island tree-depth computation

When delta-islands are in use, we need to record the deepest path at
which we find each tree and blob. Our loop to do so counts slashes, so
"foo" is depth 0, "foo/bar" is depth 1, and so on.

However, this neglects root trees, which are represented by the empty
string. Those also have depth 0, but are at a layer above "foo". Thus,
"foo" should be 1, "foo/bar" at 2, and so on. We use this depth to
topo-sort the trees in resolve_tree_islands(). As a result, we may fail
to visit a root tree before the sub-trees it contains, and therefore not
correctly pass down the island marks.

That in turn could lead to missing some delta opportunities (objects are
in the same island, but we didn't realize it) or creating unwanted
cross-island deltas (one object is in an island another isn't, but we
don't realize). In practice, it seems to have only a small effect.  Some
experiments on the real-world git/git fork network at GitHub showed an
improvement of only 0.14% in the resulting clone size.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agopack-objects: zero-initialize tree_depth/layer arrays
Jeff King [Tue, 20 Nov 2018 09:48:57 +0000 (04:48 -0500)]
pack-objects: zero-initialize tree_depth/layer arrays

Commit 108f530385 (pack-objects: move tree_depth into 'struct
packing_data', 2018-08-16) started maintaining a tree_depth array that
matches the "objects" array. We extend the array when:

  1. The objects array is extended, in which case we use realloc to
     extend the tree_depth array.

  2. A caller asks to store a tree_depth for object N, and this is the
     first such request; we create the array from scratch and store the
     value for N.

In the latter case, though, we use regular xmalloc(), and the depth
values for any objects besides N is undefined. This happens to not
trigger a bug with the current code, but the reasons are quite subtle:

 - we never ask about the depth for any object with index i < N. This is
   because we store the depth immediately for all trees and blobs. So
   any such "i" must be a non-tree, and therefore we will never need to
   care about its depth (in fact, we really only care about the depth of
   trees).

 - there are no objects at this point with index i > N, because we
   always fill in the depth for a tree immediately after its object
   entry is created (we may still allocate uninitialized depth entries,
   but they'll be initialized by packlist_alloc() when it initializes
   the entry in the "objects" array).

So it works, but only by chance. To be defensive, let's zero the array,
which matches the "unset" values which would be handed out by
oe_tree_depth() already.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agopack-objects: fix tree_depth and layer invariants
Jeff King [Tue, 20 Nov 2018 09:46:38 +0000 (04:46 -0500)]
pack-objects: fix tree_depth and layer invariants

Commit 108f530385 (pack-objects: move tree_depth into 'struct
packing_data', 2018-08-16) dynamically manages a tree_depth array in
packing_data that maintains one of these invariants:

  1. tree_depth is NULL (i.e., the requested options don't require us to
     track tree depths)

  2. tree_depth is non-NULL and has as many entries as the "objects"
     array

We maintain (2) by:

  a. When the objects array grows, grow tree_depth to the same size
     (unless it's NULL, in which case we can leave it).

  b. When a caller asks to set a depth via oe_set_tree_depth(), if
     tree_depth is NULL we allocate it.

But in (b), we use the number of stored objects, _not_ the allocated
size of the objects array. So we can run into a situation like this:

  1. packlist_alloc() needs to store the Nth object, so it grows the
     objects array to M, where M > N.

  2. oe_set_tree_depth() wants to store a depth, so it allocates an
     array of length N. Now we've violated our invariant.

  3. packlist_alloc() needs to store the N+1th object. But it _doesn't_
     grow the objects array, since N <= M still holds. We try to assign
     to tree_depth[N+1], which is out of bounds.

That doesn't happen in our test scripts, because the repositories they
use are so small, but it's easy to trigger by running:

  echo HEAD | git pack-objects --revs --delta-islands --stdout >/dev/null

in any reasonably-sized repo (like git.git).

We can fix it by always growing the array to match pack->nr_alloc, not
pack->nr_objects. Likewise for the "layer" array from fe0ac2fb7f
(pack-objects: move 'layer' into 'struct packing_data', 2018-08-16),
which has the same bug.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agorebase: warn about the correct tree's OID
Johannes Schindelin [Tue, 20 Nov 2018 09:44:33 +0000 (01:44 -0800)]
rebase: warn about the correct tree's OID

This was a simple copy/paste error, and an obvious one at that: if we
cannot fill the tree descriptor, we should show an error message about
*that* tree, not another one.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agoieot: default to not writing IEOT section
Jonathan Nieder [Tue, 20 Nov 2018 06:12:22 +0000 (22:12 -0800)]
ieot: default to not writing IEOT section

As with EOIE, popular versions of Git do not support the new IEOT
extension yet.  When accessing a Git repository written by a more
modern version of Git, they correctly ignore the unrecognized section,
but in the process they loudly warn

ignoring IEOT extension

resulting in confusion for users.  Introduce the index extension more
gently by not writing it yet in this first version with support for
it.  Soon, once sufficiently many users are running a modern version
of Git, we can flip the default so users benefit from this index
extension by default.

Introduce a '[index] recordOffsetTable' configuration variable to
control whether the new index extension is written.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agoeoie: default to not writing EOIE section
Jonathan Nieder [Tue, 20 Nov 2018 06:11:47 +0000 (22:11 -0800)]
eoie: default to not writing EOIE section

Since 3b1d9e04 (eoie: add End of Index Entry (EOIE) extension,
2018-10-10) Git defaults to writing the new EOIE section when writing
out an index file.  Usually that is a good thing because it improves
threaded performance, but when a Git repository is shared with older
versions of Git, it produces a confusing warning:

  $ git status
  ignoring EOIE extension
  HEAD detached at 371ed0defa
  nothing to commit, working tree clean

Let's introduce the new index extension more gently.  First we'll roll
out the new version of Git that understands it, and then once
sufficiently many users are using such a version, we can flip the
default to writing it by default.

Introduce a '[index] recordEndOfIndexEntries' configuration variable
to allow interested users to benefit from this index extension early.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agolegacy-rebase: backport -C<n> and --whitespace=<option> checks
Johannes Schindelin [Tue, 20 Nov 2018 20:02:01 +0000 (12:02 -0800)]
legacy-rebase: backport -C<n> and --whitespace=<option> checks

Since 04519d720114 (rebase: validate -C<n> and --whitespace=<mode>
parameters early, 2018-11-14), the built-in rebase validates the -C and
--whitespace arguments early. As this commit also introduced a
regression test for this, and as a later commit introduced the
GIT_TEST_REBASE_USE_BUILTIN mode to run tests, we now have a
"regression" in the scripted version of `git rebase` on our hands.

Backport the validation to fix this.

Reported-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agotest-lib-functions: make 'test_cmp_rev' more informative on failure
SZEDER Gábor [Mon, 19 Nov 2018 13:28:18 +0000 (14:28 +0100)]
test-lib-functions: make 'test_cmp_rev' more informative on failure

The 'test_cmp_rev' helper is merely a wrapper around 'test_cmp'
checking the output of two 'git rev-parse' commands, which means that
its output on failure is not particularly informative, as it's
basically two OIDs with a bit of extra clutter of the diff header, but
without any indication of which two revisions have caused the failure:

  --- expect.rev  2018-11-17 14:02:11.569747033 +0000
  +++ actual.rev  2018-11-17 14:02:11.569747033 +0000
  @@ -1 +1 @@
  -d79ce1670bdcb76e6d1da2ae095e890ccb326ae9
  +139b20d8e6c5b496de61f033f642d0e3dbff528d

It also pollutes the test repo with these two intermediate files,
though that doesn't seem to cause any complications in our current
tests (meaning that I couldn't find any tests that have to work around
the presence of these files by explicitly removing or ignoring them).

Enhance 'test_cmp_rev' to provide a more useful output on failure with
less clutter:

  error: two revisions point to different objects:
    'HEAD^': d79ce1670bdcb76e6d1da2ae095e890ccb326ae9
    'extra': 139b20d8e6c5b496de61f033f642d0e3dbff528d

Doing so is more convenient when storing the OIDs outputted by 'git
rev-parse' in a local variable each, which, as a bonus, won't pollute
the repository with intermediate files.

While at it, also ensure that 'test_cmp_rev' is invoked with the right
number of parameters, namely two.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agotests: send "bug in the test script" errors to the script's stderr
SZEDER Gábor [Mon, 19 Nov 2018 13:13:26 +0000 (14:13 +0100)]
tests: send "bug in the test script" errors to the script's stderr

Some of the functions in our test library check that they were invoked
properly with conditions like this:

  test "$#" = 2 ||
  error "bug in the test script: not 2 parameters to test-expect-success"

If this particular condition is triggered, then 'error' will abort the
whole test script with a bold red error message [1] right away.

However, under certain circumstances the test script will be aborted
completely silently, namely if:

  - a similar condition in a test helper function like
    'test_line_count' is triggered,
  - which is invoked from the test script's "main" shell [2],
  - and the test script is run manually (i.e. './t1234-foo.sh' as
    opposed to 'make t1234-foo.sh' or 'make test') [3]
  - and without the '--verbose' option,

because the error message is printed from within 'test_eval_', where
standard output is redirected either to /dev/null or to a log file.
The only indication that something is wrong is that not all tests in
the script are executed and at the end of the test script's output
there is no "# passed all N tests" message, which are subtle and can
easily go unnoticed, as I had to experience myself.

Send these "bug in the test script" error messages directly to the
test scripts standard error and thus to the terminal, so those bugs
will be much harder to overlook.  Instead of updating all ~20 such
'error' calls with a redirection, let's add a BUG() function to
'test-lib.sh', wrapping an 'error' call with the proper redirection
and also including the common prefix of those error messages, and
convert all those call sites [4] to use this new BUG() function
instead.

[1] That particular error message from 'test_expect_success' is
    printed in color only when running with or without '--verbose';
    with '--tee' or '--verbose-log' the error is printed without
    color, but it is printed to the terminal nonetheless.

[2] If such a condition is triggered in a subshell of a test, then
    'error' won't be able to abort the whole test script, but only the
    subshell, which in turn causes the test to fail in the usual way,
    indicating loudly and clearly that something is wrong.

[3] Well, 'error' aborts the test script the same way when run
    manually or by 'make' or 'prove', but both 'make' and 'prove' pay
    attention to the test script's exit status, and even a silently
    aborted test script would then trigger those tools' usual
    noticable error messages.

[4] Strictly speaking, not all those 'error' calls need that
    redirection to send their output to the terminal, see e.g.
    'test_expect_success' in the opening example, but I think it's
    better to be consistent.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agoMerge branch 'master' of git://github.com/git-l10n/git-po
Jiang Xin [Tue, 20 Nov 2018 02:07:25 +0000 (10:07 +0800)]
Merge branch 'master' of git://github.com/git-l10n/git-po

2 years agol10n: git.pot: v2.20.0 round 1 (254 new, 27 removed)
Jiang Xin [Tue, 20 Nov 2018 02:06:16 +0000 (10:06 +0800)]
l10n: git.pot: v2.20.0 round 1 (254 new, 27 removed)

Generate po/git.pot from v2.20.0-rc0-23-gbb75be6cb9 for git v2.20.0 l10n
round 1.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2 years agomsvc: directly use MS version (_stricmp) of strcasecmp
Sven Strickroth [Mon, 19 Nov 2018 15:14:42 +0000 (16:14 +0100)]
msvc: directly use MS version (_stricmp) of strcasecmp

This also removes an implicit conversion from size_t (unsigned) to int (signed).

_stricmp as well as _strnicmp are both available since VS2012.

Signed-off-by: Sven Strickroth <email@cs-ware.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agoPrepare for 2.20-rc1
Junio C Hamano [Mon, 19 Nov 2018 07:06:54 +0000 (16:06 +0900)]
Prepare for 2.20-rc1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agoMerge branch 'sb/cocci-pending'
Junio C Hamano [Mon, 19 Nov 2018 07:24:41 +0000 (16:24 +0900)]
Merge branch 'sb/cocci-pending'

A coding convention around the Coccinelle semantic patches to have
two classes to ease code migration process has been proposed and
its support has been added to the Makefile.

* sb/cocci-pending:
  coccicheck: introduce 'pending' semantic patches

2 years agoMerge branch 'js/test-git-installed'
Junio C Hamano [Mon, 19 Nov 2018 07:24:41 +0000 (16:24 +0900)]
Merge branch 'js/test-git-installed'

Update the "test installed Git" mode of our test suite to work better.

* js/test-git-installed:
  tests: explicitly use `git.exe` on Windows
  tests: do not require Git to be built when testing an installed Git
  t/lib-gettext: test installed git-sh-i18n if GIT_TEST_INSTALLED is set
  tests: respect GIT_TEST_INSTALLED when initializing repositories
  tests: fix GIT_TEST_INSTALLED's PATH to include t/helper/

2 years agoMerge branch 'dd/poll-dot-h'
Junio C Hamano [Mon, 19 Nov 2018 07:24:41 +0000 (16:24 +0900)]
Merge branch 'dd/poll-dot-h'

A build update.

* dd/poll-dot-h:
  git-compat-util: prefer poll.h to sys/poll.h

2 years agoMerge branch 'tb/print-size-t-with-uintmax-format'
Junio C Hamano [Mon, 19 Nov 2018 07:24:41 +0000 (16:24 +0900)]
Merge branch 'tb/print-size-t-with-uintmax-format'

Code preparation to replace ulong vars with size_t vars where
appropriate.

* tb/print-size-t-with-uintmax-format:
  Upcast size_t variables to uintmax_t when printing

2 years agoMerge branch 'tb/xcurl-off-t'
Junio C Hamano [Mon, 19 Nov 2018 07:24:40 +0000 (16:24 +0900)]
Merge branch 'tb/xcurl-off-t'

The xcurl_off_t() helper function is used to cast size_t to
curl_off_t, but some compilers gave warnings against the code to
ensure the casting is done without wraparound, when size_t is
narrower than curl_off_t.  This warning has been squelched.

* tb/xcurl-off-t:
  remote-curl.c: xcurl_off_t is not portable (on 32 bit platfoms)

2 years agoMerge branch 'nd/format-patch-cover-letter-stat-width'
Junio C Hamano [Mon, 19 Nov 2018 07:24:40 +0000 (16:24 +0900)]
Merge branch 'nd/format-patch-cover-letter-stat-width'

"git format-patch --stat=<width>" can be used to specify the width
used by the diffstat (shown in the cover letter).

* nd/format-patch-cover-letter-stat-width:
  format-patch: respect --stat in cover letter's diffstat

2 years agoMerge branch 'ds/push-squelch-ambig-warning'
Junio C Hamano [Mon, 19 Nov 2018 07:24:40 +0000 (16:24 +0900)]
Merge branch 'ds/push-squelch-ambig-warning'

"git push" used to check ambiguities between object-names and
refnames while processing the list of refs' old and new values,
which was unnecessary (as it knew that it is feeding raw object
names).  This has been optimized out.

* ds/push-squelch-ambig-warning:
  pack-objects: ignore ambiguous object warnings

2 years agoMerge branch 'ab/dynamic-gettext-poison'
Junio C Hamano [Mon, 19 Nov 2018 07:24:39 +0000 (16:24 +0900)]
Merge branch 'ab/dynamic-gettext-poison'

Our testing framework uses a special i18n "poisoned localization"
feature to find messages that ought to stay constant but are
incorrectly marked to be translated.  This feature has been made
into a runtime option (it used to be a compile-time option).

* ab/dynamic-gettext-poison:
  Makefile: ease dynamic-gettext-poison transition
  i18n: make GETTEXT_POISON a runtime option

2 years agoread-cache: make the split index obey umask settings
Ævar Arnfjörð Bjarmason [Sun, 18 Nov 2018 19:04:29 +0000 (19:04 +0000)]
read-cache: make the split index obey umask settings

Make the split index write out its .git/sharedindex_* files with the
same permissions as .git/index. This only changes the behavior when
core.sharedRepository isn't set, i.e. the user's umask settings will
be respected.

This hasn't been the case ever since the split index was originally
implemented in c18b80a0e8 ("update-index: new options to
enable/disable split index mode", 2014-06-13). A mkstemp()-like
function has always been used to create it. First mkstemp() itself,
and then later our own mkstemp()-like in
f6ecc62dbf ("write_shared_index(): use tempfile module", 2015-08-10)

A related bug was fixed in df801f3f9f ("read-cache: use shared perms
when writing shared index", 2017-06-25). Since then the split index
has respected core.sharedRepository.

However, using that setting should not be required simply to make git
obey the user's umask setting. It's intended for the use-case of
overriding whatever that umask is set to. This fixes cases where the
user has e.g. set his umask to 022 on a shared server in anticipation
of other user's needing to run "status", "log" etc. in his repository.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agoRelNotes: name the release properly
Junio C Hamano [Sun, 18 Nov 2018 23:23:09 +0000 (08:23 +0900)]
RelNotes: name the release properly

In the title, we should state for which version this release notes
document is about.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agoMerge branch 'master' of https://github.com/Softcatala/git-po
Jiang Xin [Sun, 18 Nov 2018 13:36:13 +0000 (21:36 +0800)]
Merge branch 'master' of https://github.com/Softcatala/git-po

2 years agoGit 2.20-rc0 v2.20.0-rc0
Junio C Hamano [Sun, 18 Nov 2018 09:24:49 +0000 (18:24 +0900)]
Git 2.20-rc0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agoMerge branch 'jk/close-duped-fd-before-unlock-for-bundle'
Junio C Hamano [Sun, 18 Nov 2018 09:23:59 +0000 (18:23 +0900)]
Merge branch 'jk/close-duped-fd-before-unlock-for-bundle'

When "git bundle" aborts due to an empty commit ranges
(i.e. resulting in an empty pack), it left a file descriptor to an
lockfile open, which resulted in leftover lockfile on Windows where
you cannot remove a file with an open file descriptor.  This has
been corrected.

* jk/close-duped-fd-before-unlock-for-bundle:
  bundle: dup() output descriptor closer to point-of-use

2 years agoMerge branch 'ab/rebase-in-c-escape-hatch'
Junio C Hamano [Sun, 18 Nov 2018 09:23:59 +0000 (18:23 +0900)]
Merge branch 'ab/rebase-in-c-escape-hatch'

The recently merged "rebase in C" has an escape hatch to use the
scripted version when necessary, but it hasn't been documented,
which has been corrected.

* ab/rebase-in-c-escape-hatch:
  tests: add a special setup where rebase.useBuiltin is off
  rebase doc: document rebase.useBuiltin

2 years agoMerge branch 'js/rebase-am-options'
Junio C Hamano [Sun, 18 Nov 2018 09:23:59 +0000 (18:23 +0900)]
Merge branch 'js/rebase-am-options'

The way "git rebase" parses and forwards the command line options
meant for underlying "git am" has been revamped, which fixed for
options with parameters that were not passed correctly.

* js/rebase-am-options:
  rebase: validate -C<n> and --whitespace=<mode> parameters early
  rebase: really just passthru the `git am` options

2 years agoMerge branch 'sg/ref-filter-wo-repository'
Junio C Hamano [Sun, 18 Nov 2018 09:23:59 +0000 (18:23 +0900)]
Merge branch 'sg/ref-filter-wo-repository'

"git ls-remote --sort=<thing>" can feed an object that is not yet
available into the comparison machinery and segfault, which has
been corrected to check such a request upfront and reject it.

* sg/ref-filter-wo-repository:
  ref-filter: don't look for objects when outside of a repository

2 years agoMerge branch 'nd/doc-extensions'
Junio C Hamano [Sun, 18 Nov 2018 09:23:58 +0000 (18:23 +0900)]
Merge branch 'nd/doc-extensions'

Doc update.

* nd/doc-extensions:
  doc: move extensions.worktreeConfig to the right place

2 years agoMerge branch 'js/fuzz-cxxflags'
Junio C Hamano [Sun, 18 Nov 2018 09:23:58 +0000 (18:23 +0900)]
Merge branch 'js/fuzz-cxxflags'

The build procedure to link for fuzzing test has been made
customizable with a new Makefile variable.

* js/fuzz-cxxflags:
  Makefile: use FUZZ_CXXFLAGS for linking fuzzers

2 years agoMerge branch 'js/mingw-msdn-url'
Junio C Hamano [Sun, 18 Nov 2018 09:23:58 +0000 (18:23 +0900)]
Merge branch 'js/mingw-msdn-url'

The URL to an MSDN page in a comment has been updated.

* js/mingw-msdn-url:
  mingw: replace an obsolete link with the superseding one

2 years agoMerge branch 'js/mingw-create-hard-link'
Junio C Hamano [Sun, 18 Nov 2018 09:23:58 +0000 (18:23 +0900)]
Merge branch 'js/mingw-create-hard-link'

Windows update.

* js/mingw-create-hard-link:
  mingw: use `CreateHardLink()` directly

2 years agoMerge branch 'js/config-sequence'
Junio C Hamano [Sun, 18 Nov 2018 09:23:57 +0000 (18:23 +0900)]
Merge branch 'js/config-sequence'

A sanity check for start-up sequence has been added in the config
API codepath.

* js/config-sequence:
  config: report a bug if git_dir exists without commondir

2 years agoMerge branch 'lj/mingw-pthread-cond'
Junio C Hamano [Sun, 18 Nov 2018 09:23:57 +0000 (18:23 +0900)]
Merge branch 'lj/mingw-pthread-cond'

Code simplification.

* lj/mingw-pthread-cond:
  win32: replace pthread_cond_*() with much simpler code

2 years agoMerge branch 'nd/command-list-gen-fix'
Junio C Hamano [Sun, 18 Nov 2018 09:23:57 +0000 (18:23 +0900)]
Merge branch 'nd/command-list-gen-fix'

Build tweak.

* nd/command-list-gen-fix:
  build: fix broken command-list.h generation with core.autocrlf

2 years agoMerge branch 'ag/p3400-force-checkout'
Junio C Hamano [Sun, 18 Nov 2018 09:23:57 +0000 (18:23 +0900)]
Merge branch 'ag/p3400-force-checkout'

Perf test tweak.

* ag/p3400-force-checkout:
  p3400: replace calls to `git checkout -b' by `git checkout -B'

2 years agoMerge branch 'cb/notes-freeing-always-null-fix'
Junio C Hamano [Sun, 18 Nov 2018 09:23:57 +0000 (18:23 +0900)]
Merge branch 'cb/notes-freeing-always-null-fix'

Code cleanup.

* cb/notes-freeing-always-null-fix:
  builtin/notes: remove unnecessary free

2 years agoMerge branch 'js/rebase-r-and-merge-head'
Junio C Hamano [Sun, 18 Nov 2018 09:23:56 +0000 (18:23 +0900)]
Merge branch 'js/rebase-r-and-merge-head'

Bugfix for the recently graduated "git rebase --rebase-merges".

* js/rebase-r-and-merge-head:
  status: rebase and merge can be in progress at the same time
  built-in rebase --skip/--abort: clean up stale .git/<name> files
  rebase -i: include MERGE_HEAD into files to clean up
  rebase -r: do not write MERGE_HEAD unless needed
  rebase -r: demonstrate bug with conflicting merges

2 years agoMerge branch 'js/apply-recount-allow-noop'
Junio C Hamano [Sun, 18 Nov 2018 09:23:56 +0000 (18:23 +0900)]
Merge branch 'js/apply-recount-allow-noop'

When editing a patch in a "git add -i" session, a hunk could be
made to no-op.  The "git apply" program used to reject a patch with
such a no-op hunk to catch user mistakes, but it is now updated to
explicitly allow a no-op hunk in an edited patch.

* js/apply-recount-allow-noop:
  apply --recount: allow "no-op hunks"