git.git
5 years agogit-p4: use python3's input() everywhere
Yang Zhao [Fri, 13 Dec 2019 23:52:47 +0000 (15:52 -0800)]
git-p4: use python3's input() everywhere

Python3 deprecates raw_input() from 2.7 and replaced it with input().
Since we do not need 2.7's input() semantics, `raw_input()` is aliased
to `input()` for easy forward compatability.

Signed-off-by: Yang Zhao <redacted>
Signed-off-by: Junio C Hamano <redacted>
5 years agogit-p4: simplify regex pattern generation for parsing diff-tree
Yang Zhao [Fri, 13 Dec 2019 23:52:46 +0000 (15:52 -0800)]
git-p4: simplify regex pattern generation for parsing diff-tree

It is not clear why a generator was used to create the regex used to
parse git-diff-tree output; I assume an early implementation required
it, but is not part of the mainline change.

Simply use a lazily initialized global instead.

Signed-off-by: Yang Zhao <redacted>
Reviewed-by: Ben Keene <redacted>
Signed-off-by: Junio C Hamano <redacted>
5 years agogit-p4: use dict.items() iteration for python3 compatibility
Yang Zhao [Fri, 13 Dec 2019 23:52:45 +0000 (15:52 -0800)]
git-p4: use dict.items() iteration for python3 compatibility

Python3 uses dict.items() instead of .iteritems() to provide
iteratoration over dict.  Although items() is technically less efficient
for python2.7 (allocates a new list instead of simply iterating), the
amount of data involved is very small and the penalty negligible.

Signed-off-by: Yang Zhao <redacted>
Reviewed-by: Ben Keene <redacted>
Signed-off-by: Junio C Hamano <redacted>
5 years agogit-p4: use functools.reduce instead of reduce
Yang Zhao [Fri, 13 Dec 2019 23:52:44 +0000 (15:52 -0800)]
git-p4: use functools.reduce instead of reduce

For python3, reduce() has been moved to functools.reduce().  This is
also available in python2.7.

Signed-off-by: Yang Zhao <redacted>
Signed-off-by: Junio C Hamano <redacted>
5 years agogit-p4: fix freezing while waiting for fast-import progress
Yang Zhao [Fri, 13 Dec 2019 23:52:43 +0000 (15:52 -0800)]
git-p4: fix freezing while waiting for fast-import progress

As part of its importing process, git-p4 sends a `checkpoint` followed
immediately by `progress` to fast-import to force synchronization.
Due to buffering, it is possible for the `progress` command to not be
flushed before git-p4 begins to wait for the corresponding response.
This causes the script to freeze completely, and is consistently
observable at least on python-3.6.9.

Make sure this command sequence is completely flushed before waiting.

Signed-off-by: Yang Zhao <redacted>
Reviewed-by: Ben Keene <redacted>
Signed-off-by: Junio C Hamano <redacted>
5 years agogit-p4: use marshal format version 2 when sending to p4
Yang Zhao [Fri, 13 Dec 2019 23:52:42 +0000 (15:52 -0800)]
git-p4: use marshal format version 2 when sending to p4

p4 does not appear to understand marshal format version 3 and above.
Version 2 was the latest supported by python-2.7.

Signed-off-by: Yang Zhao <redacted>
Reviewed-by: Ben Keene <redacted>
Signed-off-by: Junio C Hamano <redacted>
5 years agogit-p4: open .gitp4-usercache.txt in text mode
Yang Zhao [Fri, 13 Dec 2019 23:52:41 +0000 (15:52 -0800)]
git-p4: open .gitp4-usercache.txt in text mode

Opening .gitp4-usercache.txt in text mode makes python 3 happy without
explicitly adding encoding and decoding.

Signed-off-by: Yang Zhao <redacted>
Reviewed-by: Ben Keene <redacted>
Signed-off-by: Junio C Hamano <redacted>
5 years agogit-p4: convert path to unicode before processing them
Yang Zhao [Fri, 13 Dec 2019 23:52:40 +0000 (15:52 -0800)]
git-p4: convert path to unicode before processing them

P4 allows essentially arbitrary encoding for path data while we would
perfer to be dealing only with unicode strings.  Since path data need to
survive round-trip back to p4, this patch implements the general policy
that we store path data as-is, but decode them to unicode before doing
any non-trivial processing.

A new `decode_path()` method is provided that generally does the correct
conversion, taking into account `git-p4.pathEncoding` configuration.

For python2.7, path strings will be left as-is if it only contains ASCII
characters.

For python3, decoding is always done so that we have str objects.

Signed-off-by: Yang Zhao <redacted>
Reviewed-by: Ben Keene <redacted>
Signed-off-by: Junio C Hamano <redacted>
5 years agogit-p4: encode/decode communication with git for python3
Yang Zhao [Fri, 13 Dec 2019 23:52:39 +0000 (15:52 -0800)]
git-p4: encode/decode communication with git for python3

Under python3, calls to write() on the stream to `git fast-import` must
be encoded.  This patch wraps the IO object such that this encoding is
done transparently.

Conversely, any text data read from subprocesses must also be decoded
before running through the rest of the pipeline.

Signed-off-by: Yang Zhao <redacted>
Reviewed-by: Ben Keene <redacted>
Signed-off-by: Junio C Hamano <redacted>
5 years agogit-p4: encode/decode communication with p4 for python3
Yang Zhao [Fri, 13 Dec 2019 23:52:38 +0000 (15:52 -0800)]
git-p4: encode/decode communication with p4 for python3

The marshalled dict in the response given on STDOUT by p4 uses `str` for
keys and string values. When run using python3, these values are
deserialized as `bytes`, leading to a whole host of problems as the rest
of the code assumes `str` is used throughout.

This patch changes the deserialization behaviour such that, as much as
possible, text output from p4 is decoded to native unicode strings.
Exceptions are made for the field `data` as it is usually arbitrary
binary data. `depotFile[0-9]*`, `path`, and `clientFile` are also exempt
as they contain path strings not encoded with UTF-8, and must survive
round-trip back to p4.

Conversely, text data being piped to p4 must always be encoded when
running under python3.

encode_text_stream() and decode_text_stream() were added to make these
transformations more convenient.

Signed-off-by: Yang Zhao <redacted>
Signed-off-by: Junio C Hamano <redacted>
5 years agogit-p4: remove string type aliasing
Yang Zhao [Fri, 13 Dec 2019 23:52:37 +0000 (15:52 -0800)]
git-p4: remove string type aliasing

Now that python2.7 is the minimum required version and we no longer use
the basestring type, it is not necessary to use type aliasing to ensure
python3 compatibility.

Signed-off-by: Yang Zhao <redacted>
Signed-off-by: Junio C Hamano <redacted>
5 years agogit-p4: change the expansion test from basestring to list
Ben Keene [Fri, 13 Dec 2019 23:52:36 +0000 (15:52 -0800)]
git-p4: change the expansion test from basestring to list

Python 3 handles strings differently than Python 2.7. Since Python 2
is reaching it's end of life, a series of changes are being submitted to
enable python 3.5 and following support. The current code fails basic
tests under python 3.5.

Some codepaths can represent a command line the program
internally prepares to execute either as a single string
(i.e. each token properly quoted, concatenated with $IFS) or
as a list of argv[] elements, and there are 9 places where
we say "if X is isinstance(_, basestring), then do this
thing to handle X as a command line in a single string; if
not, X is a command line in a list form".

This does not work well with Python 3, as there is no
basestring (everything is Unicode now), and even with Python
2, it was not an ideal way to tell the two cases apart,
because an internally formed command line could have been in
a single Unicode string.

Flip the check to say "if X is not a list, then handle X as
a command line in a single string; otherwise treat it as a
command line in a list form".

This will get rid of references to 'basestring', to migrate
the code ready for Python 3.

Thanks-to: Junio C Hamano <redacted>
Signed-off-by: Ben Keene <redacted>
Signed-off-by: Yang Zhao <redacted>
Signed-off-by: Junio C Hamano <redacted>
5 years agogit-p4: make python2.7 the oldest supported version
Yang Zhao [Fri, 13 Dec 2019 23:52:35 +0000 (15:52 -0800)]
git-p4: make python2.7 the oldest supported version

Python2.6 and earlier have been end-of-life'd for many years now, and
we actually already use 2.7-only features in the code. Make the version
check reflect current realities.

This also removes the need to explicitly define CalledProcessError if
it's not available.

Signed-off-by: Yang Zhao <redacted>
Signed-off-by: Junio C Hamano <redacted>
6 years agoThe fourth batch
Junio C Hamano [Fri, 6 Dec 2019 23:10:00 +0000 (15:10 -0800)]
The fourth batch

Signed-off-by: Junio C Hamano <redacted>
6 years agoMerge branch 'dl/lore-is-the-archive'
Junio C Hamano [Fri, 6 Dec 2019 23:09:24 +0000 (15:09 -0800)]
Merge branch 'dl/lore-is-the-archive'

Publicize lore.kernel.org mailing list archive and use URLs
pointing into it to refer to notable messages in the documentation.

* dl/lore-is-the-archive:
  doc: replace LKML link with lore.kernel.org
  RelNotes: replace Gmane with real Message-IDs
  doc: replace MARC links with lore.kernel.org

6 years agoMerge branch 'jk/lore-is-the-archive'
Junio C Hamano [Fri, 6 Dec 2019 23:09:23 +0000 (15:09 -0800)]
Merge branch 'jk/lore-is-the-archive'

Doc update for the mailing list archiving and nntp service.

* jk/lore-is-the-archive:
  doc: replace public-inbox links with lore.kernel.org
  doc: recommend lore.kernel.org over public-inbox.org

6 years agoMerge branch 'tg/perf-remove-stale-result'
Junio C Hamano [Fri, 6 Dec 2019 23:09:23 +0000 (15:09 -0800)]
Merge branch 'tg/perf-remove-stale-result'

PerfTest fix to avoid stale result mixed up with the latest round
of test results.

* tg/perf-remove-stale-result:
  perf-lib: use a single filename for all measurement types

6 years agoMerge branch 'jk/send-pack-check-negative-with-quick'
Junio C Hamano [Fri, 6 Dec 2019 23:09:22 +0000 (15:09 -0800)]
Merge branch 'jk/send-pack-check-negative-with-quick'

Performance tweak on "git push" into a repository with many refs
that point at objects we have never heard of.

* jk/send-pack-check-negative-with-quick:
  send-pack: use OBJECT_INFO_QUICK to check negative objects

6 years agoMerge branch 'hi/grep-do-not-return-void'
Junio C Hamano [Fri, 6 Dec 2019 23:09:22 +0000 (15:09 -0800)]
Merge branch 'hi/grep-do-not-return-void'

Code cleanup.

* hi/grep-do-not-return-void:
  grep: don't return an expression from pcre2_free()

6 years agoMerge branch 'rs/use-skip-prefix-more'
Junio C Hamano [Fri, 6 Dec 2019 23:09:22 +0000 (15:09 -0800)]
Merge branch 'rs/use-skip-prefix-more'

Code cleanup.

* rs/use-skip-prefix-more:
  name-rev: use skip_prefix() instead of starts_with()
  push: use skip_prefix() instead of starts_with()
  shell: use skip_prefix() instead of starts_with()
  fmt-merge-msg: use skip_prefix() instead of starts_with()
  fetch: use skip_prefix() instead of starts_with()

6 years agoMerge branch 'rs/simplify-prepare-cmd'
Junio C Hamano [Fri, 6 Dec 2019 23:09:22 +0000 (15:09 -0800)]
Merge branch 'rs/simplify-prepare-cmd'

Code cleanup.

* rs/simplify-prepare-cmd:
  run-command: use prepare_git_cmd() in prepare_cmd()

6 years agoMerge branch 'rs/test-cleanup'
Junio C Hamano [Fri, 6 Dec 2019 23:09:22 +0000 (15:09 -0800)]
Merge branch 'rs/test-cleanup'

Test cleanup.

* rs/test-cleanup:
  t7811: don't create unused file
  t9300: don't create unused file
  test: use test_must_be_empty F instead of test_cmp empty F
  test: use test_must_be_empty F instead of test -z $(cat F)
  t1400: use test_must_be_empty
  t1410: use test_line_count
  t1512: use test_line_count

6 years agoMerge branch 'sg/assume-no-todo-update-in-cherry-pick'
Junio C Hamano [Fri, 6 Dec 2019 23:09:21 +0000 (15:09 -0800)]
Merge branch 'sg/assume-no-todo-update-in-cherry-pick'

While running "revert" or "cherry-pick --edit" for multiple
commits, a recent regression incorrectly detected "nothing to
commit, working tree clean", instead of replaying the commits,
which has been corrected.

* sg/assume-no-todo-update-in-cherry-pick:
  sequencer: don't re-read todo for revert and cherry-pick

6 years agoMerge branch 'sg/osx-force-gcc-9'
Junio C Hamano [Fri, 6 Dec 2019 23:09:21 +0000 (15:09 -0800)]
Merge branch 'sg/osx-force-gcc-9'

TravisCI update.

* sg/osx-force-gcc-9:
  ci: build Git with GCC 9 in the 'osx-gcc' build job

6 years agoThe third batch
Junio C Hamano [Thu, 5 Dec 2019 20:43:59 +0000 (12:43 -0800)]
The third batch

Signed-off-by: Junio C Hamano <redacted>
6 years agoMerge branch 'js/pkt-line-h-typofix'
Junio C Hamano [Thu, 5 Dec 2019 20:52:49 +0000 (12:52 -0800)]
Merge branch 'js/pkt-line-h-typofix'

Typofix.

* js/pkt-line-h-typofix:
  pkt-line: fix a typo

6 years agoMerge branch 'us/unpack-trees-fsmonitor'
Junio C Hamano [Thu, 5 Dec 2019 20:52:48 +0000 (12:52 -0800)]
Merge branch 'us/unpack-trees-fsmonitor'

Users of oneway_merge() (like "reset --hard") learned to take
advantage of fsmonitor to avoid unnecessary lstat(2) calls.

* us/unpack-trees-fsmonitor:
  unpack-trees: skip stat on fsmonitor-valid files

6 years agoMerge branch 'sg/test-bool-env'
Junio C Hamano [Thu, 5 Dec 2019 20:52:48 +0000 (12:52 -0800)]
Merge branch 'sg/test-bool-env'

Recently we have declared that GIT_TEST_* variables take the
usual boolean values (it used to be that some used "non-empty
means true" and taking GIT_TEST_VAR=YesPlease as true); make
sure we notice and fail when non-bool strings are given to
these variables.

* sg/test-bool-env:
  t5608-clone-2gb.sh: turn GIT_TEST_CLONE_2GB into a bool
  tests: add 'test_bool_env' to catch non-bool GIT_TEST_* values

6 years agoMerge branch 'mh/clear-topo-walk-upon-reset'
Junio C Hamano [Thu, 5 Dec 2019 20:52:48 +0000 (12:52 -0800)]
Merge branch 'mh/clear-topo-walk-upon-reset'

The revision walking machinery uses resources like per-object flag
bits that need to be reset before a new iteration of walking
begins, but the resources related to topological walk were not
cleared correctly, which has been corrected.

* mh/clear-topo-walk-upon-reset:
  revision: free topo_walk_info before creating a new one in init_topo_walk
  revision: clear the topo-walk flags in reset_revision_walk

6 years agoMerge branch 'hv/assume-priumax-is-available-anywhere'
Junio C Hamano [Thu, 5 Dec 2019 20:52:47 +0000 (12:52 -0800)]
Merge branch 'hv/assume-priumax-is-available-anywhere'

We have had compatibility fallback macro definitions for "PRIuMAX",
"PRIu32", etc. but did not for "PRIdMAX", while the code used the
last one apparently without any hiccup reported recently.  The
fallback macro definitions for these <inttypes.h> macros that must
appear in C99 systems have been removed.

* hv/assume-priumax-is-available-anywhere:
  git-compat-util.h: drop the `PRIuMAX` and other fallback definitions

6 years agoMerge branch 'mg/submodule-status-from-a-subdirectory'
Junio C Hamano [Thu, 5 Dec 2019 20:52:47 +0000 (12:52 -0800)]
Merge branch 'mg/submodule-status-from-a-subdirectory'

"git submodule status" that is run from a subdirectory of the
superproject did not work well, which has been corrected.

* mg/submodule-status-from-a-subdirectory:
  submodule: fix 'submodule status' when called from a subdirectory

6 years agoMerge branch 'dl/t5520-cleanup'
Junio C Hamano [Thu, 5 Dec 2019 20:52:47 +0000 (12:52 -0800)]
Merge branch 'dl/t5520-cleanup'

Test cleanup.

* dl/t5520-cleanup:
  t5520: replace `! git` with `test_must_fail git`
  t5520: remove redundant lines in test cases
  t5520: replace $(cat ...) comparison with test_cmp
  t5520: don't put git in upstream of pipe
  t5520: test single-line files by git with test_cmp
  t5520: use test_cmp_rev where possible
  t5520: replace test -{n,z} with test-lib functions
  t5520: use test_line_count where possible
  t5520: remove spaces after redirect operator
  t5520: replace test -f with test-lib functions
  t5520: let sed open its own input
  t5520: use sq for test case names
  t5520: improve test style
  t: teach test_cmp_rev to accept ! for not-equals
  t0000: test multiple local assignment

6 years agoMerge branch 'nl/reset-patch-takes-a-tree'
Junio C Hamano [Thu, 5 Dec 2019 20:52:47 +0000 (12:52 -0800)]
Merge branch 'nl/reset-patch-takes-a-tree'

"git reset --patch $object" without any pathspec should allow a
tree object to be given, but incorrectly required a committish,
which has been corrected.

* nl/reset-patch-takes-a-tree:
  reset: parse rev as tree-ish in patch mode

6 years agoMerge branch 'mg/doc-submodule-status-cached'
Junio C Hamano [Thu, 5 Dec 2019 20:52:47 +0000 (12:52 -0800)]
Merge branch 'mg/doc-submodule-status-cached'

"git submodule status" and "git submodule status --cached" show
different things, but the documentation did not cover them
correctly, which has been corrected.

* mg/doc-submodule-status-cached:
  doc: document 'git submodule status --cached'

6 years agoMerge branch 'js/git-svn-use-rebase-merges'
Junio C Hamano [Thu, 5 Dec 2019 20:52:46 +0000 (12:52 -0800)]
Merge branch 'js/git-svn-use-rebase-merges'

Prepare further for "rebase --preserve-merges" deprecation.

* js/git-svn-use-rebase-merges:
  git svn: stop using `rebase --preserve-merges`

6 years agoMerge branch 'hi/gpg-optional-pkfp-fix'
Junio C Hamano [Thu, 5 Dec 2019 20:52:46 +0000 (12:52 -0800)]
Merge branch 'hi/gpg-optional-pkfp-fix'

The code to parse GPG output used to assume incorrectly that the
finterprint for the primary key would always be present for a valid
signature, which has been corrected.

* hi/gpg-optional-pkfp-fix:
  gpg-interface: limit search for primary key fingerprint
  gpg-interface: refactor the free-and-xmemdupz pattern

6 years agoMerge branch 'pw/sequencer-compare-with-right-parent-to-check-empty-commits'
Junio C Hamano [Thu, 5 Dec 2019 20:52:46 +0000 (12:52 -0800)]
Merge branch 'pw/sequencer-compare-with-right-parent-to-check-empty-commits'

The sequencer machinery compared the HEAD and the state it is
attempting to commit to decide if the result would be a no-op
commit, even when amending a commit, which was incorrect, and
has been corrected.

* pw/sequencer-compare-with-right-parent-to-check-empty-commits:
  sequencer: fix empty commit check when amending

6 years agoMerge branch 'jk/fail-show-toplevel-outside-working-tree'
Junio C Hamano [Thu, 5 Dec 2019 20:52:45 +0000 (12:52 -0800)]
Merge branch 'jk/fail-show-toplevel-outside-working-tree'

"git rev-parse --show-toplevel" run outside of any working tree did
not error out, which has been corrected.

* jk/fail-show-toplevel-outside-working-tree:
  rev-parse: make --show-toplevel without a worktree an error

6 years agoMerge branch 'sg/unpack-progress-throughput'
Junio C Hamano [Thu, 5 Dec 2019 20:52:45 +0000 (12:52 -0800)]
Merge branch 'sg/unpack-progress-throughput'

"git unpack-objects" used to show progress based only on the number
of received and unpacked objects, which stalled when it has to
handle an unusually large object.  It now shows the throughput as
well.

* sg/unpack-progress-throughput:
  builtin/unpack-objects.c: show throughput progress

6 years agoMerge branch 'pb/submodule-update-fetches'
Junio C Hamano [Thu, 5 Dec 2019 20:52:45 +0000 (12:52 -0800)]
Merge branch 'pb/submodule-update-fetches'

Doc update.

* pb/submodule-update-fetches:
  doc: mention that 'git submodule update' fetches missing commits

6 years agoMerge branch 'jc/azure-ci-osx-fix-fix'
Junio C Hamano [Thu, 5 Dec 2019 20:52:44 +0000 (12:52 -0800)]
Merge branch 'jc/azure-ci-osx-fix-fix'

CI jobs for macOS has been made less chatty when updating perforce
package used during testing.

* jc/azure-ci-osx-fix-fix:
  ci(osx): update homebrew-cask repository with less noise

6 years agoMerge branch 'dl/range-diff-with-notes'
Junio C Hamano [Thu, 5 Dec 2019 20:52:44 +0000 (12:52 -0800)]
Merge branch 'dl/range-diff-with-notes'

"git range-diff" learned to take the "--notes=<ref>" and the
"--no-notes" options to control the commit notes included in the
log message that gets compared.

* dl/range-diff-with-notes:
  format-patch: pass notes configuration to range-diff
  range-diff: pass through --notes to `git log`
  range-diff: output `## Notes ##` header
  t3206: range-diff compares logs with commit notes
  t3206: s/expected/expect/
  t3206: disable parameter substitution in heredoc
  t3206: remove spaces after redirect operators
  pretty-options.txt: --notes accepts a ref instead of treeish
  rev-list-options.txt: remove reference to --show-notes
  argv-array: add space after `while`

6 years agoMerge branch 'jh/userdiff-python-async'
Junio C Hamano [Thu, 5 Dec 2019 20:52:44 +0000 (12:52 -0800)]
Merge branch 'jh/userdiff-python-async'

The userdiff machinery has been taught that "async def" is another
way to begin a "function" in Python.

* jh/userdiff-python-async:
  userdiff: support Python async functions

6 years agoMerge branch 'ec/fetch-mark-common-refs-trace2'
Junio C Hamano [Thu, 5 Dec 2019 20:52:43 +0000 (12:52 -0800)]
Merge branch 'ec/fetch-mark-common-refs-trace2'

Trace2 annotation.

* ec/fetch-mark-common-refs-trace2:
  fetch: add trace2 instrumentation

6 years agoMerge branch 'dd/rebase-merge-reserves-onto-label'
Junio C Hamano [Thu, 5 Dec 2019 20:52:43 +0000 (12:52 -0800)]
Merge branch 'dd/rebase-merge-reserves-onto-label'

The logic to avoid duplicate label names generated by "git rebase
--rebase-merges" forgot that the machinery itself uses "onto" as a
label name, which must be avoided by auto-generated labels, which
has been corrected.

* dd/rebase-merge-reserves-onto-label:
  sequencer: handle rebase-merges for "onto" message

6 years agoMerge branch 'js/builtin-add-i'
Junio C Hamano [Thu, 5 Dec 2019 20:52:43 +0000 (12:52 -0800)]
Merge branch 'js/builtin-add-i'

The beginning of rewriting "git add -i" in C.

* js/builtin-add-i:
  built-in add -i: implement the `help` command
  built-in add -i: use color in the main loop
  built-in add -i: support `?` (prompt help)
  built-in add -i: show unique prefixes of the commands
  built-in add -i: implement the main loop
  built-in add -i: color the header in the `status` command
  built-in add -i: implement the `status` command
  diff: export diffstat interface
  Start to implement a built-in version of `git add --interactive`

6 years agoMerge branch 'js/rebase-r-safer-label'
Junio C Hamano [Thu, 5 Dec 2019 20:52:43 +0000 (12:52 -0800)]
Merge branch 'js/rebase-r-safer-label'

A label used in the todo list that are generated by "git rebase
--rebase-merges" is used as a part of a refname; the logic to come
up with the label has been tightened to avoid names that cannot be
used as such.

* js/rebase-r-safer-label:
  rebase -r: let `label` generate safer labels
  rebase-merges: move labels' whitespace mangling into `label_oid()`

6 years agoMerge branch 'ep/guard-kset-tar-headers'
Junio C Hamano [Thu, 5 Dec 2019 20:52:43 +0000 (12:52 -0800)]
Merge branch 'ep/guard-kset-tar-headers'

Code clean-up.

* ep/guard-kset-tar-headers:
  kset.h, tar.h: add missing header guard to prevent multiple inclusion

6 years agodoc: replace LKML link with lore.kernel.org
Denton Liu [Mon, 2 Dec 2019 19:26:23 +0000 (11:26 -0800)]
doc: replace LKML link with lore.kernel.org

Since we're now recommending lore.kernel.org, replace LKML link
with lore.kernel.org.

Although LKML has been around for a long time, nothing lasts forever
(see Gmane). Since LKML uses opaque message identifiers, switching to
lore.kernel.org should be a strict improvement since, even if
lore.kernel.org goes down, the Message-ID will allow future readers to
look up the referenced messages on any other archive.

Signed-off-by: Denton Liu <redacted>
Signed-off-by: Junio C Hamano <redacted>
6 years agoRelNotes: replace Gmane with real Message-IDs
Denton Liu [Mon, 2 Dec 2019 19:26:20 +0000 (11:26 -0800)]
RelNotes: replace Gmane with real Message-IDs

The only references to Gmane that remain are in RelNotes. Although these
are definitely not in active use, they might be of historical interest
for future readers so let's ensure that mail references are more robust.

Replace links to Gmane with links to lore.kernel.org (which is our new
preferred mailing list archive and has the Message-ID in the URL) and
bare Gmane ID references with Message-IDs.

The Message-IDs were found by searching for "gmane:<id>" on
https://public-inbox.org/git/ and taking the resulting message.

Signed-off-by: Denton Liu <redacted>
Signed-off-by: Junio C Hamano <redacted>
6 years agodoc: replace MARC links with lore.kernel.org
Denton Liu [Mon, 2 Dec 2019 19:26:18 +0000 (11:26 -0800)]
doc: replace MARC links with lore.kernel.org

Since we're now recommending lore.kernel.org, replace marc.info links
with lore.kernel.org.

Although MARC has been around for a long time, nothing lasts forever
(see Gmane). Since MARC uses opaque message identifiers, switching to
lore.kernel.org should be a strict improvement since, even if
lore.kernel.org goes down, the Message-ID will allow future readers to
look up the referenced messages on any other archive.

We leave behind one reference to MARC in the README.md since it's a
perfectly fine mail archive for personal reading, just not for linking
messages for the future.

Signed-off-by: Denton Liu <redacted>
Signed-off-by: Junio C Hamano <redacted>
6 years agopkt-line: fix a typo
Johannes Schindelin [Mon, 2 Dec 2019 08:43:11 +0000 (08:43 +0000)]
pkt-line: fix a typo

This typo was introduced in 2153d478b74 (pkt-line: introduce
packet_read_with_status, 2018-03-14).

Signed-off-by: Johannes Schindelin <redacted>
Signed-off-by: Junio C Hamano <redacted>
6 years agoThe second batch
Junio C Hamano [Sun, 1 Dec 2019 17:04:07 +0000 (09:04 -0800)]
The second batch

Signed-off-by: Junio C Hamano <redacted>
6 years agoMerge branch 'jk/gitweb-anti-xss'
Junio C Hamano [Sun, 1 Dec 2019 17:04:41 +0000 (09:04 -0800)]
Merge branch 'jk/gitweb-anti-xss'

Some codepaths in "gitweb" that forgot to escape URLs generated
based on end-user input have been corrected.

* jk/gitweb-anti-xss:
  gitweb: escape URLs generated by href()
  t/gitweb-lib.sh: set $REQUEST_URI
  t/gitweb-lib.sh: drop confusing quotes
  t9502: pass along all arguments in xss helper

6 years agoMerge branch 'ar/install-doc-update-cmds-needing-the-shell'
Junio C Hamano [Sun, 1 Dec 2019 17:04:41 +0000 (09:04 -0800)]
Merge branch 'ar/install-doc-update-cmds-needing-the-shell'

Doc update.

* ar/install-doc-update-cmds-needing-the-shell:
  INSTALL: use existing shell scripts as example

6 years agoMerge branch 'ma/t7004'
Junio C Hamano [Sun, 1 Dec 2019 17:04:41 +0000 (09:04 -0800)]
Merge branch 'ma/t7004'

Test fix.

* ma/t7004:
  t7004: check existence of correct tag

6 years agoMerge branch 'js/complete-svn-recursive'
Junio C Hamano [Sun, 1 Dec 2019 17:04:40 +0000 (09:04 -0800)]
Merge branch 'js/complete-svn-recursive'

The completion script (in contrib/) has been taught that "git svn"
supports the "--recursive" option.

* js/complete-svn-recursive:
  completion: tab-complete "git svn --recursive"

6 years agoMerge branch 'jk/send-pack-remote-failure'
Junio C Hamano [Sun, 1 Dec 2019 17:04:40 +0000 (09:04 -0800)]
Merge branch 'jk/send-pack-remote-failure'

Error handling after "git push" finishes sending the packdata and
waits for the response to the remote side has been improved.

* jk/send-pack-remote-failure:
  send-pack: check remote ref status on pack-objects failure

6 years agoMerge branch 'jc/fsmonitor-sanity-fix'
Junio C Hamano [Sun, 1 Dec 2019 17:04:39 +0000 (09:04 -0800)]
Merge branch 'jc/fsmonitor-sanity-fix'

Remove an incorrect BUG() that should not trigger.

* jc/fsmonitor-sanity-fix:
  fsmonitor: do not compare bitmap size with size of split index

6 years agoMerge branch 'sg/skip-skipped-prereq'
Junio C Hamano [Sun, 1 Dec 2019 17:04:39 +0000 (09:04 -0800)]
Merge branch 'sg/skip-skipped-prereq'

Test update to avoid wasted cycles.

* sg/skip-skipped-prereq:
  test-lib: don't check prereqs of test cases that won't be run anyway

6 years agoMerge branch 'ds/test-read-graph'
Junio C Hamano [Sun, 1 Dec 2019 17:04:39 +0000 (09:04 -0800)]
Merge branch 'ds/test-read-graph'

Dev support for commit-graph feature.

* ds/test-read-graph:
  test-tool: use 'read-graph' helper

6 years agoMerge branch 'rs/use-copy-array-in-mingw-shell-command-preparation'
Junio C Hamano [Sun, 1 Dec 2019 17:04:39 +0000 (09:04 -0800)]
Merge branch 'rs/use-copy-array-in-mingw-shell-command-preparation'

Code cleanup.

* rs/use-copy-array-in-mingw-shell-command-preparation:
  mingw: use COPY_ARRAY for copying array

6 years agoMerge branch 'rs/parse-options-dup-null-fix'
Junio C Hamano [Sun, 1 Dec 2019 17:04:38 +0000 (09:04 -0800)]
Merge branch 'rs/parse-options-dup-null-fix'

Code cleanup.

* rs/parse-options-dup-null-fix:
  parse-options: avoid arithmetic on pointer that's potentially NULL

6 years agoMerge branch 'jt/fetch-remove-lazy-fetch-plugging'
Junio C Hamano [Sun, 1 Dec 2019 17:04:38 +0000 (09:04 -0800)]
Merge branch 'jt/fetch-remove-lazy-fetch-plugging'

"git fetch" codepath had a big "do not lazily fetch missing objects
when I ask if something exists" switch.  This has been corrected by
marking the "does this thing exist?" calls with "if not please do not
lazily fetch it" flag.

* jt/fetch-remove-lazy-fetch-plugging:
  promisor-remote: remove fetch_if_missing=0
  clone: remove fetch_if_missing=0
  fetch: remove fetch_if_missing=0

6 years agoMerge branch 'jk/optim-in-pack-idx-conversion'
Junio C Hamano [Sun, 1 Dec 2019 17:04:38 +0000 (09:04 -0800)]
Merge branch 'jk/optim-in-pack-idx-conversion'

Code clean-up.

* jk/optim-in-pack-idx-conversion:
  pack-objects: avoid pointless oe_map_new_pack() calls

6 years agoMerge branch 'dl/complete-rebase-onto'
Junio C Hamano [Sun, 1 Dec 2019 17:04:37 +0000 (09:04 -0800)]
Merge branch 'dl/complete-rebase-onto'

The completion script (in contrib/) learned that the "--onto"
option of "git rebase" can take its argument as the value of the
option.

* dl/complete-rebase-onto:
  completion: learn to complete `git rebase --onto=`

6 years agoMerge branch 'tg/stash-refresh-index'
Junio C Hamano [Sun, 1 Dec 2019 17:04:37 +0000 (09:04 -0800)]
Merge branch 'tg/stash-refresh-index'

Recent update to "git stash pop" made the command empty the index
when run with the "--quiet" option, which has been corrected.

* tg/stash-refresh-index:
  stash: make sure we have a valid index before writing it

6 years agoMerge branch 'nn/doc-rebase-merges'
Junio C Hamano [Sun, 1 Dec 2019 17:04:36 +0000 (09:04 -0800)]
Merge branch 'nn/doc-rebase-merges'

Doc update.

* nn/doc-rebase-merges:
  doc: improve readability of --rebase-merges in git-rebase

6 years agoMerge branch 'dd/sequencer-utf8'
Junio C Hamano [Sun, 1 Dec 2019 17:04:36 +0000 (09:04 -0800)]
Merge branch 'dd/sequencer-utf8'

Handling of commit objects that use non UTF-8 encoding during
"rebase -i" has been improved.

* dd/sequencer-utf8:
  sequencer: reencode commit message for am/rebase --show-current-patch
  sequencer: reencode old merge-commit message
  sequencer: reencode squashing commit's message
  sequencer: reencode revert/cherry-pick's todo list
  sequencer: reencode to utf-8 before arrange rebase's todo list
  t3900: demonstrate git-rebase problem with multi encoding
  configure.ac: define ICONV_OMITS_BOM if necessary
  t0028: eliminate non-standard usage of printf

6 years agoMerge branch 'jk/remove-sha1-to-hex'
Junio C Hamano [Sun, 1 Dec 2019 17:04:36 +0000 (09:04 -0800)]
Merge branch 'jk/remove-sha1-to-hex'

Code clean-up.

* jk/remove-sha1-to-hex:
  hex: drop sha1_to_hex()
  hex: drop sha1_to_hex_r()

6 years agoMerge branch 'dj/typofix-merge-strat'
Junio C Hamano [Sun, 1 Dec 2019 17:04:36 +0000 (09:04 -0800)]
Merge branch 'dj/typofix-merge-strat'

Typofix.

* dj/typofix-merge-strat:
  merge-strategies: fix typo "reflected to" to "reflected in"

6 years agoMerge branch 'rj/bundle-ui-updates'
Junio C Hamano [Sun, 1 Dec 2019 17:04:36 +0000 (09:04 -0800)]
Merge branch 'rj/bundle-ui-updates'

"git bundle" has been taught to use the parse options API.  "git
bundle verify" learned "--quiet" and "git bundle create" learned
options to control the progress output.

* rj/bundle-ui-updates:
  bundle-verify: add --quiet
  bundle-create: progress output control
  bundle: framework for options before bundle file

6 years agoMerge branch 'rs/skip-iprefix'
Junio C Hamano [Sun, 1 Dec 2019 17:04:36 +0000 (09:04 -0800)]
Merge branch 'rs/skip-iprefix'

Code simplification.

* rs/skip-iprefix:
  convert: use skip_iprefix() in validate_encoding()
  utf8: use skip_iprefix() in same_utf_encoding()

6 years agoMerge branch 'ln/userdiff-elixir'
Junio C Hamano [Sun, 1 Dec 2019 17:04:35 +0000 (09:04 -0800)]
Merge branch 'ln/userdiff-elixir'

The patterns to detect function boundary for Elixir language has
been added.

* ln/userdiff-elixir:
  userdiff: add Elixir to supported userdiff languages

6 years agoMerge branch 'py/shortlog-list-options-for-log'
Junio C Hamano [Sun, 1 Dec 2019 17:04:35 +0000 (09:04 -0800)]
Merge branch 'py/shortlog-list-options-for-log'

Documentation pages for "git shortlog" now lists commit limiting
options explicitly.

* py/shortlog-list-options-for-log:
  git-shortlog.txt: include commit limiting options

6 years agoMerge branch 'en/doc-typofix'
Junio C Hamano [Sun, 1 Dec 2019 17:04:35 +0000 (09:04 -0800)]
Merge branch 'en/doc-typofix'

Docfix.

* en/doc-typofix:
  Fix spelling errors in no-longer-updated-from-upstream modules
  multimail: fix a few simple spelling errors
  sha1dc: fix trivial comment spelling error
  Fix spelling errors in test commands
  Fix spelling errors in messages shown to users
  Fix spelling errors in names of tests
  Fix spelling errors in comments of testcases
  Fix spelling errors in code comments
  Fix spelling errors in documentation outside of Documentation/
  Documentation: fix a bunch of typos, both old and new

6 years agoMerge branch 'ns/test-desc-typofix'
Junio C Hamano [Sun, 1 Dec 2019 17:04:34 +0000 (09:04 -0800)]
Merge branch 'ns/test-desc-typofix'

Typofix.

* ns/test-desc-typofix:
  t: fix typo in test descriptions

6 years agoMerge branch 'en/t6024-style'
Junio C Hamano [Sun, 1 Dec 2019 17:04:34 +0000 (09:04 -0800)]
Merge branch 'en/t6024-style'

Test updates.

* en/t6024-style:
  t6024: modernize style

6 years agoMerge branch 'en/misc-doc-fixes'
Junio C Hamano [Sun, 1 Dec 2019 17:04:34 +0000 (09:04 -0800)]
Merge branch 'en/misc-doc-fixes'

Misc doc fixes.

* en/misc-doc-fixes:
  name-hash.c: remove duplicate word in comment
  hashmap: fix documentation misuses of -> versus .
  git-filter-branch.txt: correct argument name typo

6 years agoMerge branch 'js/fetch-multi-lockfix'
Junio C Hamano [Sun, 1 Dec 2019 17:04:33 +0000 (09:04 -0800)]
Merge branch 'js/fetch-multi-lockfix'

Fetching from multiple remotes into the same repository in parallel
had a bad interaction with the recent change to (optionally) update
the commit-graph after a fetch job finishes, as these parallel
fetches compete with each other.  Which has been corrected.

* js/fetch-multi-lockfix:
  fetch: avoid locking issues between fetch.jobs/fetch.writeCommitGraph
  fetch: add the command-line option `--write-commit-graph`

6 years agoMerge branch 'rs/trace2-dots'
Junio C Hamano [Sun, 1 Dec 2019 17:04:33 +0000 (09:04 -0800)]
Merge branch 'rs/trace2-dots'

Code cleanup.

* rs/trace2-dots:
  trace2: add dots directly to strbuf in perf_fmt_prepare()

6 years agoMerge branch 'kw/fsmonitor-watchman-fix'
Junio C Hamano [Sun, 1 Dec 2019 17:04:33 +0000 (09:04 -0800)]
Merge branch 'kw/fsmonitor-watchman-fix'

The watchman integration for fsmonitor was racy, which has been
corrected to be more conservative.

* kw/fsmonitor-watchman-fix:
  fsmonitor: fix watchman integration

6 years agoMerge branch 'cb/curl-use-xmalloc'
Junio C Hamano [Sun, 1 Dec 2019 17:04:33 +0000 (09:04 -0800)]
Merge branch 'cb/curl-use-xmalloc'

HTTP transport had possible allocator/deallocator mismatch, which
has been corrected.

* cb/curl-use-xmalloc:
  remote-curl: unbreak http.extraHeader with custom allocators

6 years agoMerge branch 'rt/fetch-message-fix'
Junio C Hamano [Sun, 1 Dec 2019 17:04:32 +0000 (09:04 -0800)]
Merge branch 'rt/fetch-message-fix'

A small message update.

* rt/fetch-message-fix:
  fetch.c: fix typo in a warning message

6 years agoMerge branch 'es/myfirstcontrib-updates'
Junio C Hamano [Sun, 1 Dec 2019 17:04:32 +0000 (09:04 -0800)]
Merge branch 'es/myfirstcontrib-updates'

Doc updates.

* es/myfirstcontrib-updates:
  myfirstcontrib: hint to find gitgitgadget allower
  myfirstcontrib: add dependency installation step
  myfirstcontrib: add 'psuh' to command-list.txt

6 years agoMerge branch 'hw/config-doc-in-header'
Junio C Hamano [Sun, 1 Dec 2019 17:04:32 +0000 (09:04 -0800)]
Merge branch 'hw/config-doc-in-header'

Follow recent push to move API docs from Documentation/ to header
files and update config.h

* hw/config-doc-in-header:
  config: move documentation to config.h

6 years agoMerge branch 'dl/doc-diff-no-index-implies-exit-code'
Junio C Hamano [Sun, 1 Dec 2019 17:04:31 +0000 (09:04 -0800)]
Merge branch 'dl/doc-diff-no-index-implies-exit-code'

Doc update.

* dl/doc-diff-no-index-implies-exit-code:
  git-diff.txt: document return code of `--no-index`

6 years agoMerge branch 'js/vreportf-wo-buffering'
Junio C Hamano [Sun, 1 Dec 2019 17:04:31 +0000 (09:04 -0800)]
Merge branch 'js/vreportf-wo-buffering'

Messages from die() etc. can be mixed up from multiple processes
without even line buffering on Windows, which has been worked
around.

* js/vreportf-wo-buffering:
  vreportf(): avoid relying on stdio buffering

6 years agoMerge branch 'pb/no-recursive-reset-hard-in-worktree-add'
Junio C Hamano [Sun, 1 Dec 2019 17:04:31 +0000 (09:04 -0800)]
Merge branch 'pb/no-recursive-reset-hard-in-worktree-add'

"git worktree add" internally calls "reset --hard" that should not
descend into submodules, even when submodule.recurse configuration
is set, but it was affected.  This has been corrected.

* pb/no-recursive-reset-hard-in-worktree-add:
  worktree: teach "add" to ignore submodule.recurse config

6 years agoMerge branch 'pb/help-list-gitsubmodules-among-guides'
Junio C Hamano [Sun, 1 Dec 2019 17:04:30 +0000 (09:04 -0800)]
Merge branch 'pb/help-list-gitsubmodules-among-guides'

Help update.

* pb/help-list-gitsubmodules-among-guides:
  help: add gitsubmodules to the list of guides

6 years agoMerge branch 'sg/blame-indent-heuristics-is-now-the-default'
Junio C Hamano [Sun, 1 Dec 2019 17:04:30 +0000 (09:04 -0800)]
Merge branch 'sg/blame-indent-heuristics-is-now-the-default'

Message update.

* sg/blame-indent-heuristics-is-now-the-default:
  builtin/blame.c: remove '--indent-heuristic' from usage string

6 years agoMerge branch 'mr/clone-dir-exists-to-path-exists'
Junio C Hamano [Sun, 1 Dec 2019 17:04:29 +0000 (09:04 -0800)]
Merge branch 'mr/clone-dir-exists-to-path-exists'

Code cleanup.

* mr/clone-dir-exists-to-path-exists:
  clone: rename static function `dir_exists()`.

6 years agoMerge branch 'ma/bisect-doc-sample-update'
Junio C Hamano [Sun, 1 Dec 2019 17:04:29 +0000 (09:04 -0800)]
Merge branch 'ma/bisect-doc-sample-update'

"git merge --no-commit" needs "--no-ff" if you do not want to move
HEAD, which has been corrected in the manual page for "git bisect".

* ma/bisect-doc-sample-update:
  Documentation/git-bisect.txt: add --no-ff to merge command

6 years agoMerge branch 'js/git-path-head-dot-lock-fix'
Junio C Hamano [Sun, 1 Dec 2019 17:04:29 +0000 (09:04 -0800)]
Merge branch 'js/git-path-head-dot-lock-fix'

"git rev-parse --git-path HEAD.lock" did not give the right path
when run in a secondary worktree.

* js/git-path-head-dot-lock-fix:
  git_path(): handle `.lock` files correctly
  t1400: wrap setup code in test case

6 years agoMerge branch 'jc/log-graph-simplify'
Junio C Hamano [Sun, 1 Dec 2019 17:04:28 +0000 (09:04 -0800)]
Merge branch 'jc/log-graph-simplify'

The implementation of "git log --graph" got refactored and then its
output got simplified.

* jc/log-graph-simplify:
  t4215: use helper function to check output
  graph: fix coloring of octopus dashes
  graph: flatten edges that fuse with their right neighbor
  graph: smooth appearance of collapsing edges on commit lines
  graph: rename `new_mapping` to `old_mapping`
  graph: commit and post-merge lines for left-skewed merges
  graph: tidy up display of left-skewed merges
  graph: example of graph output that can be simplified
  graph: extract logic for moving to GRAPH_PRE_COMMIT state
  graph: remove `mapping_idx` and `graph_update_width()`
  graph: reduce duplication in `graph_insert_into_new_columns()`
  graph: reuse `find_new_column_by_commit()`
  graph: handle line padding in `graph_next_line()`
  graph: automatically track display width of graph lines

6 years agoMerge branch 'jk/cleanup-object-parsing-and-fsck'
Junio C Hamano [Sun, 1 Dec 2019 17:04:28 +0000 (09:04 -0800)]
Merge branch 'jk/cleanup-object-parsing-and-fsck'

Crufty code and logic accumulated over time around the object
parsing and low-level object access used in "git fsck" have been
cleaned up.

* jk/cleanup-object-parsing-and-fsck: (23 commits)
  fsck: accept an oid instead of a "struct tree" for fsck_tree()
  fsck: accept an oid instead of a "struct commit" for fsck_commit()
  fsck: accept an oid instead of a "struct tag" for fsck_tag()
  fsck: rename vague "oid" local variables
  fsck: don't require an object struct in verify_headers()
  fsck: don't require an object struct for fsck_ident()
  fsck: drop blob struct from fsck_finish()
  fsck: accept an oid instead of a "struct blob" for fsck_blob()
  fsck: don't require an object struct for report()
  fsck: only require an oid for skiplist functions
  fsck: only provide oid/type in fsck_error callback
  fsck: don't require object structs for display functions
  fsck: use oids rather than objects for object_name API
  fsck_describe_object(): build on our get_object_name() primitive
  fsck: unify object-name code
  fsck: require an actual buffer for non-blobs
  fsck: stop checking tag->tagged
  fsck: stop checking commit->parent counts
  fsck: stop checking commit->tree value
  commit, tag: don't set parsed bit for parse failures
  ...

6 years agogrep: don't return an expression from pcre2_free()
Hans Jerry Illikainen [Wed, 27 Nov 2019 20:24:11 +0000 (20:24 +0000)]
grep: don't return an expression from pcre2_free()

Previously, the void pcre2_free() function in grep.c returned free().
While free() itself is void, afaict it's still an expression as per
section A.2.3, subsection 6.8.6 (jump-statement) in both C99 [1] and C11
[2]:

> return expression

Section 6.8.6.4 in C99 [1] and C11 [2] says that:

> A return statement with an expression shall not appear in a function
> whose return type is void.

The consequence of the old behavior was that developer builds with
pedantic errors enabled broke Git if PCRE2 was enabled and a
smart-enough compiler to detect these errors was used.  This commit
fixes pedantic builds of Git that enables --with-libpcre.

[1] http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf
[2] http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1548.pdf

Signed-off-by: Hans Jerry Illikainen <redacted>
Signed-off-by: Junio C Hamano <redacted>
6 years agot7811: don't create unused file
René Scharfe [Wed, 27 Nov 2019 12:48:38 +0000 (13:48 +0100)]
t7811: don't create unused file

The file "empty" became unused with 1c5e94f459 (tests: use
'test_must_be_empty' instead of 'test_cmp <empty> <out>', 2018-08-19);
get rid of it.

Signed-off-by: René Scharfe <redacted>
Signed-off-by: Junio C Hamano <redacted>
6 years agot9300: don't create unused file
René Scharfe [Wed, 27 Nov 2019 12:48:51 +0000 (13:48 +0100)]
t9300: don't create unused file

The file "frontend" became unused with 4de0bbd898 (t9300: use perl
"head -c" clone in place of "dd bs=1 count=16000" kluge, 2010-12-13);
get rid of it.

Signed-off-by: René Scharfe <redacted>
Signed-off-by: Junio C Hamano <redacted>
6 years agodoc: replace public-inbox links with lore.kernel.org
Jeff King [Wed, 27 Nov 2019 12:54:04 +0000 (07:54 -0500)]
doc: replace public-inbox links with lore.

Since we're now recommending lore.kernel.org (and because the
public-inbox.org domain might eventually go away), let's update our
internal references to use it, too. That future-proofs our references,
and sets the example we want people to follow.

Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
git clone https://git.99rst.org/PROJECT