]> git.ipfire.org Git - thirdparty/git.git/log
thirdparty/git.git
6 years agoGit 2.22.3 v2.22.3
Junio C Hamano [Tue, 17 Mar 2020 21:24:55 +0000 (14:24 -0700)] 
Git 2.22.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoGit 2.21.2 v2.21.2
Junio C Hamano [Tue, 17 Mar 2020 21:16:08 +0000 (14:16 -0700)] 
Git 2.21.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoGit 2.20.3 v2.20.3
Junio C Hamano [Tue, 17 Mar 2020 20:42:38 +0000 (13:42 -0700)] 
Git 2.20.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoGit 2.19.4 v2.19.4
Junio C Hamano [Tue, 17 Mar 2020 20:37:37 +0000 (13:37 -0700)] 
Git 2.19.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoGit 2.18.3 v2.18.3
Junio C Hamano [Tue, 17 Mar 2020 20:34:12 +0000 (13:34 -0700)] 
Git 2.18.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoGit 2.17.4 v2.17.4
Junio C Hamano [Tue, 17 Mar 2020 20:23:48 +0000 (13:23 -0700)] 
Git 2.17.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agol10n: sv.po: Update Swedish translation (4839t0f0u)
Peter Krefting [Tue, 17 Mar 2020 17:33:22 +0000 (18:33 +0100)] 
l10n: sv.po: Update Swedish translation (4839t0f0u)

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
6 years agogit-gui: create a new namespace for chord script evaluation
Pratyush Yadav [Sat, 14 Mar 2020 21:38:36 +0000 (03:08 +0530)] 
git-gui: create a new namespace for chord script evaluation

Evaluating the script in the same namespace as the chord itself creates
potential for variable name collision. And in that case the script would
unknowingly use the chord's variables.

For example, say the script has a variable called 'is_completed', which
also exists in the chord's namespace. The script then calls 'eval' and
sets 'is_completed' to 1 thinking it is setting its own variable,
completely unaware of how the chord works behind the scenes. This leads
to the chord never actually executing because it sees 'is_completed' as
true and thinks it has already completed.

Avoid the potential collision by creating a separate namespace for the
script that is a child of the chord's namespace.

Signed-off-by: Pratyush Yadav <me@yadavpratyush.com>
6 years agogit-gui: reduce Tcl version requirement from 8.6 to 8.5
Pratyush Yadav [Mon, 17 Feb 2020 15:39:29 +0000 (21:09 +0530)] 
git-gui: reduce Tcl version requirement from 8.6 to 8.5

On some MacOS distributions like High Sierra, Tcl 8.5 is shipped by
default. This makes git-gui error out at startup because of the version
mismatch.

The only part that requires Tcl 8.6 is SimpleChord, which depends on
TclOO. So, don't use it and use our homegrown class.tcl instead.

This means some slight syntax changes. Since class.tcl doesn't have an
"unknown" method like TclOO does, we can't just call '$note', but have
to use '$note activate' instead. The constructor now needs a proper
namespace qualifier. Update the documentation to reflect the new syntax.

As of now, the only part of git-gui that needs Tcl 8.5 is a call to
'apply' in lib/index.tcl::lambda. Keep using it until someone shows up
shouting that their OS ships with 8.4 only. Then we would have to look
into implementing it in pure Tcl.

Signed-off-by: Pratyush Yadav <me@yadavpratyush.com>
6 years agol10n: zh_CN: Revise v2.26.0 translation
Fangyi Zhou [Wed, 11 Mar 2020 11:55:43 +0000 (11:55 +0000)] 
l10n: zh_CN: Revise v2.26.0 translation

Signed-off-by: Fangyi Zhou <me@fangyi.io>
Reviewed-by: 依云 <lilydjwg@gmail.com>
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
6 years agol10n: zh_CN: for git v2.26.0 l10n round 1 and 2
Jiang Xin [Mon, 30 Dec 2019 00:56:49 +0000 (08:56 +0800)] 
l10n: zh_CN: for git v2.26.0 l10n round 1 and 2

Translate 79 new messages (4839t0f0u) for git 2.26.0.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
6 years agolog: give --[no-]use-mailmap a more sensible synonym --[no-]mailmap
Junio C Hamano [Mon, 16 Mar 2020 20:30:38 +0000 (13:30 -0700)] 
log: give --[no-]use-mailmap a more sensible synonym --[no-]mailmap

The option name "--use-mailmap" looks OK, but it becomes awkward
when you have to negate it, i.e. "--no-use-mailmap".  I, perhaps
with many other users, always try "--no-mailmap" and become unhappy
to see it fail.

Add an alias "--[no-]mailmap" to remedy this.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoclone: reorder --recursive/--recurse-submodules
Junio C Hamano [Mon, 16 Mar 2020 20:27:43 +0000 (13:27 -0700)] 
clone: reorder --recursive/--recurse-submodules

The previous step made an option that is an alias to another option
identify itself as an alias to the latter.  Because it is easier to
scan the list when a pointer goes backward to what a reader already
has seen, mention "recurse-submodules" first with its true short
help string, and then "recurse" with the statement that it is a
synonym to "recurse-submodules".

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoparse-options: teach "git cmd -h" to show alias as alias
Junio C Hamano [Mon, 16 Mar 2020 20:22:54 +0000 (13:22 -0700)] 
parse-options: teach "git cmd -h" to show alias as alias

There is a long-standing NEEDSWORK comment that complains about
inconsistency between how an aliased option ("git clone --recurse"
which is the only one that currently exists) gives a help text in
a usage-error message vs "git cmd -h").  Get rid of it and then
make sure we say an option is an alias for another, instead of
repeating the same short help text for both, which leads to "they
seem to do the same---is there any subtle difference?" puzzlement
to end-users.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoGit 2.26-rc2 v2.26.0-rc2
Junio C Hamano [Mon, 16 Mar 2020 19:46:32 +0000 (12:46 -0700)] 
Git 2.26-rc2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoMerge branch 'en/test-cleanup'
Junio C Hamano [Mon, 16 Mar 2020 19:43:30 +0000 (12:43 -0700)] 
Merge branch 'en/test-cleanup'

Test fixes.

* en/test-cleanup:
  t6022, t6046: fix flaky files-are-updated checks

6 years agoMerge branch 'es/outside-repo-errmsg-hints'
Junio C Hamano [Mon, 16 Mar 2020 19:43:29 +0000 (12:43 -0700)] 
Merge branch 'es/outside-repo-errmsg-hints'

An earlier update to show the location of working tree in the error
message did not consider the possibility that a git command may be
run in a bare repository, which has been corrected.

* es/outside-repo-errmsg-hints:
  prefix_path: show gitdir if worktree unavailable

6 years agot0021: test filter metadata for additional cases
brian m. carlson [Mon, 16 Mar 2020 18:05:08 +0000 (18:05 +0000)] 
t0021: test filter metadata for additional cases

Check that we get the expected data when performing a merges or
generating archives.  Note that we don't expect a ref for merges,
because we won't be checking out any particular ref, but instead a tree
of the merged data.  For archives, however, we expect a ref as normal if
we have one.

Signed-off-by: brian m. carlson <bk2204@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agobuiltin/reset: compute checkout metadata for reset
brian m. carlson [Mon, 16 Mar 2020 18:05:07 +0000 (18:05 +0000)] 
builtin/reset: compute checkout metadata for reset

Pass the commit, and if we have it, the ref to the filters when we
perform a checkout.  This should only be the case when we invoke git
reset --hard; the metadata will be unused otherwise.

Signed-off-by: brian m. carlson <bk2204@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agobuiltin/rebase: compute checkout metadata for rebases
brian m. carlson [Mon, 16 Mar 2020 18:05:06 +0000 (18:05 +0000)] 
builtin/rebase: compute checkout metadata for rebases

Signed-off-by: brian m. carlson <bk2204@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agobuiltin/clone: compute checkout metadata for clones
brian m. carlson [Mon, 16 Mar 2020 18:05:05 +0000 (18:05 +0000)] 
builtin/clone: compute checkout metadata for clones

When checking out a commit, provide metadata to the filter process
including the ref we're using.

Signed-off-by: brian m. carlson <bk2204@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agobuiltin/checkout: compute checkout metadata for checkouts
brian m. carlson [Mon, 16 Mar 2020 18:05:04 +0000 (18:05 +0000)] 
builtin/checkout: compute checkout metadata for checkouts

Provide commit metadata for checkout code paths that use unpack_trees
and friends.  When we're checking out a commit, use the commit
information, but don't provide commit information if we're checking out
from the index, since there need not be any particular commit associated
with the index, and even if there is one, we can't know what it is.

Signed-off-by: brian m. carlson <bk2204@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoconvert: provide additional metadata to filters
brian m. carlson [Mon, 16 Mar 2020 18:05:03 +0000 (18:05 +0000)] 
convert: provide additional metadata to filters

Now that we have the codebase wired up to pass any additional metadata
to filters, let's collect the additional metadata that we'd like to
pass.

The two main places we pass this metadata are checkouts and archives.
In these two situations, reading HEAD isn't a valid option, since HEAD
isn't updated for checkouts until after the working tree is written and
archives can accept an arbitrary tree.  In other situations, HEAD will
usually reflect the refname of the branch in current use.

We pass a smaller amount of data in other cases, such as git cat-file,
where we can really only logically know about the blob.

This commit updates only the parts of the checkout code where we don't
use unpack_trees.  That function and callers of it will be handled in a
future commit.

In the archive code, we leak a small amount of memory, since nothing we
pass in the archiver argument structure is freed.

Signed-off-by: brian m. carlson <bk2204@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoconvert: permit passing additional metadata to filter processes
brian m. carlson [Mon, 16 Mar 2020 18:05:02 +0000 (18:05 +0000)] 
convert: permit passing additional metadata to filter processes

There are a variety of situations where a filter process can make use of
some additional metadata.  For example, some people find the ident
filter too limiting and would like to include the commit or the branch
in their smudged files.  This information isn't available during
checkout as HEAD hasn't been updated at that point, and it wouldn't be
available in archives either.

Let's add a way to pass this metadata down to the filter.  We pass the
blob we're operating on, the treeish (preferring the commit over the
tree if one exists), and the ref we're operating on.  Note that we won't
pass this information in all cases, such as when renormalizing or when
we're performing diffs, since it doesn't make sense in those cases.

The data we currently get from the filter process looks like the
following:

  command=smudge
  pathname=git.c
  0000

With this change, we'll get data more like this:

  command=smudge
  pathname=git.c
  refname=refs/tags/v2.25.1
  treeish=c522f061d551c9bb8684a7c3859b2ece4499b56b
  blob=7be7ad34bd053884ec48923706e70c81719a8660
  0000

There are a couple things to note about this approach.  For operations
like checkout, treeish will always be a commit, since we cannot check
out individual trees, but for other operations, like archive, we can end
up operating on only a particular tree, so we'll provide only a tree as
the treeish.  Similar comments apply for refname, since there are a
variety of cases in which we won't have a ref.

This commit wires up the code to print this information, but doesn't
pass any of it at this point.  In a future commit, we'll have various
code paths pass the actual useful data down.

Signed-off-by: brian m. carlson <bk2204@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agol10n: vi(4839t): Updated Vietnamese translation for v2.26.0
Tran Ngoc Quan [Mon, 16 Mar 2020 01:55:40 +0000 (08:55 +0700)] 
l10n: vi(4839t): Updated Vietnamese translation for v2.26.0

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
6 years agol10n: vi: fix translation + grammar
Đoàn Trần Công Danh [Mon, 13 Jan 2020 15:48:39 +0000 (22:48 +0700)] 
l10n: vi: fix translation + grammar

- context should be translated to ngữ cảnh instead of nội dung
- add missing accents
- switch adjective and secondary objects position:
* The formatted English text will be "To remove '+/-' lines",
it should be translated to "Để bỏ dòng bắt đầu với '+/-'

Signed-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>
6 years agooidset: remove unnecessary include
Elijah Newren [Sat, 14 Mar 2020 19:15:47 +0000 (19:15 +0000)] 
oidset: remove unnecessary include

When commit 8b2f8cbcb1 ("oidset: use khash", 2018-10-04) moved from
using oidmap to khash, it replaced the oidmap.h include with both one
for hashmap.h and khash.h.  Since the hashmap.h header is unnecessary,
and the point of the patch was to switch from hashmap (used by oidmap)
to khash.h, remove the unneccessary include.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoconnected.c: reprepare packs for corner cases
Derrick Stolee [Fri, 13 Mar 2020 21:11:55 +0000 (21:11 +0000)] 
connected.c: reprepare packs for corner cases

While updating the microsoft/git fork on top of v2.26.0-rc0 and
consuming that build into Scalar, I noticed a corner case bug around
partial clone.

The "scalar clone" command can create a Git repository with the
proper config for using partial clone with the "blob:none" filter.
Instead of calling "git clone", it runs "git init" then sets a few
more config values before running "git fetch".

In our builds on v2.26.0-rc0, we noticed that our "git fetch"
command was failing with

  error: https://github.com/microsoft/scalar did not send all necessary objects

This does not happen if you copy the config file from a repository
created by "git clone --filter=blob:none <url>", but it does happen
when adding the config option "core.logAllRefUpdates = true".

By debugging, I was able to see that the loop inside
check_connnected() that checks if all refs are contained in
promisor packs actually did not have any packfiles in the packed_git
list.

I'm not sure what corner-case issues caused this config option to
prevent the reprepare_packed_git() from being called at the proper
spot during the fetch operation. This approach requires a situation
where we use the remote helper process, which makes it difficult to
test.

It is possible to place a reprepare_packed_git() call in the fetch code
closer to where we receive a pack, but that leaves an opening for a
later change to re-introduce this problem. Further, a concurrent repack
operation could replace the pack-file list we already loaded into
memory, causing this issue in an even harder to reproduce scenario.

It is really the responsibility of anyone looping through the list of
pack-files for a certain object to fall back to reprepare_packed_git()
on a fail-to-find. The loop in check_connected() does not have this
fallback, leading to this bug.

We _could_ try looping through the packs and only reprepare the packs
after a miss, but that change is more involved and has little value.
Since this case is isolated to the case when
opt->check_refs_are_promisor_objects_only is true, we are confident that
we are verifying the refs after downloading new data. This implies that
calling reprepare_packed_git() in advance is not a huge cost compared to
the rest of the operations already made.

Helped-by: Jeff King <peff@peff.net>
Helped-by: Junio Hamano <gitster@pobox.com>
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agogpg-interface: prefer check_signature() for GPG verification
Hans Jerry Illikainen [Wed, 4 Mar 2020 11:48:04 +0000 (11:48 +0000)] 
gpg-interface: prefer check_signature() for GPG verification

This commit refactors the use of verify_signed_buffer() outside of
gpg-interface.c to use check_signature() instead.  It also turns
verify_signed_buffer() into a file-local function since it's now only
invoked internally by check_signature().

There were previously two globally scoped functions used in different
parts of Git to perform GPG signature verification:
verify_signed_buffer() and check_signature().  Now only
check_signature() is used.

The verify_signed_buffer() function doesn't guard against duplicate
signatures as described by Michał Górny [1].  Instead it only ensures a
non-erroneous exit code from GPG and the presence of at least one
GOODSIG status field.  This stands in contrast with check_signature()
that returns an error if more than one signature is encountered.

The lower degree of verification makes the use of verify_signed_buffer()
problematic if callers don't parse and validate the various parts of the
GPG status message themselves.  And processing these messages seems like
a task that should be reserved to gpg-interface.c with the function
check_signature().

Furthermore, the use of verify_signed_buffer() makes it difficult to
introduce new functionality that relies on the content of the GPG status
lines.

Now all operations that does signature verification share a single entry
point to gpg-interface.c.  This makes it easier to propagate changed or
additional functionality in GPG signature verification to all parts of
Git, without having odd edge-cases that don't perform the same degree of
verification.

[1] https://dev.gentoo.org/~mgorny/articles/attack-on-git-signature-verification.html

Signed-off-by: Hans Jerry Illikainen <hji@dyntopia.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agot: increase test coverage of signature verification output
Hans Jerry Illikainen [Wed, 4 Mar 2020 11:48:03 +0000 (11:48 +0000)] 
t: increase test coverage of signature verification output

There weren't any tests for unsuccessful signature verification of
signed merge tags shown in 'git log'.  There also weren't any tests for
the GPG output from 'git fmt-merge-msg'.  This was noticed while
investigating a buggy refactor that slipped through the test suite; see
commit 72b006f4bfd30b7c5037c163efaf279ab65bea9c.

This commit adds signature verification tests to the 'log' and
'fmt-merge-msg' builtins.

Thanks to Linus Torvalds for reporting and finding the (now reverted)
commit that introduced the regression.

Note that the "log --show-signature for merged tag with GPG failure"
test case is really hacky.  It relies on an implementation detail of
verify_signed_buffer() -- namely, it assumes that the signature is
written to a temporary file whose path is under TMPDIR.

The rationale for that test case is to check whether the code path that
yields the "No signature" message is reachable on failure.  The
functionality in log-tree.c that may show this message does some
pre-parsing of a possible signature that prevents the GPG interface from
being invoked if a signature is actually missing.  And I haven't been
able to construct a signature that both 1. satisfies that
pre-processing, and 2. causes GPG to fail without any sort of output on
stderr along the lines of "this is a bogus/corrupt/... signature" (the
"No signature" message should only be shown if GPG produce no output).

Signed-off-by: Hans Jerry Illikainen <hji@dyntopia.com>
[jc: fixed missing test title noticed by Dscho]
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoprefix_path: show gitdir if worktree unavailable
Emily Shaffer [Tue, 3 Mar 2020 04:05:06 +0000 (20:05 -0800)] 
prefix_path: show gitdir if worktree unavailable

If there is no worktree at present, we can still hint the user about
Git's current directory by showing them the absolute path to the Git
directory. Even though the Git directory doesn't make it as easy to
locate the worktree in question, it can still help a user figure out
what's going on while developing a script.

This fixes a segmentation fault introduced in e0020b2f
("prefix_path: show gitdir when arg is outside repo", 2020-02-14).

Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
[jc: added minimum tests, with help from Szeder Gábor]
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agol10n: zh_TW.po: v2.26.0 round 2 (0 untranslated)
Yi-Jyun [Fri, 13 Mar 2020 17:12:19 +0000 (01:12 +0800)] 
l10n: zh_TW.po: v2.26.0 round 2 (0 untranslated)

Revision 2.

Signed-off-by: Yi-Jyun Pan <pan93412@gmail.com>
6 years agol10n: zh_TW.po: v2.26.0 round 1 (11 untranslated)
Yi-Jyun [Mon, 9 Mar 2020 17:33:00 +0000 (01:33 +0800)] 
l10n: zh_TW.po: v2.26.0 round 1 (11 untranslated)

Signed-off-by: Yi-Jyun Pan <pan93412@gmail.com>
6 years agoMerge branch 'js/askpass-coerce-utf8'
Pratyush Yadav [Sat, 14 Mar 2020 17:22:43 +0000 (22:52 +0530)] 
Merge branch 'js/askpass-coerce-utf8'

Askpass can now send non-ASCII to Git on Windows.

* js/askpass-coerce-utf8:
  git-gui--askpass: coerce answers to UTF-8 on Windows

6 years agogit-gui--askpass: coerce answers to UTF-8 on Windows
Luke Bonanomi [Thu, 12 Mar 2020 21:31:50 +0000 (21:31 +0000)] 
git-gui--askpass: coerce answers to UTF-8 on Windows

This addresses the issue where Git for Windows asks the user for a
password, no credential helper is available, and then Git fails to pick
up non-ASCII characters from the Git GUI helper.

This can be verified e.g. via

echo host=http://abc.com |
git -c credential.helper= credential fill

and then pasting some umlauts.

The underlying reason is that Git for Windows tries to communicate using
the UTF-8 encoding no matter what the actual current code page is. So
let's indulge Git for Windows and do use that encoding.

This fixes https://github.com/git-for-windows/git/issues/2215

Signed-off-by: Luke Bonanomi <lbonanomi@gmail.com>
Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Pratyush Yadav <me@yadavpratyush.com>
6 years agoMerge branch 'py/blame-status-error'
Pratyush Yadav [Sat, 14 Mar 2020 17:11:45 +0000 (22:41 +0530)] 
Merge branch 'py/blame-status-error'

Fixes an error popup in blame because of a missing closing bracket.

* py/blame-status-error:
  git-gui: fix error popup when doing blame -> "Show History Context"

6 years agot6022, t6046: fix flaky files-are-updated checks
Elijah Newren [Fri, 13 Mar 2020 20:03:02 +0000 (20:03 +0000)] 
t6022, t6046: fix flaky files-are-updated checks

Several tests wanted to verify that files were actually modified by a
merge, which it would do by checking that the mtime was updated.  In
order to avoid problems with the merge completing so fast that the mtime
at the beginning and end of the operation was the same, these tests
would first set the mtime of a file to something "old".  This "old"
value was usually determined as current system clock minus one second,
truncated to the nearest integer.  Unfortunately, it appears the system
clock and filesystem clock are different and comparing across the two
runs into race problems resulting in flaky tests.

From https://stackoverflow.com/questions/14392975/timestamp-accuracy-on-ext4-sub-millsecond:

    date will call the gettimeofday system call which will always return
    the most accurate time available based on the cached kernel time,
    adjusted by the CPU cycle time if available to give nanosecond
    resolution. The timestamps stored in the file system however, are
    only based on the cached kernel time. ie The time calculated at the
    last timer interrupt.

and from https://apenwarr.ca/log/20181113:

    Does mtime get set to >= the current time?

    No, this depends on clock granularity. For example, gettimeofday()
    can return times in microseconds on my system, but ext4 rounds
    timestamps down to the previous ~10ms (but not exactly 10ms)
    increment, with the surprising result that a newly-created file is
    almost always created in the past:

      $ python -c "
      import os, time
      t0 = time.time()
      open('testfile', 'w').close()
      print os.stat('testfile').st_mtime - t0
      "

      -0.00234484672546

So, instead of trying to compare across what are effectively two
different clocks, just avoid using the system clock.  Any new updates to
files have to give an mtime at least as big as what is already in the
file, so we could define "old" as one second before the mtime found in
the file before the merge starts.  But, to avoid problems with leap
seconds, ntp updates, filesystems that only provide two second
resolution, and other such weirdness, let's just pick an hour before the
mtime found in the file before the merge starts.

Also, clarify in one test where we check the mtime of different files
that it really was intentional.  I totally forgot the reasons for that
and assumed it was a bug when asked.

Reported-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoHopefully the final batch before -rc2
Junio C Hamano [Thu, 12 Mar 2020 21:36:00 +0000 (14:36 -0700)] 
Hopefully the final batch before -rc2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoMerge branch 'en/rebase-backend'
Junio C Hamano [Thu, 12 Mar 2020 21:28:01 +0000 (14:28 -0700)] 
Merge branch 'en/rebase-backend'

Band-aid fixes for two fallouts from switching the default "rebase"
backend.

* en/rebase-backend:
  git-rebase.txt: highlight backend differences with commit rewording
  sequencer: clear state upon dropping a become-empty commit
  i18n: unmark a message in rebase.c

6 years agobuiltin/checkout: pass branch info down to checkout_worktree
brian m. carlson [Tue, 10 Mar 2020 18:20:39 +0000 (18:20 +0000)] 
builtin/checkout: pass branch info down to checkout_worktree

In the future, we're going to want to use the branch info in
checkout_worktree, so let's pass the whole struct branch_info down, not
just the revision name.  We hoist the definition of struct branch_info
so it's in scope.

Signed-off-by: brian m. carlson <bk2204@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoMerge branch of github.com:ChrisADR/git-po into master
Jiang Xin [Thu, 12 Mar 2020 10:41:56 +0000 (18:41 +0800)] 
Merge branch of github.com:ChrisADR/git-po into master

* 'next' of github.com:ChrisADR/git-po:
  l10n: es: 2.26.0 round#2

6 years agofsck: detect gitmodules URLs with embedded newlines
Jeff King [Wed, 11 Mar 2020 22:48:24 +0000 (18:48 -0400)] 
fsck: detect gitmodules URLs with embedded newlines

The credential protocol can't handle values with newlines. We already
detect and block any such URLs from being used with credential helpers,
but let's also add an fsck check to detect and block gitmodules files
with such URLs. That will let us notice the problem earlier when
transfer.fsckObjects is turned on. And in particular it will prevent bad
objects from spreading, which may protect downstream users running older
versions of Git.

We'll file this under the existing gitmodulesUrl flag, which covers URLs
with option injection. There's really no need to distinguish the exact
flaw in the URL in this context. Likewise, I've expanded the description
of t7416 to cover all types of bogus URLs.

6 years agocredential: detect unrepresentable values when parsing urls
Jeff King [Thu, 12 Mar 2020 05:31:11 +0000 (01:31 -0400)] 
credential: detect unrepresentable values when parsing urls

The credential protocol can't represent newlines in values, but URLs can
embed percent-encoded newlines in various components. A previous commit
taught the low-level writing routines to die() when encountering this,
but we can be a little friendlier to the user by detecting them earlier
and handling them gracefully.

This patch teaches credential_from_url() to notice such components,
issue a warning, and blank the credential (which will generally result
in prompting the user for a username and password). We blank the whole
credential in this case. Another option would be to blank only the
invalid component. However, we're probably better off not feeding a
partially-parsed URL result to a credential helper. We don't know how a
given helper would handle it, so we're better off to err on the side of
matching nothing rather than something unexpected.

The die() call in credential_write() is _probably_ impossible to reach
after this patch. Values should end up in credential structs only by URL
parsing (which is covered here), or by reading credential protocol input
(which by definition cannot read a newline into a value). But we should
definitely keep the low-level check, as it's our final and most accurate
line of defense against protocol injection attacks. Arguably it could
become a BUG(), but it probably doesn't matter much either way.

Note that the public interface of credential_from_url() grows a little
more than we need here. We'll use the extra flexibility in a future
patch to help fsck catch these cases.

6 years agot/lib-credential: use test_i18ncmp to check stderr
Jeff King [Wed, 11 Mar 2020 22:11:37 +0000 (18:11 -0400)] 
t/lib-credential: use test_i18ncmp to check stderr

The credential tests have a "check" function which feeds some input to
git-credential and checks the stdout and stderr. We look for exact
matches in the output. For stdout, this makes sense; the output is
the credential protocol. But for stderr, we may be showing various
diagnostic messages, or the prompts fed to the askpass program, which
could be translated. Let's mark them as such.

6 years agocredential: avoid writing values with newlines
Jeff King [Wed, 11 Mar 2020 21:53:41 +0000 (17:53 -0400)] 
credential: avoid writing values with newlines

The credential protocol that we use to speak to helpers can't represent
values with newlines in them. This was an intentional design choice to
keep the protocol simple, since none of the values we pass should
generally have newlines.

However, if we _do_ encounter a newline in a value, we blindly transmit
it in credential_write(). Such values may break the protocol syntax, or
worse, inject new valid lines into the protocol stream.

The most likely way for a newline to end up in a credential struct is by
decoding a URL with a percent-encoded newline. However, since the bug
occurs at the moment we write the value to the protocol, we'll catch it
there. That should leave no possibility of accidentally missing a code
path that can trigger the problem.

At this level of the code we have little choice but to die(). However,
since we'd not ever expect to see this case outside of a malicious URL,
that's an acceptable outcome.

Reported-by: Felix Wilhelm <fwilhelm@google.com>
6 years agol10n: it.po: update the Italian translation for Git 2.26.0 round 2
Alessandro Menti [Thu, 12 Mar 2020 06:52:58 +0000 (07:52 +0100)] 
l10n: it.po: update the Italian translation for Git 2.26.0 round 2

Signed-off-by: Alessandro Menti <alessandro.menti@alessandromenti.it>
6 years agol10n: es: 2.26.0 round#2
Christopher Diaz Riveros [Thu, 12 Mar 2020 04:19:58 +0000 (23:19 -0500)] 
l10n: es: 2.26.0 round#2

Signed-off-by: Christopher Diaz Riveros <chrisadr@gentoo.org>
6 years agoMerge branch of github.com:alshopov/git-po into master
Jiang Xin [Thu, 12 Mar 2020 02:17:22 +0000 (10:17 +0800)] 
Merge branch of github.com:alshopov/git-po into master

* 'git-l10n_git-po_master' of github.com:alshopov/git-po:
  l10n: bg.po: Updated Bulgarian translation (4839t)

6 years agoMerge branch of github.com:bitigchi/git-po into master
Jiang Xin [Thu, 12 Mar 2020 02:15:49 +0000 (10:15 +0800)] 
Merge branch of github.com:bitigchi/git-po into master

* 'tr_translations_2.26.1' of github.com:bitigchi/git-po:
  l10n: tr: v2.26.0 round 2

6 years agol10n: bg.po: Updated Bulgarian translation (4839t)
Alexander Shopov [Wed, 11 Mar 2020 23:04:37 +0000 (00:04 +0100)] 
l10n: bg.po: Updated Bulgarian translation (4839t)

Signed-off-by: Alexander Shopov <ash@kambanaria.org>
6 years agol10n: tr: v2.26.0 round 2
Emir Sarı [Wed, 11 Mar 2020 21:09:51 +0000 (00:09 +0300)] 
l10n: tr: v2.26.0 round 2

Signed-off-by: Emir Sarı <bitigchi@me.com>
6 years agol10n: fr : v2.26.0 rnd 2
Jean-Noël Avila [Wed, 11 Mar 2020 20:19:25 +0000 (21:19 +0100)] 
l10n: fr : v2.26.0 rnd 2

Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
6 years agogit-rebase.txt: highlight backend differences with commit rewording
Elijah Newren [Wed, 11 Mar 2020 15:30:23 +0000 (15:30 +0000)] 
git-rebase.txt: highlight backend differences with commit rewording

As noted by Junio:
    Back when "git am" was written, it was not considered a bug that the
    "git am --resolved" option did not offer the user a chance to update
    the log message to match the adjustment of the code the user made,
    but honestly, I'd have to say that it is a bug in "git am" in that
    over time it wasn't adjusted to the new world order where we
    encourage users to describe what they did when the automation
    hiccuped by opening an editor.  These days, even when automation
    worked well (e.g. a clean auto-merge with "git merge"), we open an
    editor.  The world has changed, and so should the expectations.

Junio also suggested providing a workaround such as allowing --no-edit
together with git rebase --continue, but that should probably be done in
a patch after the git-2.26.0 release.  For now, just document the known
difference in the Behavioral Differences section.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agosequencer: clear state upon dropping a become-empty commit
Elijah Newren [Wed, 11 Mar 2020 15:30:22 +0000 (15:30 +0000)] 
sequencer: clear state upon dropping a become-empty commit

In commit e98c4269c8 ("rebase (interactive-backend): fix handling of
commits that become empty", 2020-02-15), the merge backend was changed
to drop commits that did not start empty but became so after being
applied (because their changes were a subset of what was already
upstream).  This new code path did not need to go through the process of
creating a commit, since we were dropping the commit instead.
Unfortunately, this also means we bypassed the clearing of the
CHERRY_PICK_HEAD and MERGE_MSG files, which if there were no further
commits to cherry-pick would mean that the rebase would end but assume
there was still an operation in progress.  Ensure that we clear such
state files when we decide to drop the commit.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoi18n: unmark a message in rebase.c
Jiang Xin [Wed, 11 Mar 2020 06:55:27 +0000 (14:55 +0800)] 
i18n: unmark a message in rebase.c

Commit v2.25.0-4-ge98c4269c8 (rebase (interactive-backend): fix handling
of commits that become empty, 2020-02-15) marked "{drop,keep,ask}" for
translation, but this message should not be changed.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agopull: document more passthru options
René Scharfe [Mon, 9 Mar 2020 21:51:39 +0000 (22:51 +0100)] 
pull: document more passthru options

git pull accepts the options --dry-run, -p/--prune, --refmap, and
-t/--tags since a32975f516 (pull: pass git-fetch's options to git-fetch,
2015-06-18), -j/--jobs since 62104ba14a (submodules: allow parallel
fetching, add tests and documentation, 2015-12-15), and --set-upstream
since 24bc1a1292 (pull, fetch: add --set-upstream option, 2019-08-19).
Update its documentation to match.

Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoMerge branch 'ds/sparse-add'
Junio C Hamano [Wed, 11 Mar 2020 17:58:16 +0000 (10:58 -0700)] 
Merge branch 'ds/sparse-add'

Test fix.

* ds/sparse-add:
  t1091: don't grep for `strerror()` string

6 years agoMerge branch 'dr/push-remote-ref-update'
Junio C Hamano [Wed, 11 Mar 2020 17:58:16 +0000 (10:58 -0700)] 
Merge branch 'dr/push-remote-ref-update'

Code clean-up.

* dr/push-remote-ref-update:
  remote: drop "explicit" parameter from remote_ref_for_branch()

6 years agoMerge branch 'jc/doc-single-h-is-for-help'
Junio C Hamano [Wed, 11 Mar 2020 17:58:16 +0000 (10:58 -0700)] 
Merge branch 'jc/doc-single-h-is-for-help'

Both "git ls-remote -h" and "git grep -h" give short usage help,
like any other Git subcommand, but it is not unreasonable to expect
that the former would behave the same as "git ls-remote --head"
(there is no other sensible behaviour for the latter).  The
documentation has been updated in an attempt to clarify this.

* jc/doc-single-h-is-for-help:
  Documentation: clarify that `-h` alone stands for `help`

6 years agol10n: git.pot: v2.26.0 round 2 (7 new, 2 removed)
Jiang Xin [Wed, 11 Mar 2020 06:59:57 +0000 (14:59 +0800)] 
l10n: git.pot: v2.26.0 round 2 (7 new, 2 removed)

Generate po/git.pot from v2.26.0-rc1 for git v2.26.0 l10n round 2.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
6 years agoMerge branch 'master' of github.com:git/git into git-po-master
Jiang Xin [Wed, 11 Mar 2020 06:59:05 +0000 (14:59 +0800)] 
Merge branch 'master' of github.com:git/git into git-po-master

* 'master' of github.com:git/git: (27 commits)
  Git 2.26-rc1
  remote-curl: show progress for fetches over dumb HTTP
  show_one_mergetag: print non-parent in hex form.
  config.mak.dev: re-enable -Wformat-zero-length
  rebase-interactive.c: silence format-zero-length warnings
  mingw: workaround for hangs when sending STDIN
  t6020: new test with interleaved lexicographic ordering of directories
  t6022, t6046: test expected behavior instead of testing a proxy for it
  t3035: prefer test_must_fail to bash negation for git commands
  t6020, t6022, t6035: update merge tests to use test helper functions
  t602[1236], t6034: modernize test formatting
  merge-recursive: apply collision handling unification to recursive case
  completion: add diff --color-moved[-ws]
  t1050: replace test -f with test_path_is_file
  am: support --show-current-patch=diff to retrieve .git/rebase-apply/patch
  am: support --show-current-patch=raw as a synonym for--show-current-patch
  am: convert "resume" variable to a struct
  parse-options: convert "command mode" to a flag
  parse-options: add testcases for OPT_CMDMODE()
  stash push: support the --pathspec-from-file option
  ...

6 years agol10n: tr: Add glossary for Turkish translations
Emir Sarı [Tue, 10 Mar 2020 20:31:48 +0000 (23:31 +0300)] 
l10n: tr: Add glossary for Turkish translations

Signed-off-by: Emir Sarı <bitigchi@me.com>
6 years agopull: warn if the user didn't say whether to rebase or to merge
Alex Henrie [Tue, 10 Mar 2020 03:54:20 +0000 (21:54 -0600)] 
pull: warn if the user didn't say whether to rebase or to merge

Often novice Git users forget to say "pull --rebase" and end up with an
unnecessary merge from upstream. What they usually want is either "pull
--rebase" in the simpler cases, or "pull --ff-only" to update the copy
of main integration branches, and rebase their work separately. The
pull.rebase configuration variable exists to help them in the simpler
cases, but there is no mechanism to make these users aware of it.

Issue a warning message when no --[no-]rebase option from the command
line and no pull.rebase configuration variable is given. This will
inconvenience those who never want to "pull --rebase", who haven't had
to do anything special, but the cost of the inconvenience is paid only
once per user, which should be a reasonable cost to help a number of new
users.

Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agocommit-slab: clarify slabname##_peek()'s return value
SZEDER Gábor [Tue, 10 Mar 2020 15:30:49 +0000 (16:30 +0100)] 
commit-slab: clarify slabname##_peek()'s return value

Ever since 862e730ec1 (commit-slab: introduce slabname##_peek()
function, 2015-05-14) the slabname##_peek() function is documented as:

  This function is similar to indegree_at(), but it will return NULL
  until a call to indegree_at() was made for the commit.

This, however, is usually not the case.  If indegree_at() allocates
memory, then it will do so not only for the single commit it got as
parameter, but it will allocate a whole new, ~512kB slab.  Later on,
if any other commit's 'index' field happens to point into an already
allocated slab, then indegree_peek() for such a commit will return a
valid non-NULL pointer, pointing to a zero-initialized location in the
slab, even if no indegree_at() call has been made for that commit yet.

Update slabname##_peek()'s documentation to clarify this.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoget_superproject_working_tree(): return strbuf
Alexandr Miloslavskiy [Tue, 10 Mar 2020 13:11:24 +0000 (13:11 +0000)] 
get_superproject_working_tree(): return strbuf

Together with the previous commits, this commit fully fixes the problem
of using shared buffer for `real_path()` in `get_superproject_working_tree()`.

Signed-off-by: Alexandr Miloslavskiy <alexandr.miloslavskiy@syntevo.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoreal_path_if_valid(): remove unsafe API
Alexandr Miloslavskiy [Tue, 10 Mar 2020 13:11:23 +0000 (13:11 +0000)] 
real_path_if_valid(): remove unsafe API

This commit continues the work started with previous commit.

Signed-off-by: Alexandr Miloslavskiy <alexandr.miloslavskiy@syntevo.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoreal_path: remove unsafe API
Alexandr Miloslavskiy [Tue, 10 Mar 2020 13:11:22 +0000 (13:11 +0000)] 
real_path: remove unsafe API

Returning a shared buffer invites very subtle bugs due to reentrancy or
multi-threading, as demonstrated by the previous patch.

There was an unfinished effort to abolish this [1].

Let's finally rid of `real_path()`, using `strbuf_realpath()` instead.

This patch uses a local `strbuf` for most places where `real_path()` was
previously called.

However, two places return the value of `real_path()` to the caller. For
them, a `static` local `strbuf` was added, effectively pushing the
problem one level higher:
    read_gitfile_gently()
    get_superproject_working_tree()

[1] https://lore.kernel.org/git/1480964316-99305-1-git-send-email-bmwill@google.com/

Signed-off-by: Alexandr Miloslavskiy <alexandr.miloslavskiy@syntevo.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoci: use python3 in linux-gcc and osx-gcc and python2 elsewhere
SZEDER Gábor [Thu, 23 Jan 2020 17:56:45 +0000 (18:56 +0100)] 
ci: use python3 in linux-gcc and osx-gcc and python2 elsewhere

Python2 reached end of life, and we have been preparing our Python
scripts to work with Python3.  'git p4', the main in-tree user of
Python, has just received a number of compatibility updates.  Our
other notable Python script 'contrib/svn-fe/svnrdump_sim.py' is only
used in 't9020-remote-svn.sh', and is apparently already compatible
with both Python2 and 3.

Our CI jobs currently only use Python2.  We want to make sure that
these Python scripts do indeed work with Python3, and we also want to
make sure that these scripts keep working with Python2 as well, for
the sake of some older LTS/Enterprise setups.

Therefore, pick two jobs and use Python3 there, while leaving other
jobs to still stick to Python2 for now.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoMerge branch 'master' of github.com:nafmo/git-l10n-sv
Jiang Xin [Tue, 10 Mar 2020 06:28:22 +0000 (14:28 +0800)] 
Merge branch 'master' of github.com:nafmo/git-l10n-sv

* 'master' of github.com:nafmo/git-l10n-sv:
  l10n: sv.po: Update Swedish translation (4835t0f0u)

6 years agoMerge branch 'fr_2.26.0' of github.com:jnavila/git
Jiang Xin [Tue, 10 Mar 2020 06:26:58 +0000 (14:26 +0800)] 
Merge branch 'fr_2.26.0' of github.com:jnavila/git

* 'fr_2.26.0' of github.com:jnavila/git:
  l10n: fr v2.26.0 rnd1

6 years agol10n: sv.po: Update Swedish translation (4835t0f0u)
Peter Krefting [Mon, 9 Mar 2020 19:57:46 +0000 (20:57 +0100)] 
l10n: sv.po: Update Swedish translation (4835t0f0u)

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
6 years agol10n: tr: Add Turkish translations
Emir Sarı [Mon, 9 Mar 2020 18:41:28 +0000 (21:41 +0300)] 
l10n: tr: Add Turkish translations

Signed-off-by: Emir Sarı <bitigchi@me.com>
6 years agol10n: tr: Add Turkish translation team info
Emir Sarı [Mon, 9 Mar 2020 18:39:08 +0000 (21:39 +0300)] 
l10n: tr: Add Turkish translation team info

Signed-off-by: Emir Sarı <bitigchi@me.com>
6 years agoGit 2.26-rc1 v2.26.0-rc1
Junio C Hamano [Mon, 9 Mar 2020 18:20:59 +0000 (11:20 -0700)] 
Git 2.26-rc1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoMerge branch 'rs/show-progress-in-dumb-http-fetch'
Junio C Hamano [Mon, 9 Mar 2020 18:21:21 +0000 (11:21 -0700)] 
Merge branch 'rs/show-progress-in-dumb-http-fetch'

"git fetch" over HTTP walker protocol did not show any progress
output.  We inherently do not know how much work remains, but still
we can show something not to bore users.

* rs/show-progress-in-dumb-http-fetch:
  remote-curl: show progress for fetches over dumb HTTP

6 years agoMerge branch 'hd/show-one-mergetag-fix'
Junio C Hamano [Mon, 9 Mar 2020 18:21:21 +0000 (11:21 -0700)] 
Merge branch 'hd/show-one-mergetag-fix'

"git show" and others gave an object name in raw format in its
error output, which has been corrected to give it in hex.

* hd/show-one-mergetag-fix:
  show_one_mergetag: print non-parent in hex form.

6 years agoMerge branch 'rt/format-zero-length-fix'
Junio C Hamano [Mon, 9 Mar 2020 18:21:21 +0000 (11:21 -0700)] 
Merge branch 'rt/format-zero-length-fix'

Recently we inadvertently added a few instances of using 0-width
format string to functions that we mark as printf-like without any
developers noticing.  The root cause was that the compiler warning
that is triggered by this is almost always useless and we disabled
the warning in our developer builds, but not for general public.
The new instances have been corrected, and the warning has been
resurrected in the developer builds.

* rt/format-zero-length-fix:
  config.mak.dev: re-enable -Wformat-zero-length
  rebase-interactive.c: silence format-zero-length warnings

6 years agoMerge branch 'am/mingw-poll-fix'
Junio C Hamano [Mon, 9 Mar 2020 18:21:20 +0000 (11:21 -0700)] 
Merge branch 'am/mingw-poll-fix'

MinGW's poll() emulation has been improved.

* am/mingw-poll-fix:
  mingw: workaround for hangs when sending STDIN

6 years agoMerge branch 'en/test-cleanup'
Junio C Hamano [Mon, 9 Mar 2020 18:21:20 +0000 (11:21 -0700)] 
Merge branch 'en/test-cleanup'

Test cleanup.

* en/test-cleanup:
  t6020: new test with interleaved lexicographic ordering of directories
  t6022, t6046: test expected behavior instead of testing a proxy for it
  t3035: prefer test_must_fail to bash negation for git commands
  t6020, t6022, t6035: update merge tests to use test helper functions
  t602[1236], t6034: modernize test formatting

6 years agoMerge branch 'en/merge-path-collision'
Junio C Hamano [Mon, 9 Mar 2020 18:21:20 +0000 (11:21 -0700)] 
Merge branch 'en/merge-path-collision'

Handling of conflicting renames in merge-recursive have further
been made consistent with how existing codepaths try to mimic what
is done to add/add conflicts.

* en/merge-path-collision:
  merge-recursive: apply collision handling unification to recursive case

6 years agoMerge branch 'kk/complete-diff-color-moved'
Junio C Hamano [Mon, 9 Mar 2020 18:21:20 +0000 (11:21 -0700)] 
Merge branch 'kk/complete-diff-color-moved'

Completion update.

* kk/complete-diff-color-moved:
  completion: add diff --color-moved[-ws]

6 years agoMerge branch 'rj/t1050-use-test-path-is-file'
Junio C Hamano [Mon, 9 Mar 2020 18:21:19 +0000 (11:21 -0700)] 
Merge branch 'rj/t1050-use-test-path-is-file'

Code cleanup.

* rj/t1050-use-test-path-is-file:
  t1050: replace test -f with test_path_is_file

6 years agoMerge branch 'pb/am-show-current-patch'
Junio C Hamano [Mon, 9 Mar 2020 18:21:19 +0000 (11:21 -0700)] 
Merge branch 'pb/am-show-current-patch'

"git am --short-current-patch" is a way to show the piece of e-mail
for the stopped step, which is not suitable to directly feed "git
apply" (it is designed to be a good "git am" input).  It learned a
new option to show only the patch part.

* pb/am-show-current-patch:
  am: support --show-current-patch=diff to retrieve .git/rebase-apply/patch
  am: support --show-current-patch=raw as a synonym for--show-current-patch
  am: convert "resume" variable to a struct
  parse-options: convert "command mode" to a flag
  parse-options: add testcases for OPT_CMDMODE()

6 years agoMerge branch 'am/pathspec-f-f-more'
Junio C Hamano [Mon, 9 Mar 2020 18:21:19 +0000 (11:21 -0700)] 
Merge branch 'am/pathspec-f-f-more'

"git rm" and "git stash" learns the new "--pathspec-from-file"
option.

* am/pathspec-f-f-more:
  stash push: support the --pathspec-from-file option
  stash: eliminate crude option parsing
  doc: stash: synchronize <pathspec> description
  doc: stash: document more options
  doc: stash: split options from description (2)
  doc: stash: split options from description (1)
  rm: support the --pathspec-from-file option
  doc: rm: synchronize <pathspec> description

6 years agot1091: don't grep for `strerror()` string
Martin Ågren [Sun, 8 Mar 2020 08:46:27 +0000 (09:46 +0100)] 
t1091: don't grep for `strerror()` string

We grep for "File exists" in stderr of the failing `git sparse-checkout`
to make sure that it failed for the right reason. We expect the string
to show up there since we call `strerror(errno)` in
`unable_to_lock_message()` in lockfile.c.

On the NonStop platform, this fails because the error string is "File
already exists", which doesn't match our grepping.

See 9042140097 ("test-dir-iterator: do not assume errno values",
2019-07-30) for a somewhat similar fix. There, we patched a test helper,
which meant we had access to `errno` and could investigate it better in
the test helper instead of just outputting the numerical value and
evaluating it in the test script. The current situation is different,
since (short of modifying the lockfile machinery, e.g., to be more
verbose) we don't have more than the output from `strerror()` available.

Except we do: We prefix `strerror(errno)` with `_("Unable to create
'%s.lock': ")`. Let's grep for that part instead. It verifies that we
were indeed unable to create the lock file. (If that fails for some
other reason than the file existing, we really really should expect
other tests to fail as well.)

An alternative fix would be to loosen the expression a bit and grep for
"File.* exists" instead. There would be no guarantee that some other
implementation couldn't come up with another error string, That is, that
could be the first move in an endless game of whack-a-mole. Of course,
it could also take us from "99" to "100" percent of the platforms and
we'd never have this problem again. But since we have another way of
addressing this, let's not even try the "loosen it up a bit" strategy.

Reported-by: Randall S. Becker <rsbecker@nexbridge.com>
Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Acked-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoupdate how-to-maintain-git
Junio C Hamano [Fri, 6 Mar 2020 17:23:38 +0000 (09:23 -0800)] 
update how-to-maintain-git

Some parts of the workflow described in the document has got a bit
stale with the recent toolchain improvements.  Update the procedure
a bit, and also describe the convention used around SQUASH??? fixups.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agol10n: fr v2.26.0 rnd1
Jean-Noël Avila [Sat, 7 Mar 2020 21:35:29 +0000 (22:35 +0100)] 
l10n: fr v2.26.0 rnd1

Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
6 years agoMerge branch of github.com:alshopov/git-po into master
Jiang Xin [Sun, 8 Mar 2020 15:44:13 +0000 (23:44 +0800)] 
Merge branch of github.com:alshopov/git-po into master

* 'git-l10n_git-po_master' of github.com:alshopov/git-po:
  l10n: bg.po: Updated Bulgarian translation (4835t)

6 years agol10n: it.po: update the Italian translation for Git 2.26.0 round 1
Alessandro Menti [Sat, 7 Mar 2020 08:57:36 +0000 (09:57 +0100)] 
l10n: it.po: update the Italian translation for Git 2.26.0 round 1

Signed-off-by: Alessandro Menti <alessandro.menti@alessandromenti.it>
6 years agoset_git_dir: fix crash when used with real_path()
Alexandr Miloslavskiy [Fri, 6 Mar 2020 19:03:13 +0000 (19:03 +0000)] 
set_git_dir: fix crash when used with real_path()

`real_path()` returns result from a shared buffer, inviting subtle
reentrance bugs. One of these bugs occur when invoked this way:
    set_git_dir(real_path(git_dir))

In this case, `real_path()` has reentrance:
    real_path
    read_gitfile_gently
    repo_set_gitdir
    setup_git_env
    set_git_dir_1
    set_git_dir

Later, `set_git_dir()` uses its now-dead parameter:
    !is_absolute_path(path)

Fix this by using a dedicated `strbuf` to hold `strbuf_realpath()`.

Signed-off-by: Alexandr Miloslavskiy <alexandr.miloslavskiy@syntevo.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agol10n: bg.po: Updated Bulgarian translation (4835t)
Alexander Shopov [Sun, 1 Mar 2020 17:18:57 +0000 (18:18 +0100)] 
l10n: bg.po: Updated Bulgarian translation (4835t)

Signed-off-by: Alexander Shopov <ash@kambanaria.org>
6 years agol10n: git.pot: v2.26.0 round 1 (73 new, 38 removed)
Jiang Xin [Fri, 6 Mar 2020 06:27:08 +0000 (14:27 +0800)] 
l10n: git.pot: v2.26.0 round 1 (73 new, 38 removed)

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

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
6 years agoMerge branch 'master' of github.com:git-l10n/git-po
Jiang Xin [Fri, 6 Mar 2020 06:24:01 +0000 (14:24 +0800)] 
Merge branch 'master' of github.com:git-l10n/git-po

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

6 years agostash: remove the stash.useBuiltin setting
Thomas Gummerer [Tue, 3 Mar 2020 17:46:13 +0000 (17:46 +0000)] 
stash: remove the stash.useBuiltin setting

Remove the stash.useBuiltin setting which was added as an escape hatch
to disable the builtin version of stash first released with Git 2.22.

Carrying the legacy version is a maintenance burden, and has in fact
become out of date failing a test since the 2.23 release, without
anyone noticing until now.  So users would be getting a hint to fall
back to a potentially buggy version of the tool.

We used to shell out to git config to get the useBuiltin configuration
to avoid changing any global state before spawning legacy-stash.
However that is no longer necessary, so just use the 'git_config'
function to get the setting instead.

Similar to what we've done in d03ebd411c ("rebase: remove the
rebase.useBuiltin setting", 2019-03-18), where we remove the
corresponding setting for rebase, we leave the documentation in place,
so people can refer back to it when searching for it online, and so we
can refer to it in the commit message.

Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agohttp: add environment variable support for HTTPS proxies
Jorge Lopez Silva [Wed, 4 Mar 2020 18:40:06 +0000 (18:40 +0000)] 
http: add environment variable support for HTTPS proxies

Add 4 environment variables that can be used to configure the proxy
cert, proxy ssl key, the proxy cert password protected flag, and the
CA info for the proxy.

Documentation for the options was also updated.

Signed-off-by: Jorge Lopez Silva <jalopezsilva@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agohttp: add client cert support for HTTPS proxies
Jorge Lopez Silva [Wed, 4 Mar 2020 18:40:05 +0000 (18:40 +0000)] 
http: add client cert support for HTTPS proxies

Git supports performing connections to HTTPS proxies, but we don't
support doing mutual authentication with them (through TLS).

Add the necessary options to be able to send a client certificate to
the HTTPS proxy.

A client certificate can provide an alternative way of authentication
instead of using 'ProxyAuthorization' or other more common methods of
authentication.  Libcurl supports this functionality already, so changes
are somewhat minimal. The feature is guarded by the first available
libcurl version that supports these options.

4 configuration options are added and documented, cert, key, cert
password protected and CA info. The CA info should be used to specify a
different CA path to validate the HTTPS proxy cert.

Signed-off-by: Jorge Lopez Silva <jalopezsilva@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoGit 2.26-rc0 v2.26.0-rc0
Junio C Hamano [Thu, 5 Mar 2020 19:15:45 +0000 (11:15 -0800)] 
Git 2.26-rc0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agot5537: adjust test_oid label
Johannes Schindelin [Wed, 4 Mar 2020 15:53:12 +0000 (15:53 +0000)] 
t5537: adjust test_oid label

We recently switched to using Perl instead of `sed` in the httpd-based
tests. Let's reflect that in the label we give the corresponding commit
hashes.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoMerge branch 'hi/gpg-use-check-signature'
Junio C Hamano [Thu, 5 Mar 2020 18:43:05 +0000 (10:43 -0800)] 
Merge branch 'hi/gpg-use-check-signature'

"git merge signed-tag" while lacking the public key started to say
"No signature", which was utterly wrong.  This regression has been
reverted.

* hi/gpg-use-check-signature:
  Revert "gpg-interface: prefer check_signature() for GPG verification"

6 years agoMerge branch 'rs/commit-graph-code-simplification'
Junio C Hamano [Thu, 5 Mar 2020 18:43:04 +0000 (10:43 -0800)] 
Merge branch 'rs/commit-graph-code-simplification'

Code simplfication.

* rs/commit-graph-code-simplification:
  commit-graph: use progress title directly