]> git.ipfire.org Git - thirdparty/git.git/log
thirdparty/git.git
3 years agogit-bugreport.txt: adjust reference to strftime(3)
Todd Zullinger [Mon, 18 May 2020 19:37:36 +0000 (15:37 -0400)] 
git-bugreport.txt: adjust reference to strftime(3)

The strftime(3) man page is outside of the Git suite.  Refererence it as
we do other external man pages and avoid creating a broken link when
generating the HTML documentation.

Signed-off-by: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agobugreport: drop extraneous includes
Emily Shaffer [Mon, 27 Apr 2020 23:42:31 +0000 (16:42 -0700)] 
bugreport: drop extraneous includes

In the generic parts of the source files, system headers like
<time.h> and <stdio.h> are supposed to be included indirectly
by including "git-compat-util.h", which manages portability issues.

Drop our explicit inclusions and rely on "cache.h", which includes
"git-compat-util.h".

Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agobugreport: add compiler info
Emily Shaffer [Thu, 16 Apr 2020 21:18:07 +0000 (14:18 -0700)] 
bugreport: add compiler info

To help pinpoint the source of a regression, it is useful to know some
info about the compiler which the user's Git client was built with. By
adding a generic get_compiler_info() in 'compat/' we can choose which
relevant information to share per compiler; to get started, let's
demonstrate the version of glibc if the user built with 'gcc'.

Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
Helped-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>
Helped-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agobugreport: add uname info
Emily Shaffer [Thu, 16 Apr 2020 21:18:06 +0000 (14:18 -0700)] 
bugreport: add uname info

The contents of uname() can give us some insight into what sort of
system the user is running on, and help us replicate their setup if need
be. The domainname field is not guaranteed to be available, so don't
collect it.

Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agobugreport: gather git version and build info
Emily Shaffer [Thu, 16 Apr 2020 21:18:05 +0000 (14:18 -0700)] 
bugreport: gather git version and build info

Knowing which version of Git a user has and how it was built allows us
to more precisely pin down the circumstances when a certain issue
occurs, so teach bugreport how to tell us the same output as 'git
version --build-options'.

It's not ideal to directly call 'git version --build-options' because
that output goes to stdout. Instead, wrap the version string in a helper
within help.[ch] library, and call that helper from within the bugreport
library.

Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agobugreport: add tool to generate debugging info
Emily Shaffer [Thu, 16 Apr 2020 21:18:04 +0000 (14:18 -0700)] 
bugreport: add tool to generate debugging info

Teach Git how to prompt the user for a good bug report: reproduction
steps, expected behavior, and actual behavior. Later, Git can learn how
to collect some diagnostic information from the repository.

If users can send us a well-written bug report which contains diagnostic
information we would otherwise need to ask the user for, we can reduce
the number of question-and-answer round trips between the reporter and
the Git contributor.

Users may also wish to send a report like this to their local "Git
expert" if they have put their repository into a state they are confused
by.

Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agohelp: move list_config_help to builtin/help
Emily Shaffer [Thu, 16 Apr 2020 21:18:03 +0000 (14:18 -0700)] 
help: move list_config_help to builtin/help

Starting in 3ac68a93fd2, help.o began to depend on builtin/branch.o,
builtin/clean.o, and builtin/config.o. This meant that help.o was
unusable outside of the context of the main Git executable.

To make help.o usable by other commands again, move list_config_help()
into builtin/help.c (where it makes sense to assume other builtin libraries
are present).

When command-list.h is included but a member is not used, we start to
hear a compiler warning. Since the config list is generated in a fairly
different way than the command list, and since commands and config
options are semantically different, move the config list into its own
header and move the generator into its own script and build rule.

For reasons explained in 976aaedc (msvc: add a Makefile target to
pre-generate the Visual Studio solution, 2019-07-29), some build
artifacts we consider non-source files cannot be generated in the
Visual Studio environment, and we already have some Makefile tweaks
to help Visual Studio to use generated command-list.h header file.
Do the same to a new generated file, config-list.h, introduced by
this change.

Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
4 years agoconfig: add '--show-scope' to print the scope of a config value
Matthew Rogers [Mon, 10 Feb 2020 00:30:59 +0000 (00:30 +0000)] 
config: add '--show-scope' to print the scope of a config value

When a user queries config values with --show-origin, often it's
difficult to determine what the actual "scope" (local, global, etc.) of
a given value is based on just the origin file.

Teach 'git config' the '--show-scope' option to print the scope of all
displayed config values.  Note that we should never see anything of
"submodule" scope as that is only ever used by submodule-config.c when
parsing the '.gitmodules' file.

Signed-off-by: Matthew Rogers <mattr94@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agosubmodule-config: add subomdule config scope
Matthew Rogers [Mon, 10 Feb 2020 00:30:58 +0000 (00:30 +0000)] 
submodule-config: add subomdule config scope

Before the changes to teach git_config_source to remember scope
information submodule-config.c never needed to consider the question of
config scope.  Even though zeroing out git_config_source is still
correct and preserved the previous behavior of setting the scope to
CONFIG_SCOPE_UNKNOWN, it's better to be explicit about such situations
by explicitly setting the scope.  As none of the current config_scope
enumerations make sense we create CONFIG_SCOPE_SUBMODULE to describe the
situation.

Signed-off-by: Matthew Rogers <mattr94@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoconfig: teach git_config_source to remember its scope
Matthew Rogers [Mon, 10 Feb 2020 00:30:57 +0000 (00:30 +0000)] 
config: teach git_config_source to remember its scope

There are many situations where the scope of a config command is known
beforehand, such as passing of '--local', '--file', etc. to an
invocation of git config.  However, this information is lost when moving
from builtin/config.c to /config.c.  This historically hasn't been a big
deal, but to prepare for the upcoming --show-scope option we teach
git_config_source to keep track of the source and the config machinery
to use that information to set current_parsing_scope appropriately.

Signed-off-by: Matthew Rogers <mattr94@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoconfig: preserve scope in do_git_config_sequence
Matthew Rogers [Mon, 10 Feb 2020 00:30:56 +0000 (00:30 +0000)] 
config: preserve scope in do_git_config_sequence

do_git_config_sequence operated under the assumption that it was correct
to set current_parsing_scope to CONFIG_SCOPE_UNKNOWN as part of the
cleanup it does after it finishes execution.  This is incorrect, as it
blows away the current_parsing_scope if do_git_config_sequence is called
recursively.  As such situations are rare (git config running with the
'--blob' option is one example) this has yet to cause a problem, but the
upcoming '--show-scope' option will experience issues in that case, lets
teach do_git_config_sequence to preserve the current_parsing_scope from
before it started execution.

Signed-off-by: Matthew Rogers <mattr94@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoconfig: clarify meaning of command line scoping
Matthew Rogers [Mon, 10 Feb 2020 00:30:55 +0000 (00:30 +0000)] 
config: clarify meaning of command line scoping

CONFIG_SCOPE_CMDLINE is generally used in the code to refer to config
values passed in via the -c option.  Options passed in using this
mechanism share similar scoping characteristics with the --file and
--blob options of the 'config' command, namely that they are only in use
for that single invocation of git, and that they supersede the normal
system/global/local hierarchy.  This patch introduces
CONFIG_SCOPE_COMMAND to reflect this new idea, which also makes
CONFIG_SCOPE_CMDLINE redundant.

Signed-off-by: Matthew Rogers <mattr94@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoconfig: split repo scope to local and worktree
Matthew Rogers [Mon, 10 Feb 2020 00:30:54 +0000 (00:30 +0000)] 
config: split repo scope to local and worktree

Previously when iterating through git config variables, worktree config
and local config were both considered "CONFIG_SCOPE_REPO".  This was
never a problem before as no one had needed to differentiate between the
two cases, but future functionality may care whether or not the config
options come from a worktree or from the repository's actual local
config file.  For example, the planned feature to add a '--show-scope'
to config to allow a user to see which scope listed config options come
from would confuse users if it just printed 'repo' rather than 'local'
or 'worktree' as the documentation would lead them to expect.  As well
as the additional benefit of making the implementation look more like
how the documentation describes the interface.

To accomplish this we split out what was previously considered repo
scope to be local and worktree.

The clients of 'current_config_scope()' who cared about
CONFIG_SCOPE_REPO are also modified to similarly care about
CONFIG_SCOPE_WORKTREE and CONFIG_SCOPE_LOCAL to preserve previous behavior.

Signed-off-by: Matthew Rogers <mattr94@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoconfig: make scope_name non-static and rename it
Matthew Rogers [Mon, 10 Feb 2020 00:30:53 +0000 (00:30 +0000)] 
config: make scope_name non-static and rename it

To prepare for the upcoming --show-scope option, we require the ability
to convert a config_scope enum to a string.  As this was originally
implemented as a static function 'scope_name()' in
t/helper/test-config.c, we expose it via config.h and give it a less
ambiguous name 'config_scope_name()'

Signed-off-by: Matthew Rogers <mattr94@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agot1300: create custom config file without special characters
Matthew Rogers [Fri, 24 Jan 2020 00:21:03 +0000 (00:21 +0000)] 
t1300: create custom config file without special characters

Tests that required a custom configuration file to be created previously
used a file with non-alphanumeric characters including escaped double
quotes.  This is not really necessary for the majority of tests
involving custom config files, and decreases test coverage on systems
that dissallow such filenames (Windows, etc.).

Create two files, one appropriate for testing quoting and one
appropriate for general use.

Signed-off-by: Matthew Rogers <mattr94@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agot1300: fix over-indented HERE-DOCs
Matthew Rogers [Fri, 24 Jan 2020 00:21:02 +0000 (00:21 +0000)] 
t1300: fix over-indented HERE-DOCs

Prepare for the following patches by removing extraneous indents from
HERE-DOCs used in config tests.

Signed-off-by: Matthew Rogers <mattr94@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoconfig: fix typo in variable name
Matthew Rogers [Fri, 24 Jan 2020 00:21:01 +0000 (00:21 +0000)] 
config: fix typo in variable name

In git config use of the end_null variable to determine if we should be
null terminating our output.  While it is correct to say a string is
"null terminated" the character is actually the "nul" character, so this
malapropism is being fixed.

Signed-off-by: Matthew Rogers <mattr94@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoGit 2.25 v2.25.0
Junio C Hamano [Mon, 13 Jan 2020 18:16:43 +0000 (10:16 -0800)] 
Git 2.25

Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoMerge tag 'l10n-2.25.0-rnd1' of git://github.com/git-l10n/git-po
Junio C Hamano [Sun, 12 Jan 2020 21:28:13 +0000 (13:28 -0800)] 
Merge tag 'l10n-2.25.0-rnd1' of git://github.com/git-l10n/git-po

l10n-2.25.0-rnd1

* tag 'l10n-2.25.0-rnd1' of git://github.com/git-l10n/git-po:
  l10n: zh_CN: for git v2.25.0 l10n round 1
  l10n: Update Catalan translation
  l10n: de.po: Update German translation v2.25.0 round 1
  l10n: de.po: Reword generation numbers
  l10n: bg.po: Updated Bulgarian translation (4800t)
  l10n: es: 2.25.0 round #1
  l10n: sv.po: Update Swedish translation (4800t0f0u)
  l10n: fr.po v2.25.0 rnd 1
  l10n: vi(4800t): Updated Vietnamese translation v2.25.0
  l10n: zh_TW.po: update translation for v2.25.0 round 1
  l10n: it.po: update the Italian translation for Git 2.25.0
  l10n: git.pot: v2.25.0 round 1 (119 new, 13 removed)
  l10n: Update Catalan translation
  l10n: zh_TW: add translation for v2.24.0

4 years agoRevert "Merge branch 'ra/rebase-i-more-options'"
Junio C Hamano [Sun, 12 Jan 2020 20:27:41 +0000 (12:27 -0800)] 
Revert "Merge branch 'ra/rebase-i-more-options'"

This reverts commit 5d9324e0f4210bb7d52bcb79efe3935703083f72, reversing
changes made to c58ae96fc4bb11916b62a96940bb70bb85ea5992.

The topic turns out to be too buggy for real use.

cf. <f2fe7437-8a48-3315-4d3f-8d51fe4bb8f1@gmail.com>

4 years agol10n: zh_CN: for git v2.25.0 l10n round 1
Jiang Xin [Mon, 30 Dec 2019 00:56:49 +0000 (08:56 +0800)] 
l10n: zh_CN: for git v2.25.0 l10n round 1

Translate 119 new messages (4800t0f0u) for git 2.25.0.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
4 years agoMerge branch 'master' of github.com:Softcatala/git-po into git-po-master
Jiang Xin [Sat, 11 Jan 2020 08:04:21 +0000 (16:04 +0800)] 
Merge branch 'master' of github.com:Softcatala/git-po into git-po-master

* 'master' of github.com:Softcatala/git-po:
  l10n: Update Catalan translation

4 years agoMerge branch 'js/mingw-loosen-overstrict-tree-entry-checks'
Junio C Hamano [Fri, 10 Jan 2020 22:45:26 +0000 (14:45 -0800)] 
Merge branch 'js/mingw-loosen-overstrict-tree-entry-checks'

Further tweak to a "no backslash in indexed paths" for Windows port
we applied earlier.

* js/mingw-loosen-overstrict-tree-entry-checks:
  mingw: safeguard better against backslashes in file names

4 years agoMerge branch 'ma/config-advice-markup-fix'
Junio C Hamano [Fri, 10 Jan 2020 22:45:26 +0000 (14:45 -0800)] 
Merge branch 'ma/config-advice-markup-fix'

Documentation markup fix.

* ma/config-advice-markup-fix:
  config/advice.txt: fix description list separator

4 years agol10n: Update Catalan translation
Jordi Mas [Fri, 10 Jan 2020 21:21:55 +0000 (22:21 +0100)] 
l10n: Update Catalan translation

Signed-off-by: Jordi Mas <jmas@softcatala.org>
4 years agomingw: safeguard better against backslashes in file names
Johannes Schindelin via GitGitGadget [Thu, 9 Jan 2020 13:30:34 +0000 (13:30 +0000)] 
mingw: safeguard better against backslashes in file names

In 224c7d70fa1 (mingw: only test index entries for backslashes, not tree
entries, 2019-12-31), we relaxed the check for backslashes in tree
entries to check only index entries.

However, the code change was incorrect: it was added to
`add_index_entry_with_check()`, not to `add_index_entry()`, so under
certain circumstances it was possible to side-step the protection.

Besides, the description of that commit purported that all index entries
would be checked when in fact they were only checked when being added to
the index (there are code paths that do not do that, constructing
"transient" index entries).

In any case, it was pointed out in one insightful review at
https://github.com/git-for-windows/git/pull/2437#issuecomment-566771835
that it would be a much better idea to teach `verify_path()` to perform
the check for a backslash. This is safer, even if it comes with two
notable drawbacks:

- `verify_path()` cannot say _what_ is wrong with the path, therefore
  the user will no longer be told that there was a backslash in the
  path, only that the path was invalid.

- The `git apply` command also calls the `verify_path()` function, and
  might have been able to handle Windows-style paths (i.e. with
  backslashes instead of forward slashes). This will no longer be
  possible unless the user (temporarily) sets `core.protectNTFS=false`.

Note that `git add <windows-path>` will _still_ work because
`normalize_path_copy_len()` will convert the backslashes to forward
slashes before hitting the code path that creates an index entry.

The clear advantage is that `verify_path()`'s purpose is to check the
validity of the file name, therefore we naturally tap into all the code
paths that need safeguarding, also implicitly into future code paths.

The benefits of that approach outweigh the downsides, so let's move the
check from `add_index_entry_with_check()` to `verify_path()`.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agol10n: de.po: Update German translation v2.25.0 round 1
Matthias Rüster [Sun, 5 Jan 2020 14:55:00 +0000 (15:55 +0100)] 
l10n: de.po: Update German translation v2.25.0 round 1

Signed-off-by: Matthias Rüster <matthias.ruester@gmail.com>
Reviewed-by: Ralf Thielow <ralf.thielow@gmail.com>
Reviewed-by: Phillip Szelat <phillip.szelat@gmail.com>
4 years agol10n: de.po: Reword generation numbers
Thomas Braun [Sun, 15 Dec 2019 17:35:48 +0000 (18:35 +0100)] 
l10n: de.po: Reword generation numbers

The english term generation is here not used in the sense of "to
generate" but in the sense of "generations of beings".

This corrects the initial translation from cf4c0c25 (l10n: update German
translation, 2018-12-06).

Fixed-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
4 years agol10n: bg.po: Updated Bulgarian translation (4800t)
Alexander Shopov [Thu, 9 Jan 2020 11:45:26 +0000 (12:45 +0100)] 
l10n: bg.po: Updated Bulgarian translation (4800t)

Signed-off-by: Alexander Shopov <ash@kambanaria.org>
4 years agoconfig/advice.txt: fix description list separator
Martin Ågren [Wed, 8 Jan 2020 20:08:44 +0000 (21:08 +0100)] 
config/advice.txt: fix description list separator

The whole submoduleAlternateErrorStrategyDie item is interpreted as
being part of the supporting content of the preceding item. This is
because we don't give a double-colon "::" for the separator, but just a
single colon, ":". Let's fix that.

There are a few other matches for [^:]:\s*$ in Documentation/config, but
I didn't spot any similar bugs among them.

Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoGit 2.25-rc2 v2.25.0-rc2
Junio C Hamano [Wed, 8 Jan 2020 20:43:54 +0000 (12:43 -0800)] 
Git 2.25-rc2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoMerge branch 'ds/graph-assert-fix'
Junio C Hamano [Wed, 8 Jan 2020 20:44:12 +0000 (12:44 -0800)] 
Merge branch 'ds/graph-assert-fix'

Since recent updates to the log graph rendering code, drawing
certain merges started triggering an assert on a condition that
would no longer hold true, which has been corrected.

* ds/graph-assert-fix:
  graph: fix lack of color in horizontal lines
  graph: drop assert() for merge with two collapsing parents

4 years agoMerge branch 'tm/doc-submodule-absorb-fix'
Junio C Hamano [Wed, 8 Jan 2020 20:44:12 +0000 (12:44 -0800)] 
Merge branch 'tm/doc-submodule-absorb-fix'

Typofix.

* tm/doc-submodule-absorb-fix:
  doc: submodule: fix typo for command absorbgitdirs

4 years agoMerge branch 'pm/am-in-body-header-doc-update'
Junio C Hamano [Wed, 8 Jan 2020 20:44:12 +0000 (12:44 -0800)] 
Merge branch 'pm/am-in-body-header-doc-update'

Doc update.

* pm/am-in-body-header-doc-update:
  am: document that Date: can appear as an in-body header

4 years agoMerge branch 'jb/doc-multi-pack-idx-fix'
Junio C Hamano [Wed, 8 Jan 2020 20:44:11 +0000 (12:44 -0800)] 
Merge branch 'jb/doc-multi-pack-idx-fix'

Typofix.

* jb/doc-multi-pack-idx-fix:
  multi-pack-index: correct configuration in documentation

4 years agoMerge branch 'do/gitweb-typofix-in-comments'
Junio C Hamano [Wed, 8 Jan 2020 20:44:11 +0000 (12:44 -0800)] 
Merge branch 'do/gitweb-typofix-in-comments'

Typofix.

* do/gitweb-typofix-in-comments:
  gitweb: fix a couple spelling errors in comments

4 years agoMerge https://github.com/prati0100/git-gui
Junio C Hamano [Wed, 8 Jan 2020 19:17:16 +0000 (11:17 -0800)] 
Merge https://github.com/prati0100/git-gui

* https://github.com/prati0100/git-gui:
  git-gui: allow opening currently selected file in default app
  git-gui: allow closing console window with Escape
  git gui: fix branch name encoding error
  git-gui: revert untracked files by deleting them
  git-gui: update status bar to track operations
  git-gui: consolidate naming conventions

4 years agograph: fix lack of color in horizontal lines
Derrick Stolee [Tue, 7 Jan 2020 21:27:02 +0000 (21:27 +0000)] 
graph: fix lack of color in horizontal lines

In some cases, horizontal lines in rendered graphs can lose their
coloring. This is due to a use of graph_line_addch() instead of
graph_line_write_column(). Using a ternary operator to pick the
character is nice for compact code, but we actually need a column to
provide the color.

Add a test to t4215-log-skewed-merges.sh to prevent regression.

Reported-by: Jeff King <peff@peff.net>
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agograph: drop assert() for merge with two collapsing parents
Derrick Stolee [Tue, 7 Jan 2020 21:27:01 +0000 (21:27 +0000)] 
graph: drop assert() for merge with two collapsing parents

When "git log --graph" shows a merge commit that has two collapsing
lines, like:

    | | | | *
    | |_|_|/|
    |/| | |/
    | | |/|
    | |/| |
    | * | |
    * | | |

we trigger an assert():

        graph.c:1228: graph_output_collapsing_line: Assertion
                      `graph->mapping[i - 3] == target' failed.

The assert was introduced by eaf158f8 ("graph API: Use horizontal
lines for more compact graphs", 2009-04-21), which is quite old.
This assert is trying to say that when we complete a horizontal
line with a single slash, it is because we have reached our target.

It is actually the _second_ collapsing line that hits this assert.
The reason we are in this code path is because we are collapsing
the first line, and in that case we are hitting our target now
that the horizontal line is complete. However, the second line
cannot be a horizontal line, so it will collapse without horizontal
lines. In this case, it is inappropriate to assert that we have
reached our target, as we need to continue for another column
before reaching the target. Dropping the assert is safe here.

The new behavior in 0f0f389f12 (graph: tidy up display of
left-skewed merges, 2019-10-15) caused the behavior change that
made this assertion failure possible. In addition to making the
assert possible, it also changed how multiple edges collapse.

In a larger example, the current code will output a collapse
as follows:

| | | | | | *
| |_|_|_|_|/|\
|/| | | | |/ /
| | | | |/| /
| | | |/| |/
| | |/| |/|
| |/| |/| |
| | |/| | |
| | * | | |

However, the intended collapse should allow multiple horizontal lines
as follows:

| | | | | | *
| |_|_|_|_|/|\
|/| | | | |/ /
| | |_|_|/| /
| |/| | | |/
| | | |_|/|
| | |/| | |
| | * | | |

This behavior is not corrected by this change, but is noted for a later
update.

Helped-by: Jeff King <peff@peff.net>
Reported-by: Bradley Smith <brad@brad-smith.co.uk>
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoThe final batch before -rc2
Junio C Hamano [Mon, 6 Jan 2020 22:17:38 +0000 (14:17 -0800)] 
The final batch before -rc2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoMerge branch 'ds/sparse-cone'
Junio C Hamano [Mon, 6 Jan 2020 22:17:51 +0000 (14:17 -0800)] 
Merge branch 'ds/sparse-cone'

Code cleanup.

* ds/sparse-cone:
  Documentation/git-sparse-checkout.txt: fix a typo
  sparse-checkout: use extern for global variables

4 years agoMerge branch 'ds/commit-graph-set-size-mult'
Junio C Hamano [Mon, 6 Jan 2020 22:17:51 +0000 (14:17 -0800)] 
Merge branch 'ds/commit-graph-set-size-mult'

The code to write split commit-graph file(s) upon fetching computed
bogus value for the parameter used in splitting the resulting
files, which has been corrected.

* ds/commit-graph-set-size-mult:
  commit-graph: prefer default size_mult when given zero

4 years agoMerge branch 'en/merge-recursive-oid-eq-simplify'
Junio C Hamano [Mon, 6 Jan 2020 22:17:51 +0000 (14:17 -0800)] 
Merge branch 'en/merge-recursive-oid-eq-simplify'

Code cleanup.

* en/merge-recursive-oid-eq-simplify:
  merge-recursive: remove unnecessary oid_eq function

4 years agoMerge branch 'ds/sparse-list-in-cone-mode'
Junio C Hamano [Mon, 6 Jan 2020 22:17:51 +0000 (14:17 -0800)] 
Merge branch 'ds/sparse-list-in-cone-mode'

"git sparse-checkout list" subcommand learned to give its output in
a more concise form when the "cone" mode is in effect.

* ds/sparse-list-in-cone-mode:
  sparse-checkout: document interactions with submodules
  sparse-checkout: list directories in cone mode

4 years agoMerge branch 'js/mingw-loosen-overstrict-tree-entry-checks'
Junio C Hamano [Mon, 6 Jan 2020 22:17:50 +0000 (14:17 -0800)] 
Merge branch 'js/mingw-loosen-overstrict-tree-entry-checks'

An earlier update to Git for Windows declared that a tree object is
invalid if it has a path component with backslash in it, which was
overly strict, which has been corrected.  The only protection the
Windows users need is to prevent such path (or any path that their
filesystem cannot check out) from entering the index.

* js/mingw-loosen-overstrict-tree-entry-checks:
  mingw: only test index entries for backslashes, not tree entries

4 years agoMerge branch 'pb/clarify-line-log-doc'
Junio C Hamano [Mon, 6 Jan 2020 22:17:50 +0000 (14:17 -0800)] 
Merge branch 'pb/clarify-line-log-doc'

Doc update.

* pb/clarify-line-log-doc:
  doc: log, gitk: line-log arguments must exist in starting revision
  doc: log, gitk: document accepted line-log diff formats

4 years agoMerge branch 'ew/packfile-syscall-optim'
Junio C Hamano [Mon, 6 Jan 2020 22:17:50 +0000 (14:17 -0800)] 
Merge branch 'ew/packfile-syscall-optim'

Code cleanup.

* ew/packfile-syscall-optim:
  packfile: replace lseek+read with pread
  packfile: remove redundant fcntl F_GETFD/F_SETFD

4 years agodoc: submodule: fix typo for command absorbgitdirs
Thomas Menzel [Mon, 6 Jan 2020 14:50:13 +0000 (14:50 +0000)] 
doc: submodule: fix typo for command absorbgitdirs

The sentence wants to talk about the superproject's possesive, not plural form.

Signed-off-by: Thomas Menzel <dev@tomsit.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agol10n: es: 2.25.0 round #1
Christopher Diaz Riveros [Mon, 6 Jan 2020 14:18:43 +0000 (09:18 -0500)] 
l10n: es: 2.25.0 round #1

Signed-off-by: Christopher Diaz Riveros <christopher.diaz.riv@gmail.com>
4 years agoam: document that Date: can appear as an in-body header
Paul Menzel [Fri, 3 Jan 2020 15:05:46 +0000 (16:05 +0100)] 
am: document that Date: can appear as an in-body header

Similar to "From:" and "Subject:" already mentioned in the
documentation, "Date:" can also appear as an in-body header
to override the value in the e-mail headers.  Document it.

Signed-off-by: Paul Menzel <pmenzel@molgen.mpg.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agogitweb: fix a couple spelling errors in comments
Denis Ovsienko [Sat, 4 Jan 2020 17:39:26 +0000 (18:39 +0100)] 
gitweb: fix a couple spelling errors in comments

Signed-off-by: Denis Ovsienko <denis@ovsienko.info>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agomulti-pack-index: correct configuration in documentation
Johannes Berg [Sat, 4 Jan 2020 12:43:14 +0000 (13:43 +0100)] 
multi-pack-index: correct configuration in documentation

It's core.multiPackIndex, not pack.multiIndex.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoDocumentation/git-sparse-checkout.txt: fix a typo
Taylor Blau [Thu, 2 Jan 2020 22:51:40 +0000 (15:51 -0700)] 
Documentation/git-sparse-checkout.txt: fix a typo

This typo was introduced in 94c0956b60 (sparse-checkout: create builtin
with 'list' subcommand, 2019-11-21).

Signed-off-by: Taylor Blau <me@ttaylorr.com>
Acked-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoMerge branch 'zs/open-current-file'
Pratyush Yadav [Sat, 4 Jan 2020 21:08:03 +0000 (02:38 +0530)] 
Merge branch 'zs/open-current-file'

Allow opening the currently selected file in its default app by clicking
on its name.

* zs/open-current-file:
  git-gui: allow opening currently selected file in default app

4 years agol10n: sv.po: Update Swedish translation (4800t0f0u)
Peter Krefting [Sat, 4 Jan 2020 18:53:30 +0000 (19:53 +0100)] 
l10n: sv.po: Update Swedish translation (4800t0f0u)

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
4 years agoMerge branch 'fr_v2.25.0_rnd1' of github.com:jnavila/git into master
Jiang Xin [Sat, 4 Jan 2020 00:46:36 +0000 (08:46 +0800)] 
Merge branch 'fr_v2.25.0_rnd1' of github.com:jnavila/git into master

* 'fr_v2.25.0_rnd1' of github.com:jnavila/git:
  l10n: fr.po v2.25.0 rnd 1

4 years agol10n: fr.po v2.25.0 rnd 1
Jean-Noël Avila [Fri, 3 Jan 2020 17:47:15 +0000 (18:47 +0100)] 
l10n: fr.po v2.25.0 rnd 1

Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
4 years agol10n: vi(4800t): Updated Vietnamese translation v2.25.0
Tran Ngoc Quan [Fri, 3 Jan 2020 07:12:58 +0000 (14:12 +0700)] 
l10n: vi(4800t): Updated Vietnamese translation v2.25.0

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
4 years agocommit-graph: prefer default size_mult when given zero
Derrick Stolee [Thu, 2 Jan 2020 16:14:14 +0000 (16:14 +0000)] 
commit-graph: prefer default size_mult when given zero

In 50f26bd ("fetch: add fetch.writeCommitGraph config setting",
2019-09-02), the fetch builtin added the capability to write a
commit-graph using the "--split" feature. This feature creates
multiple commit-graph files, and those can merge based on a set
of "split options" including a size multiple. The default size
multiple is 2, which intends to provide a log_2 N depth of the
commit-graph chain where N is the number of commits.

However, I noticed during dogfooding that my commit-graph chains
were becoming quite large when left only to builds by 'git fetch'.
It turns out that in split_graph_merge_strategy(), we default the
size_mult variable to 2 except we override it with the context's
split_opts if they exist. In builtin/fetch.c, we create such a
split_opts, but do not populate it with values.

This problem is due to two failures:

 1. It is unclear that we can add the flag COMMIT_GRAPH_WRITE_SPLIT
    with a NULL split_opts.
 2. If we have a non-NULL split_opts, then we override the default
    values even if a zero value is given.

Correct both of these issues. First, do not override size_mult when
the options provide a zero value. Second, stop creating a split_opts
in the fetch builtin.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agomingw: only test index entries for backslashes, not tree entries
Johannes Schindelin [Tue, 31 Dec 2019 22:53:50 +0000 (22:53 +0000)] 
mingw: only test index entries for backslashes, not tree entries

During a clone of a repository that contained a file with a backslash in
its name in the past, as of v2.24.1(2), Git for Windows prints errors
like this:

error: filename in tree entry contains backslash: '\'

The idea is to prevent Git from even trying to write files with
backslashes in their file names: while these characters are valid in
file names on other platforms, on Windows it is interpreted as directory
separator (which would obviously lead to ambiguities, e.g. when there is
a file `a\b` and there is also a file `a/b`).

Arguably, this is the wrong layer for that error: As long as the user
never checks out the files whose names contain backslashes, there should
not be any problem in the first place.

So let's loosen the requirements: we now leave tree entries with
backslashes in their file names alone, but we do require any entries
that are added to the Git index to contain no backslashes on Windows.

Note: just as before, the check is guarded by `core.protectNTFS` (to
allow overriding the check by toggling that config setting), and it
is _only_ performed on Windows, as the backslash is not a directory
separator elsewhere, even when writing to NTFS-formatted volumes.

An alternative approach would be to try to prevent creating files with
backslashes in their file names. However, that comes with its own set of
problems. For example, `git config -f C:\ProgramData\Git\config ...` is
a very valid way to specify a custom config location, and we obviously
do _not_ want to prevent that. Therefore, the approach chosen in this
patch would appear to be better.

This addresses https://github.com/git-for-windows/git/issues/2435

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoGit 2.25-rc1 v2.25.0-rc1
Junio C Hamano [Thu, 2 Jan 2020 20:37:02 +0000 (12:37 -0800)] 
Git 2.25-rc1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoMerge branch 'js/use-test-tool-on-path'
Junio C Hamano [Thu, 2 Jan 2020 20:38:30 +0000 (12:38 -0800)] 
Merge branch 'js/use-test-tool-on-path'

Test fix.

* js/use-test-tool-on-path:
  t3008: find test-tool through path lookup

4 years agoMerge branch 'js/mingw-reserved-filenames'
Junio C Hamano [Thu, 2 Jan 2020 20:38:30 +0000 (12:38 -0800)] 
Merge branch 'js/mingw-reserved-filenames'

Forbid pathnames that the platform's filesystem cannot represent on
MinGW.

* js/mingw-reserved-filenames:
  mingw: refuse paths containing reserved names
  mingw: short-circuit the conversion of `/dev/null` to UTF-16

4 years agoMerge branch 'en/rebase-signoff-fix'
Junio C Hamano [Thu, 2 Jan 2020 20:38:30 +0000 (12:38 -0800)] 
Merge branch 'en/rebase-signoff-fix'

"git rebase --signoff" stopped working when the command was written
in C, which has been corrected.

* en/rebase-signoff-fix:
  rebase: fix saving of --signoff state for am-based rebases

4 years agoMerge branch 'em/freebsd-cirrus-ci'
Junio C Hamano [Thu, 2 Jan 2020 20:38:29 +0000 (12:38 -0800)] 
Merge branch 'em/freebsd-cirrus-ci'

* em/freebsd-cirrus-ci:
  CI: add FreeBSD CI support via Cirrus-CI

4 years agoMerge branch 'bk/p4-misc-usability'
Junio C Hamano [Thu, 2 Jan 2020 20:38:29 +0000 (12:38 -0800)] 
Merge branch 'bk/p4-misc-usability'

Miscellaneous small UX improvements on "git-p4".

* bk/p4-misc-usability:
  git-p4: show detailed help when parsing options fail
  git-p4: yes/no prompts should sanitize user text

4 years agomerge-recursive: remove unnecessary oid_eq function
Elijah Newren [Wed, 1 Jan 2020 05:20:57 +0000 (05:20 +0000)] 
merge-recursive: remove unnecessary oid_eq function

Back when merge-recursive was first introduced in commit 6d297f8137
(Status update on merge-recursive in C, 2006-07-08), it created a
sha_eq() function.  This function pre-dated the introduction of
hashcmp() to cache.h by about a month, but was switched over to using
hashcmp() as part of commit 9047ebbc22 (Split out merge_recursive() to
merge-recursive.c, 2008-08-12).  In commit b4da9d62f9 (merge-recursive:
convert leaf functions to use struct object_id, 2016-06-24), sha_eq() was
renamed to oid_eq() and its hashcmp() call was switched to oideq().

oid_eq() is basically just a wrapper around oideq() that has some extra
checks to protect against NULL arguments or to allow short-circuiting if
one of the arguments is NULL.  I don't know if any caller ever tried to
call with NULL arguments, but certainly none do now which means the
extra checks serve no purpose.  (Also, if these checks were genuinely
useful, then they probably should be added to the main oideq() so all
callers could benefit from them.)

Reduce the cognitive overhead of having both oid_eq() and oideq(), by
getting rid of merge-recursive's special oid_eq() wrapper.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agosparse-checkout: use extern for global variables
Derrick Stolee [Tue, 31 Dec 2019 13:17:48 +0000 (13:17 +0000)] 
sparse-checkout: use extern for global variables

When the core.sparseCheckoutCone config setting was added in
879321eb0b ("sparse-checkout: add 'cone' mode" 2019-11-21), the
variables storing the config values for core.sparseCheckout and
core.sparseCheckoutCone were rearranged in cache.h, but in doing
so the "extern" keyword was dropped.

While we are tending to drop the "extern" keyword for function
declarations, it is still necessary for global variables used
across multiple *.c files. The impact of not having the extern
keyword may be unpredictable.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoMerge branch 'translation_191231' of github.com:l10n-tw/git-po into git-po-master
Jiang Xin [Wed, 1 Jan 2020 03:15:05 +0000 (11:15 +0800)] 
Merge branch 'translation_191231' of github.com:l10n-tw/git-po into git-po-master

* 'translation_191231' of github.com:l10n-tw/git-po:
  l10n: zh_TW.po: update translation for v2.25.0 round 1

4 years agol10n: zh_TW.po: update translation for v2.25.0 round 1
pan93412 [Mon, 30 Dec 2019 16:58:40 +0000 (00:58 +0800)] 
l10n: zh_TW.po: update translation for v2.25.0 round 1

Signed-off-by: pan93412 <pan93412@gmail.com>
4 years agogit-gui: allow opening currently selected file in default app
Zoli Szabó [Mon, 30 Dec 2019 15:56:59 +0000 (15:56 +0000)] 
git-gui: allow opening currently selected file in default app

Many times there's the need to quickly open a source file (the one you're
looking at in Git GUI) in the predefined text editor / IDE. Of course,
the file can be searched for in your preferred file manager or directly
in the text editor, but having the option to directly open the current
file from Git GUI would be just faster. This change enables just that by:
 - clicking the diff header path (which is now highlighted as a hyperlink)
 - or diff header path context menu -> Open

Note: executable files will be run and not opened for editing.

Signed-off-by: Zoli Szabó <zoli.szabo@gmail.com>
Signed-off-by: Pratyush Yadav <me@yadavpratyush.com>
4 years agosparse-checkout: document interactions with submodules
Derrick Stolee [Mon, 30 Dec 2019 15:33:13 +0000 (15:33 +0000)] 
sparse-checkout: document interactions with submodules

Using 'git submodule (init|deinit)' a user can select a subset of
submodules to populate. This behaves very similar to the sparse-checkout
feature, but those directories contain their own .git directory
including an object database and ref space. To have the sparse-checkout
file also determine if those files should exist would easily cause
problems. Therefore, keeping these features independent in this way
is the best way forward.

Also create a test that demonstrates this behavior to make sure
it doesn't change as the sparse-checkout feature evolves.

Reported-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agosparse-checkout: list directories in cone mode
Derrick Stolee [Mon, 30 Dec 2019 15:33:12 +0000 (15:33 +0000)] 
sparse-checkout: list directories in cone mode

When core.sparseCheckoutCone is enabled, the 'git sparse-checkout set'
command takes a list of directories as input, then creates an ordered
list of sparse-checkout patterns such that those directories are
recursively included and all sibling entries along the parent directories
are also included. Listing the patterns is less user-friendly than the
directories themselves.

In cone mode, and as long as the patterns match the expected cone-mode
pattern types, change the output of 'git sparse-checkout list' to only
show the directories that created the patterns.

With this change, the following piped commands would not change the
working directory:

git sparse-checkout list | git sparse-checkout set --stdin

The only time this would not work is if core.sparseCheckoutCone is
true, but the sparse-checkout file contains patterns that do not
match the expected pattern types for cone mode.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agol10n: it.po: update the Italian translation for Git 2.25.0
Alessandro Menti [Mon, 30 Dec 2019 08:46:51 +0000 (09:46 +0100)] 
l10n: it.po: update the Italian translation for Git 2.25.0

Signed-off-by: Alessandro Menti <alessandro.menti@alessandromenti.it>
4 years agol10n: git.pot: v2.25.0 round 1 (119 new, 13 removed)
Jiang Xin [Mon, 30 Dec 2019 00:52:42 +0000 (08:52 +0800)] 
l10n: git.pot: v2.25.0 round 1 (119 new, 13 removed)

Generate po/git.pot from v2.25.0-rc0 for git v2.25.0 l10n round 1.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
4 years agoMerge tag 'v2.25.0-rc0' into git-po-master
Jiang Xin [Mon, 30 Dec 2019 00:47:27 +0000 (08:47 +0800)] 
Merge tag 'v2.25.0-rc0' into git-po-master

Git 2.25-rc0

* tag 'v2.25.0-rc0': (531 commits)
  Git 2.25-rc0
  sparse-checkout: improve OS ls compatibility
  dir.c: use st_add3() for allocation size
  dir: consolidate similar code in treat_directory()
  dir: synchronize treat_leading_path() and read_directory_recursive()
  dir: fix checks on common prefix directory
  t4015: improve coverage of function context test
  commit: forbid --pathspec-from-file --all
  t3434: mark successful test as such
  notes.h: fix typos in comment
  t6030: don't create unused file
  t5580: don't create unused file
  t3501: don't create unused file
  bisect--helper: convert `*_warning` char pointers to char arrays.
  The sixth batch
  fix-typo: consecutive-word duplications
  Makefile: drop GEN_HDRS
  built-in add -p: show helpful hint when nothing can be staged
  built-in add -p: only show the applicable parts of the help text
  built-in add -p: implement the 'q' ("quit") command
  ...

4 years agot3008: find test-tool through path lookup
Johannes Sixt [Sun, 22 Dec 2019 15:03:53 +0000 (16:03 +0100)] 
t3008: find test-tool through path lookup

Do not use $GIT_BUILD_DIR without quotes; it may contain spaces and be
split into fields. But it is not necessary to access test-tool with an
absolute path in the first place as it can be found via path lookup.
Remove the explicit path.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agol10n: Update Catalan translation
Jordi Mas [Fri, 27 Dec 2019 17:23:20 +0000 (18:23 +0100)] 
l10n: Update Catalan translation

Signed-off-by: Jordi Mas <jmas@softcatala.org>
4 years agopackfile: replace lseek+read with pread
Eric Wong [Thu, 26 Dec 2019 10:42:20 +0000 (10:42 +0000)] 
packfile: replace lseek+read with pread

We already have pread emulation for portability, so there's
there's no reason to make two syscalls where one suffices.

Furthermore, readers of the packfile will be using mmap
(or pread to emulate mmap), anyways, so the file description
offset does not matter in this case.

Signed-off-by: Eric Wong <e@80x24.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agodoc: log, gitk: line-log arguments must exist in starting revision
Philippe Blain [Thu, 26 Dec 2019 17:43:37 +0000 (17:43 +0000)] 
doc: log, gitk: line-log arguments must exist in starting revision

The line number, regex or offset parameters <start> and <end> in
`git log -L <start>,<end>:<file>`, or the function name regex in
`git log -L :<funcname>:<file>` must exist in the starting
revision, or else the command exits with a fatal error.

This is not obvious in the documentation, so add a note to that
effect.

Signed-off-by: Philippe Blain <levraiphilippeblain@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agodoc: log, gitk: document accepted line-log diff formats
Philippe Blain [Thu, 26 Dec 2019 17:43:36 +0000 (17:43 +0000)] 
doc: log, gitk: document accepted line-log diff formats

Currently the line-log functionality (git log -L) only supports
displaying patch output (`-p | --patch`, its default behavior) and suppressing it
(`-s | --no-patch`). A check was added in the code to that effect in 5314efaea
(line-log: detect unsupported formats, 2019-03-10) but the documentation was not
updated.

Explicitly mention that `-L` implies `-p`, that patch output can be
suppressed using `-s`, and that all other diff formats are not allowed.

Signed-off-by: Philippe Blain <levraiphilippeblain@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agopackfile: remove redundant fcntl F_GETFD/F_SETFD
Eric Wong [Thu, 26 Dec 2019 10:42:19 +0000 (10:42 +0000)] 
packfile: remove redundant fcntl F_GETFD/F_SETFD

git_open sets close-on-exec since cd66ada06588f797
("sha1_file: open window into packfiles with O_CLOEXEC").
There's no reason to keep using fcntl to set the close-on-exec
flag, anymore.

Signed-off-by: Eric Wong <e@80x24.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agomailmap: mask accentless variant for Công Danh
Junio C Hamano [Thu, 26 Dec 2019 17:53:09 +0000 (09:53 -0800)] 
mailmap: mask accentless variant for Công Danh

Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoGit 2.25-rc0 v2.25.0-rc0
Junio C Hamano [Wed, 25 Dec 2019 19:21:28 +0000 (11:21 -0800)] 
Git 2.25-rc0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoMerge branch 'en/fill-directory-fixes'
Junio C Hamano [Wed, 25 Dec 2019 19:22:02 +0000 (11:22 -0800)] 
Merge branch 'en/fill-directory-fixes'

Assorted fixes to the directory traversal API.

* en/fill-directory-fixes:
  dir.c: use st_add3() for allocation size
  dir: consolidate similar code in treat_directory()
  dir: synchronize treat_leading_path() and read_directory_recursive()
  dir: fix checks on common prefix directory
  dir: break part of read_directory_recursive() out for reuse
  dir: exit before wildcard fall-through if there is no wildcard
  dir: remove stray quote character in comment
  Revert "dir.c: make 'git-status --ignored' work within leading directories"
  t3011: demonstrate directory traversal failures

4 years agoMerge branch 'rs/test-cleanup'
Junio C Hamano [Wed, 25 Dec 2019 19:22:01 +0000 (11:22 -0800)] 
Merge branch 'rs/test-cleanup'

Test cleanup.

* rs/test-cleanup:
  t6030: don't create unused file
  t5580: don't create unused file
  t3501: don't create unused file
  t7004: don't create unused file
  t4256: don't create unused file

4 years agoMerge branch 'mr/bisect-save-pointer-to-const-string'
Junio C Hamano [Wed, 25 Dec 2019 19:22:01 +0000 (11:22 -0800)] 
Merge branch 'mr/bisect-save-pointer-to-const-string'

Code cleanup.

* mr/bisect-save-pointer-to-const-string:
  bisect--helper: convert `*_warning` char pointers to char arrays.

4 years agoMerge branch 'rs/xdiff-ignore-ws-w-func-context'
Junio C Hamano [Wed, 25 Dec 2019 19:22:01 +0000 (11:22 -0800)] 
Merge branch 'rs/xdiff-ignore-ws-w-func-context'

Extend test coverage for a recent fix.

* rs/xdiff-ignore-ws-w-func-context:
  t4015: improve coverage of function context test

4 years agoMerge branch 'js/add-p-in-c'
Junio C Hamano [Wed, 25 Dec 2019 19:22:00 +0000 (11:22 -0800)] 
Merge branch 'js/add-p-in-c'

The effort to move "git-add--interactive" to C continues.

* js/add-p-in-c:
  built-in add -p: show helpful hint when nothing can be staged
  built-in add -p: only show the applicable parts of the help text
  built-in add -p: implement the 'q' ("quit") command
  built-in add -p: implement the '/' ("search regex") command
  built-in add -p: implement the 'g' ("goto") command
  built-in add -p: implement hunk editing
  strbuf: add a helper function to call the editor "on an strbuf"
  built-in add -p: coalesce hunks after splitting them
  built-in add -p: implement the hunk splitting feature
  built-in add -p: show different prompts for mode changes and deletions
  built-in app -p: allow selecting a mode change as a "hunk"
  built-in add -p: handle deleted empty files
  built-in add -p: support multi-file diffs
  built-in add -p: offer a helpful error message when hunk navigation failed
  built-in add -p: color the prompt and the help text
  built-in add -p: adjust hunk headers as needed
  built-in add -p: show colored hunks by default
  built-in add -i: wire up the new C code for the `patch` command
  built-in add -i: start implementing the `patch` functionality in C

4 years agoMerge branch 'jc/drop-gen-hdrs'
Junio C Hamano [Wed, 25 Dec 2019 19:22:00 +0000 (11:22 -0800)] 
Merge branch 'jc/drop-gen-hdrs'

Code cleanup.

* jc/drop-gen-hdrs:
  Makefile: drop GEN_HDRS

4 years agoMerge branch 'ja/doc-markup-cleanup'
Junio C Hamano [Wed, 25 Dec 2019 19:22:00 +0000 (11:22 -0800)] 
Merge branch 'ja/doc-markup-cleanup'

Doc cleanup.

* ja/doc-markup-cleanup:
  doc: indent multi-line items in list
  doc: remove non pure ASCII characters

4 years agoMerge branch 'rs/ref-read-cleanup'
Junio C Hamano [Wed, 25 Dec 2019 19:22:00 +0000 (11:22 -0800)] 
Merge branch 'rs/ref-read-cleanup'

Code cleanup.

* rs/ref-read-cleanup:
  remote: pass NULL to read_ref_full() because object ID is not needed
  refs: pass NULL to refs_read_ref_full() because object ID is not needed

4 years agoMerge branch 'rb/p4-lfs'
Junio C Hamano [Wed, 25 Dec 2019 19:22:00 +0000 (11:22 -0800)] 
Merge branch 'rb/p4-lfs'

"git p4" used to ignore lfs.storage configuration variable, which
has been corrected.

* rb/p4-lfs:
  git-p4: honor lfs.storage configuration variable

4 years agoMerge branch 'pb/submodule-doc-xref'
Junio C Hamano [Wed, 25 Dec 2019 19:21:59 +0000 (11:21 -0800)] 
Merge branch 'pb/submodule-doc-xref'

Doc update.

* pb/submodule-doc-xref:
  gitmodules: link to gitsubmodules guide

4 years agoMerge branch 'mr/bisect-use-after-free'
Junio C Hamano [Wed, 25 Dec 2019 19:21:59 +0000 (11:21 -0800)] 
Merge branch 'mr/bisect-use-after-free'

Use-after-free fix.

* mr/bisect-use-after-free:
  bisect--helper: avoid use-after-free

4 years agoMerge branch 'ln/userdiff-elixir'
Junio C Hamano [Wed, 25 Dec 2019 19:21:59 +0000 (11:21 -0800)] 
Merge branch 'ln/userdiff-elixir'

Hotfix.

* ln/userdiff-elixir:
  userdiff: remove empty subexpression from elixir regex

4 years agoMerge branch 'ds/sparse-cone'
Junio C Hamano [Wed, 25 Dec 2019 19:21:58 +0000 (11:21 -0800)] 
Merge branch 'ds/sparse-cone'

Management of sparsely checked-out working tree has gained a
dedicated "sparse-checkout" command.

* ds/sparse-cone: (21 commits)
  sparse-checkout: improve OS ls compatibility
  sparse-checkout: respect core.ignoreCase in cone mode
  sparse-checkout: check for dirty status
  sparse-checkout: update working directory in-process for 'init'
  sparse-checkout: cone mode should not interact with .gitignore
  sparse-checkout: write using lockfile
  sparse-checkout: use in-process update for disable subcommand
  sparse-checkout: update working directory in-process
  sparse-checkout: sanitize for nested folders
  unpack-trees: add progress to clear_ce_flags()
  unpack-trees: hash less in cone mode
  sparse-checkout: init and set in cone mode
  sparse-checkout: use hashmaps for cone patterns
  sparse-checkout: add 'cone' mode
  trace2: add region in clear_ce_flags
  sparse-checkout: create 'disable' subcommand
  sparse-checkout: add '--stdin' option to set subcommand
  sparse-checkout: 'set' subcommand
  clone: add --sparse mode
  sparse-checkout: create 'init' subcommand
  ...

4 years agoMerge branch 'sg/name-rev-wo-recursion'
Junio C Hamano [Wed, 25 Dec 2019 19:21:58 +0000 (11:21 -0800)] 
Merge branch 'sg/name-rev-wo-recursion'

Redo "git name-rev" to avoid recursive calls.

* sg/name-rev-wo-recursion:
  name-rev: cleanup name_ref()
  name-rev: eliminate recursion in name_rev()
  name-rev: use 'name->tip_name' instead of 'tip_name'
  name-rev: drop name_rev()'s 'generation' and 'distance' parameters
  name-rev: restructure creating/updating 'struct rev_name' instances
  name-rev: restructure parsing commits and applying date cutoff
  name-rev: pull out deref handling from the recursion
  name-rev: extract creating/updating a 'struct name_rev' into a helper
  t6120: add a test to cover inner conditions in 'git name-rev's name_rev()
  name-rev: use sizeof(*ptr) instead of sizeof(type) in allocation
  name-rev: avoid unnecessary cast in name_ref()
  name-rev: use strbuf_strip_suffix() in get_rev_name()
  t6120-describe: modernize the 'check_describe' helper
  t6120-describe: correct test repo history graph in comment

4 years agoMerge branch 'ra/t5150-depends-on-perl'
Junio C Hamano [Wed, 25 Dec 2019 19:21:58 +0000 (11:21 -0800)] 
Merge branch 'ra/t5150-depends-on-perl'

Some Porcelain commands are written in Perl, and tests on them are
expected not to work when the platform lacks a working perl.

* ra/t5150-depends-on-perl:
  t5150: skip request-pull test if Perl is disabled

4 years agoMerge branch 'dl/format-patch-notes-config-fixup'
Junio C Hamano [Wed, 25 Dec 2019 19:21:58 +0000 (11:21 -0800)] 
Merge branch 'dl/format-patch-notes-config-fixup'

"git format-patch" can take a set of configured format.notes values
to specify which notes refs to use in the log message part of the
output.  The behaviour of this was not consistent with multiple
--notes command line options, which has been corrected.

* dl/format-patch-notes-config-fixup:
  notes.h: fix typos in comment
  notes: break set_display_notes() into smaller functions
  config/format.txt: clarify behavior of multiple format.notes
  format-patch: move git_config() before repo_init_revisions()
  format-patch: use --notes behavior for format.notes
  notes: extract logic into set_display_notes()
  notes: create init_display_notes() helper
  notes: rename to load_display_notes()