]> git.ipfire.org Git - thirdparty/git.git/log
thirdparty/git.git
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

6 years agoMerge branch 'js/ci-windows-update'
Junio C Hamano [Thu, 5 Mar 2020 18:43:04 +0000 (10:43 -0800)] 
Merge branch 'js/ci-windows-update'

Updates to the CI settings.

* js/ci-windows-update:
  Azure Pipeline: switch to the latest agent pools
  ci: prevent `perforce` from being quarantined
  t/lib-httpd: avoid using macOS' sed

6 years agoMerge branch 'be/describe-multiroot'
Junio C Hamano [Thu, 5 Mar 2020 18:43:04 +0000 (10:43 -0800)] 
Merge branch 'be/describe-multiroot'

"git describe" in a repository with multiple root commits sometimes
gave up looking for the best tag to describe a given commit with
too early, which has been adjusted.

* be/describe-multiroot:
  describe: don't abort too early when searching tags

6 years agoMerge branch 'ag/rebase-remove-redundant-code'
Junio C Hamano [Thu, 5 Mar 2020 18:43:04 +0000 (10:43 -0800)] 
Merge branch 'ag/rebase-remove-redundant-code'

Code reduction.

* ag/rebase-remove-redundant-code:
  builtin/rebase: remove a call to get_oid() on `options.switch_to'

6 years agoMerge branch 'es/recursive-single-branch-clone'
Junio C Hamano [Thu, 5 Mar 2020 18:43:03 +0000 (10:43 -0800)] 
Merge branch 'es/recursive-single-branch-clone'

"git clone --recurse-submodules --single-branch" now uses the same
single-branch option when cloning the submodules.

* es/recursive-single-branch-clone:
  clone: pass --single-branch during --recurse-submodules
  submodule--helper: use C99 named initializer

6 years agoMerge branch 'jk/nth-packed-object-id'
Junio C Hamano [Thu, 5 Mar 2020 18:43:03 +0000 (10:43 -0800)] 
Merge branch 'jk/nth-packed-object-id'

Code cleanup to use "struct object_id" more by replacing use of
"char *sha1"

* jk/nth-packed-object-id:
  packfile: drop nth_packed_object_sha1()
  packed_object_info(): use object_id internally for delta base
  packed_object_info(): use object_id for returning delta base
  pack-check: push oid lookup into loop
  pack-check: convert "internal error" die to a BUG()
  pack-bitmap: use object_id when loading on-disk bitmaps
  pack-objects: use object_id struct in pack-reuse code
  pack-objects: convert oe_set_delta_ext() to use object_id
  pack-objects: read delta base oid into object_id struct
  nth_packed_object_oid(): use customary integer return

6 years agoMerge branch 'es/do-not-let-rebase-switch-to-protected-branch'
Junio C Hamano [Thu, 5 Mar 2020 18:43:03 +0000 (10:43 -0800)] 
Merge branch 'es/do-not-let-rebase-switch-to-protected-branch'

"git rebase BASE BRANCH" rebased/updated the tip of BRANCH and
checked it out, even when the BRANCH is checked out in a different
worktree.  This has been corrected.

* es/do-not-let-rebase-switch-to-protected-branch:
  rebase: refuse to switch to branch already checked out elsewhere
  t3400: make test clean up after itself

6 years agoMerge branch 'hv/receive-denycurrent-everywhere'
Junio C Hamano [Thu, 5 Mar 2020 18:43:02 +0000 (10:43 -0800)] 
Merge branch 'hv/receive-denycurrent-everywhere'

"git push" should stop from updating a branch that is checked out
when receive.denyCurrentBranch configuration is set, but it failed
to pay attention to checkouts in secondary worktrees.  This has
been corrected.

* hv/receive-denycurrent-everywhere:
  t2402: test worktree path when called in .git directory
  receive.denyCurrentBranch: respect all worktrees
  t5509: use a bare repository for test push target
  get_main_worktree(): allow it to be called in the Git directory

6 years agoMerge branch 'es/worktree-avoid-duplication-fix'
Junio C Hamano [Thu, 5 Mar 2020 18:43:02 +0000 (10:43 -0800)] 
Merge branch 'es/worktree-avoid-duplication-fix'

In rare cases "git worktree add <path>" could think that <path>
was already a registered worktree even when it wasn't and refuse
to add the new worktree. This has been corrected.

* es/worktree-avoid-duplication-fix:
  worktree: don't allow "add" validation to be fooled by suffix matching
  worktree: add utility to find worktree by pathname
  worktree: improve find_worktree() documentation

6 years agoMerge branch 'bc/wildcard-credential'
Junio C Hamano [Thu, 5 Mar 2020 18:43:02 +0000 (10:43 -0800)] 
Merge branch 'bc/wildcard-credential'

A configuration element used for credential subsystem can now use
wildcard pattern to specify for which set of URLs the entry
applies.

* bc/wildcard-credential:
  credential: allow wildcard patterns when matching config
  credential: use the last matching username in the config
  t0300: add tests for some additional cases
  t1300: add test for urlmatch with multiple wildcards
  mailmap: add an additional email address for brian m. carlson

6 years agoMerge branch 'mr/bisect-in-c-1'
Junio C Hamano [Thu, 5 Mar 2020 18:43:02 +0000 (10:43 -0800)] 
Merge branch 'mr/bisect-in-c-1'

Underlying machinery of "git bisect--helper" is being refactored
into pieces that are more easily reused.

* mr/bisect-in-c-1:
  bisect: libify `bisect_next_all`
  bisect: libify `handle_bad_merge_base` and its dependents
  bisect: libify `check_good_are_ancestors_of_bad` and its dependents
  bisect: libify `check_merge_bases` and its dependents
  bisect: libify `bisect_checkout`
  bisect: libify `exit_if_skipped_commits` to `error_if_skipped*` and its dependents
  bisect--helper: return error codes from `cmd_bisect__helper()`
  bisect: add enum to represent bisect returning codes
  bisect--helper: introduce new `decide_next()` function
  bisect: use the standard 'if (!var)' way to check for 0
  bisect--helper: change `retval` to `res`
  bisect--helper: convert `vocab_*` char pointers to char arrays

6 years agoMerge branch 'ds/sparse-add'
Junio C Hamano [Thu, 5 Mar 2020 18:43:01 +0000 (10:43 -0800)] 
Merge branch 'ds/sparse-add'

"git sparse-checkout" learned a new "add" subcommand.

* ds/sparse-add:
  sparse-checkout: allow one-character directories in cone mode
  sparse-checkout: work with Windows paths
  sparse-checkout: create 'add' subcommand
  sparse-checkout: extract pattern update from 'set' subcommand
  sparse-checkout: extract add_patterns_from_input()

6 years agotag: use new advice API to check visibility
Heba Waly [Mon, 2 Mar 2020 20:02:00 +0000 (20:02 +0000)] 
tag: use new advice API to check visibility

change the advise call in tag library from advise() to
advise_if_enabled() to construct an example of the usage of
the new API.

Signed-off-by: Heba Waly <heba.waly@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoadvice: revamp advise API
Heba Waly [Mon, 2 Mar 2020 20:01:59 +0000 (20:01 +0000)] 
advice: revamp advise API

Currently it's very easy for the advice library's callers to miss
checking the visibility step before printing an advice. Also, it makes
more sense for this step to be handled by the advice library.

Add a new advise_if_enabled function that checks the visibility of
advice messages before printing.

Add a new helper advise_enabled to check the visibility of the advice
if the caller needs to carry out complicated processing based on that
value.

A list of advice_settings is added to cache the config variables names
and values, it's intended to replace advice_config[] and the global
variables once we migrate all the callers to use the new APIs.

Signed-off-by: Heba Waly <heba.waly@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agot2402: test worktree path when called in .git directory
Hariom Verma [Wed, 4 Mar 2020 07:00:00 +0000 (07:00 +0000)] 
t2402: test worktree path when called in .git directory

The bug which reports an extra `/.git/.` in worktree path when called in
'.git' directory already has been fixed. But unfortunately, the regression
test to ensure this behavior has been forgotten.
Here is that test.

Helped-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Hariom Verma <hariom18599@gmail.com>
Acked-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoremote: drop "explicit" parameter from remote_ref_for_branch()
Jeff King [Tue, 3 Mar 2020 16:12:22 +0000 (17:12 +0100)] 
remote: drop "explicit" parameter from remote_ref_for_branch()

Commit 9700fae5ee (for-each-ref: let upstream/push report the remote
ref name, 2017-11-07) added a remote_ref_for_branch() helper, which
is modeled after remote_for_branch(). This includes providing an
"explicit" out-parameter that tells the caller whether the remote
was configured by the user, or whether we picked a default name like
"origin".

But unlike remote names, there is no default name when the user
didn't configure one.  The only way the "explicit" parameter is used
by the caller is to use the value returned from the helper when it
is set, and use an empty string otherwise, ignoring the returned
value from the helper.

Let's drop the "explicit" out-parameter, and return NULL when the
returned value from the helper should be ignored, to simplify the
function interface.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Damien Robert <damien.olivier.robert+git@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agostash: get git_stash_config at the top level
Thomas Gummerer [Tue, 3 Mar 2020 17:46:12 +0000 (17:46 +0000)] 
stash: get git_stash_config at the top level

In the next commit we're adding another config variable to be read
from 'git_stash_config', that is valid for the top level command
instead of just a subset.  Move the 'git_config' invocation for
'git_stash_config' to the top-level to prepare for that.

Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoremote-curl: show progress for fetches over dumb HTTP
René Scharfe [Tue, 3 Mar 2020 20:55:34 +0000 (21:55 +0100)] 
remote-curl: show progress for fetches over dumb HTTP

Fetching over dumb HTTP transport doesn't show any progress, even with
the option --progress.  If the connection is slow or there is a lot of
data to get then this can take a long time while the user is left to
wonder if git got stuck.

We don't know the number of objects to fetch at the outset, but we can
count the ones we got.  Show an open-ended progress indicator based on
that number if the user asked for it.

Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoThe eighth batch for 2.26
Junio C Hamano [Mon, 2 Mar 2020 23:07:40 +0000 (15:07 -0800)] 
The eighth batch for 2.26

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoMerge branch 'ma/test-cleanup'
Junio C Hamano [Mon, 2 Mar 2020 23:07:20 +0000 (15:07 -0800)] 
Merge branch 'ma/test-cleanup'

Code cleanup.

* ma/test-cleanup:
  t: drop debug `cat` calls
  t9810: drop debug `cat` call
  t4117: check for files using `test_path_is_file`

6 years agoMerge branch 'rs/blame-typefix-for-fingerprint'
Junio C Hamano [Mon, 2 Mar 2020 23:07:20 +0000 (15:07 -0800)] 
Merge branch 'rs/blame-typefix-for-fingerprint'

Code cleanup.

* rs/blame-typefix-for-fingerprint:
  blame: provide type of fingerprints pointer

6 years agoMerge branch 'rs/micro-cleanups'
Junio C Hamano [Mon, 2 Mar 2020 23:07:20 +0000 (15:07 -0800)] 
Merge branch 'rs/micro-cleanups'

Code cleanup.

* rs/micro-cleanups:
  use strpbrk(3) to search for characters from a given set
  quote: use isalnum() to check for alphanumeric characters

6 years agoMerge branch 'es/worktree-cleanup'
Junio C Hamano [Mon, 2 Mar 2020 23:07:20 +0000 (15:07 -0800)] 
Merge branch 'es/worktree-cleanup'

Code cleanup.

* es/worktree-cleanup:
  worktree: drop unused code from get_main_worktree()

6 years agoMerge branch 'ak/test-log-graph'
Junio C Hamano [Mon, 2 Mar 2020 23:07:19 +0000 (15:07 -0800)] 
Merge branch 'ak/test-log-graph'

Test update.

* ak/test-log-graph:
  lib-log-graph: consolidate colored graph cmp logic
  lib-log-graph: consolidate test_cmp_graph logic

6 years agoMerge branch 'jk/run-command-formatfix'
Junio C Hamano [Mon, 2 Mar 2020 23:07:19 +0000 (15:07 -0800)] 
Merge branch 'jk/run-command-formatfix'

Code style cleanup.

* jk/run-command-formatfix:
  run-command.h: fix mis-indented struct member

6 years agoMerge branch 'ds/partial-clone-fixes'
Junio C Hamano [Mon, 2 Mar 2020 23:07:19 +0000 (15:07 -0800)] 
Merge branch 'ds/partial-clone-fixes'

Fix for a bug revealed by a recent change to make the protocol v2
the default.

* ds/partial-clone-fixes:
  partial-clone: avoid fetching when looking for objects
  partial-clone: demonstrate bugs in partial fetch

6 years agoMerge branch 'en/t3433-rebase-stat-dirty-failure'
Junio C Hamano [Mon, 2 Mar 2020 23:07:19 +0000 (15:07 -0800)] 
Merge branch 'en/t3433-rebase-stat-dirty-failure'

The merge-recursive machinery failed to refresh the cache entry for
a merge result in a couple of places, resulting in an unnecessary
merge failure, which has been fixed.

* en/t3433-rebase-stat-dirty-failure:
  merge-recursive: fix the refresh logic in update_file_flags
  t3433: new rebase testcase documenting a stat-dirty-like failure

6 years agoMerge branch 'en/rebase-backend'
Junio C Hamano [Mon, 2 Mar 2020 23:07:18 +0000 (15:07 -0800)] 
Merge branch 'en/rebase-backend'

"git rebase" has learned to use the merge backend (i.e. the
machinery that drives "rebase -i") by default, while allowing
"--apply" option to use the "apply" backend (e.g. the moral
equivalent of "format-patch piped to am").  The rebase.backend
configuration variable can be set to customize.

* en/rebase-backend:
  rebase: rename the two primary rebase backends
  rebase: change the default backend from "am" to "merge"
  rebase: make the backend configurable via config setting
  rebase tests: repeat some tests using the merge backend instead of am
  rebase tests: mark tests specific to the am-backend with --am
  rebase: drop '-i' from the reflog for interactive-based rebases
  git-prompt: change the prompt for interactive-based rebases
  rebase: add an --am option
  rebase: move incompatibility checks between backend options a bit earlier
  git-rebase.txt: add more details about behavioral differences of backends
  rebase: allow more types of rebases to fast-forward
  t3432: make these tests work with either am or merge backends
  rebase: fix handling of restrict_revision
  rebase: make sure to pass along the quiet flag to the sequencer
  rebase, sequencer: remove the broken GIT_QUIET handling
  t3406: simplify an already simple test
  rebase (interactive-backend): fix handling of commits that become empty
  rebase (interactive-backend): make --keep-empty the default
  t3404: directly test the behavior of interest
  git-rebase.txt: update description of --allow-empty-message

6 years agoMerge branch 'en/check-ignore'
Junio C Hamano [Mon, 2 Mar 2020 23:07:18 +0000 (15:07 -0800)] 
Merge branch 'en/check-ignore'

"git check-ignore" did not work when the given path is explicitly
marked as not ignored with a negative entry in the .gitignore file.

* en/check-ignore:
  check-ignore: fix documentation and implementation to match

6 years agoMerge branch 'jk/object-filter-with-bitmap'
Junio C Hamano [Mon, 2 Mar 2020 23:07:18 +0000 (15:07 -0800)] 
Merge branch 'jk/object-filter-with-bitmap'

The object reachability bitmap machinery and the partial cloning
machinery were not prepared to work well together, because some
object-filtering criteria that partial clones use inherently rely
on object traversal, but the bitmap machinery is an optimization
to bypass that object traversal.  There however are some cases
where they can work together, and they were taught about them.

* jk/object-filter-with-bitmap:
  rev-list --count: comment on the use of count_right++
  pack-objects: support filters with bitmaps
  pack-bitmap: implement BLOB_LIMIT filtering
  pack-bitmap: implement BLOB_NONE filtering
  bitmap: add bitmap_unset() function
  rev-list: use bitmap filters for traversal
  pack-bitmap: basic noop bitmap filter infrastructure
  rev-list: allow commit-only bitmap traversals
  t5310: factor out bitmap traversal comparison
  rev-list: allow bitmaps when counting objects
  rev-list: make --count work with --objects
  rev-list: factor out bitmap-optimized routines
  pack-bitmap: refuse to do a bitmap traversal with pathspecs
  rev-list: fallback to non-bitmap traversal when filtering
  pack-bitmap: fix leak of haves/wants object lists
  pack-bitmap: factor out type iterator initialization

6 years agoMerge branch 'jk/push-option-doc-markup-fix'
Junio C Hamano [Mon, 2 Mar 2020 23:07:18 +0000 (15:07 -0800)] 
Merge branch 'jk/push-option-doc-markup-fix'

Doc markup fix.

* jk/push-option-doc-markup-fix:
  doc/config/push: use longer "--" line for preformatted example

6 years agoMerge branch 'jk/doc-diff-parallel'
Junio C Hamano [Mon, 2 Mar 2020 23:07:17 +0000 (15:07 -0800)] 
Merge branch 'jk/doc-diff-parallel'

Update to doc-diff.

* jk/doc-diff-parallel:
  doc-diff: use single-colon rule in rendering Makefile

6 years agoadvice: change "setupStreamFailure" to "setUpstreamFailure"
Heba Waly [Mon, 2 Mar 2020 20:01:58 +0000 (20:01 +0000)] 
advice: change "setupStreamFailure" to "setUpstreamFailure"

fb6fbffbda (advice: keep config name in camelCase in advice_config[],
2018-05-26) changed the config names to camelCase, but one of the names
wasn't changed correctly. Fix it.

Signed-off-by: Heba Waly <heba.waly@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoadvice: extract vadvise() from advise()
Heba Waly [Mon, 2 Mar 2020 20:01:57 +0000 (20:01 +0000)] 
advice: extract vadvise() from advise()

In preparation for a new advice method, extract a version of advise()
that uses an explict 'va_list' parameter. Call it from advise() for a
functionally equivalent version.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Heba Waly <heba.waly@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoshow_one_mergetag: print non-parent in hex form.
Harald van Dijk [Sat, 29 Feb 2020 13:07:57 +0000 (13:07 +0000)] 
show_one_mergetag: print non-parent in hex form.

When a mergetag names a non-parent, which can occur after a shallow
clone, its hash was previously printed as raw data. Print it in hex form
instead.

Signed-off-by: Harald van Dijk <harald@gigawatt.nl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>