]> git.ipfire.org Git - thirdparty/git.git/log
thirdparty/git.git
2 years agorebase: make warning less passive aggressive
Harmen Stoppels [Wed, 21 Feb 2024 17:38:17 +0000 (17:38 +0000)] 
rebase: make warning less passive aggressive

When you run `git rebase --continue` when no rebase is in progress, git
outputs `fatal: No rebase in progress?` which is not a question but a
statement. Make it appear as a statement, and use lowercase to align
with error message style.

Signed-off-by: Harmen Stoppels <me@harmenstoppels.nl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agodoc: end sentences with full-stop
Jean-Noël Avila [Tue, 20 Feb 2024 22:32:54 +0000 (22:32 +0000)] 
doc: end sentences with full-stop

Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agodoc: close unclosed angle-bracket of a placeholder in git-clone doc
Jean-Noël Avila [Tue, 20 Feb 2024 22:32:53 +0000 (22:32 +0000)] 
doc: close unclosed angle-bracket of a placeholder in git-clone doc

Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agodoc: git-rev-parse: enforce command-line description syntax
Jean-Noël Avila [Tue, 20 Feb 2024 22:32:52 +0000 (22:32 +0000)] 
doc: git-rev-parse: enforce command-line description syntax

git-rev-parse(1) manpage is completely off with respect to the
command-line description syntax with badly formatted placeholders and
malformed alternatives.

Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agodocumentation: send-email: use camel case consistently
Dragan Simic [Tue, 20 Feb 2024 22:22:51 +0000 (23:22 +0100)] 
documentation: send-email: use camel case consistently

Correct a few random "sendemail.*" configuration parameter names in the
documentation that, for some unknown reason and contrary to the expected,
didn't use camel case format.

The majority of the corrections are straightforward, by using camel case
to denote boundaries of the individual words that, stringed together, make
up configuration parameter names.  A couple of abbreviations found in some
of the corrected configuration parameter names present some exceptions,
which are described in detail below.

First, there's "SSL" as the abbreviation for "Secure Sockets Layer". [1]
As such, it's written using all uppercase letters, which is pretty much the
general rule for making abbreviations, although with certain exceptions.

Second, there's "Cc" as the abbreviation for "carbon copy", which is another
exception.  As the acronym for "carbon copy", "cc" (mind the all lowercase
letters) stems from the rather old times when, literally, carbon copies were
made. [2]  Therefore, using "CC" (mind the all uppercase letters) or "cc"
(mind the all lowercase letters) would be technically correct in the email
domain, as the abbreviation or as mentioned in RFC2076, [3] respectively, but
the age of email has established "Cc" (mind the mixed uppercase and lowercase
letters) as some kind of de facto standard. [1][4][5]  Moreover, some of the
git utilities, primarily git-send-email(1), already refer to making email
carbon copies as specifying "Cc:" email headers.  As a result, "Cc" becomes
one of the exceptions to the general rule for making abbreviations.

[1] https://en.wikipedia.org/wiki/Transport_Layer_Security
[2] https://en.wikipedia.org/wiki/Carbon_copy
[3] https://datatracker.ietf.org/doc/html/rfc2076
[4] https://bugzilla.mozilla.org/show_bug.cgi?id=212059
[5] https://bugzilla.mozilla.org/show_bug.cgi?id=50826

Signed-off-by: Dragan Simic <dsimic@manjaro.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agogit-difftool--helper: honor `--trust-exit-code` with `--dir-diff`
Patrick Steinhardt [Tue, 20 Feb 2024 10:08:25 +0000 (11:08 +0100)] 
git-difftool--helper: honor `--trust-exit-code` with `--dir-diff`

The `--trust-exit-code` option for git-diff-tool(1) was introduced via
2b52123fcf (difftool: add support for --trust-exit-code, 2014-10-26).
When set, it makes us return the exit code of the invoked diff tool when
diffing multiple files. This patch didn't change the code path where
`--dir-diff` was passed because we already returned the exit code of the
diff tool unconditionally in that case.

This was changed a month later via c41d3fedd8 (difftool--helper: add
explicit exit statement, 2014-11-20), where an explicit `exit 0` was
added to the end of git-difftool--helper.sh. While the stated intent of
that commit was merely a cleanup, it had the consequence that we now
to ignore the exit code of the diff tool when `--dir-diff` was set. This
change in behaviour is thus very likely an unintended side effect of
this patch.

Now there are two ways to fix this:

  - We can either restore the original behaviour, which unconditionally
    returned the exit code of the diffing tool when `--dir-diff` is
    passed.

  - Or we can make the `--dir-diff` case respect the `--trust-exit-code`
    flag.

The fact that we have been ignoring exit codes for 7 years by now makes
me rather lean towards the latter option. Furthermore, respecting the
flag in one case but not the other would needlessly make the user
interface more complex.

Fix the bug so that we also honor `--trust-exit-code` for dir diffs and
adjust the documentation accordingly.

Reported-by: Jean-Rémy Falleri <jr.falleri@gmail.com>
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agoGit 2.44-rc2 v2.44.0-rc2
Junio C Hamano [Tue, 20 Feb 2024 05:01:01 +0000 (21:01 -0800)] 
Git 2.44-rc2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agoMerge branch 'la/trailer-cleanups'
Junio C Hamano [Tue, 20 Feb 2024 04:58:06 +0000 (20:58 -0800)] 
Merge branch 'la/trailer-cleanups'

Fix to an already-graduated topic.

* la/trailer-cleanups:
  trailer: fix comment/cut-line regression with opts->no_divider

2 years agotrailer: fix comment/cut-line regression with opts->no_divider
Jeff King [Tue, 20 Feb 2024 01:09:36 +0000 (20:09 -0500)] 
trailer: fix comment/cut-line regression with opts->no_divider

Commit 97e9d0b78a (trailer: find the end of the log message, 2023-10-20)
combined two code paths for finding the end of the log message. For the
"no_divider" case, we used to use find_trailer_end(), and that has now
been rolled into find_end_of_log_message(). But there's a regression;
that function returns early when no_divider is set, returning the whole
string.

That's not how find_trailer_end() behaved. Although it did skip the
"---" processing (which is what "no_divider" is meant to do), we should
still respect ignored_log_message_bytes(), which covers things like
comments, "commit -v" cut lines, and so on.

The bug is actually in the interpret-trailers command, but the obvious
way to experience it is by running "commit -v" with a "--trailer"
option. The new trailer will be added at the end of the verbose diff,
rather than before it (and consequently will be ignored entirely, since
everything after the diff's intro scissors line is thrown away).

I've added two tests here: one for interpret-trailers directly, which
shows the bug via the parsing routines, and one for "commit -v".

The fix itself is pretty simple: instead of returning early, no_divider
just skips the "---" handling but still calls ignored_log_message_bytes().

Reported-by: Philippe Blain <levraiphilippeblain@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agodoc: remove outdated information about interactive.singleKey
Julio Bacellari [Sun, 18 Feb 2024 03:02:59 +0000 (05:02 +0200)] 
doc: remove outdated information about interactive.singleKey

The Perl implementation of add --interactive was removed in commit [1].

Additionally, the interactive.singleKey setting is no longer silently
ignored. The internal implementation of ReadKey [2] displays a warning
if the platform is unsupported.

[1] 20b813d7d (add: remove "add.interactive.useBuiltin" & Perl "git add--interactive", 2023-02-06)
[2] a5e46e6b0 (terminal: add a new function to read a single keystroke, 2020-01-14)

Signed-off-by: Julio Bacellari <julio.bacel@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agot0303: check that helper_test_clean removes all credentials
Jeff King [Sat, 17 Feb 2024 04:58:14 +0000 (23:58 -0500)] 
t0303: check that helper_test_clean removes all credentials

Our lib-credential.sh library comes with a "clean" function that removes
all of the credentials used in its tests (to avoid leaving cruft in
system credential storage). But it's easy to add a test that uses a new
credential but forget to add it to the clean function.  E.g., the case
fixed by 83e6eb7d7a (t/lib-credential: clean additional credential,
2024-02-15).

We should be able to catch this automatically, but it's a little tricky.

We can't just compare the contents of the helper's storage before and
after the test run, because there isn't a way to ask a helper to dump
all of its storage. And in most cases we don't have direct access to the
underlying storage (since the whole point of the helper is to abstract
that away). We can work around that by using our own "store" helper,
since we can directly inspect its state by looking at its on-disk file.

But there's a catch: the "store" helper doesn't support features like
caching or expiration, so using it naively fails tests (and skipping
those tests would give us incomplete coverage). Implementing all of
those features would be non-trivial. But we can hack around that by
overriding the "check" function used by the tests to turn most requests
into noop success (except for "approve" requests, which actually store
things).

And then at the end we can check that running the "clean" function takes
us back to an empty state.

Note that because we've skipped any tests that erase credentials
(because of our noop check function), the state we see at cleanup time
may be larger than it would be normally. That's OK. The point of the
clean function is to clean up any cruft we _might_ have left in place,
so we're just being doubly thorough.

The way this is bolted onto t0303 feels a little messy. But it's really
the best place to do it, because then we know that it is running the
exact sequence of tests that we'd use for testing a real external
helper. In a normal run of "make test" it currently does nothing (the
idea is that you run it manually after pointing it at some helper
program). But now with this patch, "make test" will sanity-check the
script itself.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agoMerge branch 'ba/credential-test-clean-fix' into jk/t0303-clean
Junio C Hamano [Mon, 19 Feb 2024 23:01:32 +0000 (15:01 -0800)] 
Merge branch 'ba/credential-test-clean-fix' into jk/t0303-clean

* ba/credential-test-clean-fix:
  t/lib-credential: clean additional credential

2 years agolibsecret: retrieve empty password
M Hickford [Mon, 19 Feb 2024 20:40:58 +0000 (20:40 +0000)] 
libsecret: retrieve empty password

Since 0ce02e2f (credential/libsecret: store new attributes, 2023-06-16)
a test that stores empty username and password fails when
t0303-credential-external.sh is run with
GIT_TEST_CREDENTIAL_HELPER=libsecret.

Retrieve empty password carefully. This fixes test:

    ok 14 - helper (libsecret) can store empty username

Signed-off-by: M Hickford <mirth.hickford@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agoMerge branch 'ps/reftable-backend' into ps/reflog-list
Junio C Hamano [Mon, 19 Feb 2024 18:50:07 +0000 (10:50 -0800)] 
Merge branch 'ps/reftable-backend' into ps/reflog-list

* ps/reftable-backend:
  refs/reftable: fix leak when copying reflog fails
  ci: add jobs to test with the reftable backend
  refs: introduce reftable backend

2 years agomergetools: vimdiff: use correct tool's name when reading mergetool config
Kipras Melnikovas [Sat, 17 Feb 2024 16:27:18 +0000 (18:27 +0200)] 
mergetools: vimdiff: use correct tool's name when reading mergetool config

The /mergetools/vimdiff script, which handles both vimdiff, nvimdiff
and gvimdiff mergetools (the latter 2 simply source the vimdiff script), has a
function merge_cmd() which read the layout variable from git config, and it
would always read the value of mergetool.**vimdiff**.layout, instead of the
mergetool being currently used (vimdiff or nvimdiff or gvimdiff).

It looks like in 7b5cf8be18 (vimdiff: add tool documentation, 2022-03-30),
we explained the current behavior in Documentation/config/mergetool.txt:

```
mergetool.vimdiff.layout::
The vimdiff backend uses this variable to control how its split
windows look like. Applies even if you are using Neovim (`nvim`) or
gVim (`gvim`) as the merge tool. See BACKEND SPECIFIC HINTS section
```

which makes sense why it's explained this way - the vimdiff backend is used by
gvim and nvim. But the mergetool's configuration should be separate for each tool,
and indeed that's confirmed in same commit at Documentation/mergetools/vimdiff.txt:

```
Variants

Instead of `--tool=vimdiff`, you can also use one of these other variants:
  * `--tool=gvimdiff`, to open gVim instead of Vim.
  * `--tool=nvimdiff`, to open Neovim instead of Vim.

When using these variants, in order to specify a custom layout you will have to
set configuration variables `mergetool.gvimdiff.layout` and
`mergetool.nvimdiff.layout` instead of `mergetool.vimdiff.layout`
```

So it looks like we just forgot to update the 1 part of the vimdiff script
that read the config variable. Cheers.

Though, for backward compatibility, I've kept the mergetool.vimdiff
fallback, so that people who unknowingly relied on it, won't have their
setup broken now.

Signed-off-by: Kipras Melnikovas <kipras@kipras.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agoMerge tag 'l10n-2.44.0-rnd3' of https://github.com/git-l10n/git-po
Junio C Hamano [Mon, 19 Feb 2024 16:35:40 +0000 (08:35 -0800)] 
Merge tag 'l10n-2.44.0-rnd3' of https://github.com/git-l10n/git-po

l10n-2.44.0-rnd3

* tag 'l10n-2.44.0-rnd3' of https://github.com/git-l10n/git-po:
  l10n: zh_TW: Git 2.44
  l10n: zh_CN: for git 2.44 rounds
  l10n: Update German translation
  l10n: tr: Update Turkish translations for 2.44
  l10n: fr.po: v2.44.0 round 3
  l10n: bg.po: Updated Bulgarian translation (5610t)
  l10n: sv.po: Update Swedish translation
  l10n: Update Catalan translation
  l10n: po-id for 2.44 (round 1)
  l10n: ci: disable cache for setup-go to suppress warnings
  l10n: ci: remove unused param for add-pr-comment@v2
  l10n: uk: v2.44 update (round 3)
  l10n: uk: v2.44 update (round 2)
  l10n: uk: v2.44 localization update
  l10n: bump Actions versions in l10n.yml

2 years agol10n: zh_TW: Git 2.44
Yi-Jyun Pan [Sun, 18 Feb 2024 12:53:27 +0000 (20:53 +0800)] 
l10n: zh_TW: Git 2.44

Co-Authored-By: lumynou5 <lumynou5.tw@gmail.com>
Signed-off-by: Yi-Jyun Pan <pan93412@gmail.com>
2 years agoMerge branch 'master' of github.com:ralfth/git
Jiang Xin [Sun, 18 Feb 2024 12:33:01 +0000 (20:33 +0800)] 
Merge branch 'master' of github.com:ralfth/git

* 'master' of github.com:ralfth/git:
  l10n: Update German translation

2 years agoMerge branch 'po-id' of github.com:bagasme/git-po
Jiang Xin [Sun, 18 Feb 2024 12:31:55 +0000 (20:31 +0800)] 
Merge branch 'po-id' of github.com:bagasme/git-po

* 'po-id' of github.com:bagasme/git-po:
  l10n: po-id for 2.44 (round 1)

2 years agoMerge branch '2.44-uk-update' of github.com:arkid15r/git-ukrainian-l10n
Jiang Xin [Sun, 18 Feb 2024 12:30:05 +0000 (20:30 +0800)] 
Merge branch '2.44-uk-update' of github.com:arkid15r/git-ukrainian-l10n

* '2.44-uk-update' of github.com:arkid15r/git-ukrainian-l10n:
  l10n: uk: v2.44 update (round 3)
  l10n: uk: v2.44 update (round 2)
  l10n: uk: v2.44 localization update

2 years agoMerge branch 'master' of github.com:alshopov/git-po
Jiang Xin [Sun, 18 Feb 2024 12:28:57 +0000 (20:28 +0800)] 
Merge branch 'master' of github.com:alshopov/git-po

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

2 years agoMerge branch 'tr-l10n' of github.com:bitigchi/git-po
Jiang Xin [Sun, 18 Feb 2024 12:27:47 +0000 (20:27 +0800)] 
Merge branch 'tr-l10n' of github.com:bitigchi/git-po

* 'tr-l10n' of github.com:bitigchi/git-po:
  l10n: tr: Update Turkish translations for 2.44

2 years agoMerge branch 'fr_2.44.0' of github.com:jnavila/git
Jiang Xin [Sun, 18 Feb 2024 12:26:45 +0000 (20:26 +0800)] 
Merge branch 'fr_2.44.0' of github.com:jnavila/git

* 'fr_2.44.0' of github.com:jnavila/git:
  l10n: fr.po: v2.44.0 round 3

2 years agoMerge branch 'catalan-l10n' of github.com:Softcatala/git-po
Jiang Xin [Sun, 18 Feb 2024 12:25:32 +0000 (20:25 +0800)] 
Merge branch 'catalan-l10n' of github.com:Softcatala/git-po

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

2 years agoMerge branch 'master' of github.com:nafmo/git-l10n-sv
Jiang Xin [Sun, 18 Feb 2024 12:24:48 +0000 (20:24 +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

2 years agol10n: zh_CN: for git 2.44 rounds
Teng Long [Mon, 12 Feb 2024 13:04:30 +0000 (21:04 +0800)] 
l10n: zh_CN: for git 2.44 rounds

In addition to the localized translation in 2.44, for zh_CN, we have
uniformly modified the translation of the word "commit-graph" to make it
more consistent with language usage habits.

Signed-off-by: Teng Long <dyroneteng@gmail.com>
2 years agoRelNotes: minor typo fixes in 2.44.0 draft
Todd Zullinger [Sat, 17 Feb 2024 16:37:45 +0000 (11:37 -0500)] 
RelNotes: minor typo fixes in 2.44.0 draft

Signed-off-by: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agol10n: Update German translation
Ralf Thielow [Sat, 17 Feb 2024 17:14:54 +0000 (18:14 +0100)] 
l10n: Update German translation

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
2 years agocompletion: use awk for filtering the config entries
Beat Bolli [Fri, 16 Feb 2024 17:10:46 +0000 (18:10 +0100)] 
completion: use awk for filtering the config entries

Commits 1e0ee4087e (completion: add and use
__git_compute_first_level_config_vars_for_section, 2024-02-10) and
6e32f718ff (completion: add and use
__git_compute_second_level_config_vars_for_section, 2024-02-10)
introduced new helpers for config completion.

Both helpers use a pipeline of grep and awk to filter the list of config
entries. awk is perfectly capable of filtering, so let's eliminate the
grep process and move the filtering into the awk script.

The "-E" grep option (extended syntax) was not necessary, as $section is
a single word.

While at it, wrap the over-long lines to make them more readable.

Signed-off-by: Beat Bolli <dev+git@drbeat.li>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agol10n: tr: Update Turkish translations for 2.44
Emir SARI [Sun, 11 Feb 2024 12:39:25 +0000 (15:39 +0300)] 
l10n: tr: Update Turkish translations for 2.44

Signed-off-by: Emir SARI <emir_sari@icloud.com>
2 years agol10n: fr.po: v2.44.0 round 3
Jean-Noël Avila [Sun, 11 Feb 2024 08:51:46 +0000 (09:51 +0100)] 
l10n: fr.po: v2.44.0 round 3

Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
2 years agol10n: bg.po: Updated Bulgarian translation (5610t)
Alexander Shopov [Sun, 11 Feb 2024 13:41:40 +0000 (14:41 +0100)] 
l10n: bg.po: Updated Bulgarian translation (5610t)

Signed-off-by: Alexander Shopov <ash@kambanaria.org>
2 years agol10n: sv.po: Update Swedish translation
Peter Krefting [Fri, 16 Feb 2024 06:59:21 +0000 (07:59 +0100)] 
l10n: sv.po: Update Swedish translation

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
2 years agol10n: Update Catalan translation
Jordi Mas [Sun, 11 Feb 2024 10:36:02 +0000 (11:36 +0100)] 
l10n: Update Catalan translation

Signed-off-by: Jordi Mas <jmas@softcatala.org>
2 years agol10n: po-id for 2.44 (round 1)
Bagas Sanjaya [Sat, 10 Feb 2024 13:02:17 +0000 (20:02 +0700)] 
l10n: po-id for 2.44 (round 1)

Update following components:

  * builtin/replay.c
  * command-list.h
  * commit-graph.c
  * pack-bitmap.c
  * sequencer.c

Signed-off-by: Bagas Sanjaya <bagasdotme@gmail.com>
2 years agol10n: ci: disable cache for setup-go to suppress warnings
Jiang Xin [Fri, 16 Feb 2024 03:20:39 +0000 (11:20 +0800)] 
l10n: ci: disable cache for setup-go to suppress warnings

After we upgraded actions/setup-go to v5, the following warning message
was reported every time we ran the CI.

    Restore cache failed: Dependencies file is not found ...

Disable cache to suppress warning messages as described in the solution
below.

    https://github.com/actions/setup-go/issues/427

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2 years agol10n: ci: remove unused param for add-pr-comment@v2
Jiang Xin [Fri, 16 Feb 2024 03:01:04 +0000 (11:01 +0800)] 
l10n: ci: remove unused param for add-pr-comment@v2

When we upgraded GitHub Actions "mshick/add-pr-comment" to v2, the
following warning message was reported every time we ran the CI.

    Unexpected input(s) 'repo-token-user-login', valid inputs ...

Removed the obsolete parameter "repo-token-user-login" to suppress
warning messages.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2 years agol10n: uk: v2.44 update (round 3)
Arkadii Yakovets [Fri, 16 Feb 2024 02:05:05 +0000 (18:05 -0800)] 
l10n: uk: v2.44 update (round 3)

Signed-off-by: Arkadii Yakovets <ark@cho.red>
2 years agol10n: uk: v2.44 update (round 2)
Arkadii Yakovets [Thu, 15 Feb 2024 04:35:59 +0000 (20:35 -0800)] 
l10n: uk: v2.44 update (round 2)

Signed-off-by: Arkadii Yakovets <ark@cho.red>
2 years agol10n: uk: v2.44 localization update
Arkadii Yakovets [Tue, 13 Feb 2024 02:38:26 +0000 (18:38 -0800)] 
l10n: uk: v2.44 localization update

Co-authored-by: Kate Golovanova <kate@kgthreads.com>
Signed-off-by: Arkadii Yakovets <ark@cho.red>
Signed-off-by: Kate Golovanova <kate@kgthreads.com>
2 years agoMerge branch 'master' of github.com:git/git
Jiang Xin [Fri, 16 Feb 2024 01:39:06 +0000 (09:39 +0800)] 
Merge branch 'master' of github.com:git/git

* 'master' of github.com:git/git:
  diff: mark param1 and param2 as placeholders

2 years agoMerge branch 'jx/dirstat-parseopt-help'
Junio C Hamano [Thu, 15 Feb 2024 23:14:48 +0000 (15:14 -0800)] 
Merge branch 'jx/dirstat-parseopt-help'

The mark-up of diff options has been updated to help translators.

* jx/dirstat-parseopt-help:
  diff: mark param1 and param2 as placeholders

2 years agot/lib-credential: clean additional credential
Bo Anderson [Thu, 15 Feb 2024 01:03:56 +0000 (01:03 +0000)] 
t/lib-credential: clean additional credential

71201ab0e5 (t/lib-credential.sh: ensure credential helpers handle long
headers, 2023-05-01) added a test which stores credentials with the host
victim.example.com but this was never cleaned up, leaving residual data
in the credential store after running the tests.

Add a cleanup call for this credential to resolve this issue.

Signed-off-by: Bo Anderson <mail@boanderson.me>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agot7003: ensure filter-branch prunes reflogs with the reftable backend
Patrick Steinhardt [Thu, 15 Feb 2024 08:25:55 +0000 (09:25 +0100)] 
t7003: ensure filter-branch prunes reflogs with the reftable backend

In t7003 we conditionally check whether the reflog for branches pruned
by git-filter-branch(1) get deleted based on whether or not we use the
"files" backend. Same as with the preceding commit, this condition was
added because in its initial iteration the "reftable" backend did not
delete reflogs when their corresponding ref was deleted. Since then, the
backend has been aligned to behave the same as the "files" backend
though, which makes this check unnecessary.

Remove it.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agot2011: exercise D/F conflicts with HEAD with the reftable backend
Patrick Steinhardt [Thu, 15 Feb 2024 08:25:51 +0000 (09:25 +0100)] 
t2011: exercise D/F conflicts with HEAD with the reftable backend

Some of the tests in t2011 exercise whether it is possible to move away
from a symbolic HEAD ref whose target ref has a directory-file conflict
with another, preexisting ref. These tests don't use git-symbolic-ref(1)
but manually write HEAD. This is supposedly done to avoid using logic
that we're about to exercise, but it makes it impossible to verify
whether the logic also works for ref backends other than "files".

Refactor the code to use git-symbolic-ref(1) instead so that the tests
work with the "reftable" backend, as well. We already have lots of tests
in t1404 that ensure that both git-update-ref(1) and git-symbolic-ref(1)
work in such a scenario, so it should be safe to rely on it here.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agot1405: remove unneeded cleanup step
Patrick Steinhardt [Thu, 15 Feb 2024 08:25:47 +0000 (09:25 +0100)] 
t1405: remove unneeded cleanup step

In 5e00514745 (t1405: explictly delete reflogs for reftable, 2022-01-31)
we have added a test that explicitly deletes the reflog when not using
the "files" backend. This was required because back then, the "reftable"
backend didn't yet delete reflogs when deleting their corresponding
branches, and thus subsequent tests would fail because some unexpected
reflogs still exist.

The "reftable" backend was eventually changed though so that it behaves
the same as the "files" backend and deletes reflogs when deleting refs.
This was done to make the "reftable" backend behave like the "files"
backend as closely as possible so that it can act as a drop-in
replacement.

The cleanup-style test is thus not required anymore. Remove it.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agot1404: make D/F conflict tests compatible with reftable backend
Patrick Steinhardt [Thu, 15 Feb 2024 08:25:42 +0000 (09:25 +0100)] 
t1404: make D/F conflict tests compatible with reftable backend

Some of the tests in t1404 exercise whether Git correctly aborts
transactions when there is a directory/file conflict with ref names.
While these tests are all marked to require the "files" backend, they do
in fact apply to the "reftable" backend as well.

This may not make much sense on the surface: D/F conflicts only exist
because the "files" backend uses the filesystem to store loose refs, and
thus the restriction theoretically shouldn't apply to the "reftable"
backend. But for now, the "reftable" backend artificially restricts the
creation of such conflicting refs so that it is a drop-in replacement
for the "files" backend. This also ensures that the "reftable" backend
can easily be used on the server side without causing issues for clients
which only know to use the "files" backend.

The only difference between the "files" and "reftable" backends is a
slightly different error message. Adapt the tests to accomodate for this
difference and remove the REFFILES prerequisite so that we start testing
with both backends.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agot1400: exercise reflog with gaps with reftable backend
Patrick Steinhardt [Thu, 15 Feb 2024 08:25:38 +0000 (09:25 +0100)] 
t1400: exercise reflog with gaps with reftable backend

In t1400, we have a test that exercises whether we print a warning
message as expected when the reflog contains entries which have a gap
between the old entry's new object ID and the new entry's old object ID.
While the logic should apply to all ref backends, the test setup writes
into `.git/logs` directly and is thus "files"-backend specific.

Refactor the test to instead use `git reflog delete` to create the gap
and drop the REFFILES prerequisite.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agot0410: convert tests to use DEFAULT_REPO_FORMAT prereq
Patrick Steinhardt [Thu, 15 Feb 2024 08:25:34 +0000 (09:25 +0100)] 
t0410: convert tests to use DEFAULT_REPO_FORMAT prereq

In t0410 we have two tests which exercise how partial clones behave in
the context of a repository with extensions. These tests are marked to
require a repository using SHA1 and the "files" backend because we
explicitly set the repository format version to 0, and setting up either
the "objectFormat" or "refStorage" extensions requires a repository
format version of 1.

We have recently introduced a new DEFAULT_REPO_FORMAT prerequisite.
Despite capturing the intent more directly, it also has the added
benefit that it can easily be extended in the future in case we add new
repository extensions. Adapt the tests to use it.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agot: move tests exercising the "files" backend
Patrick Steinhardt [Thu, 15 Feb 2024 08:25:30 +0000 (09:25 +0100)] 
t: move tests exercising the "files" backend

We still have a bunch of tests scattered across our test suites that
exercise on-disk files of the "files" backend directly:

  - t1301 exercises permissions of reflog files when the config
    "core.sharedRepository" is set.

  - t1400 exercises whether empty directories in the ref store are
    handled correctly.

  - t3200 exercises what happens when there are symlinks in the ref
    store.

  - t3400 also exercises what happens when ".git/logs" is a symlink.

All of these are inherently low-level tests specific to the "files"
backend. Move them into "t0600-reffiles-backend.sh" to reflect this.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agoMerge branch 'master' of github.com:git/git
Jiang Xin [Thu, 15 Feb 2024 01:48:25 +0000 (09:48 +0800)] 
Merge branch 'master' of github.com:git/git

* 'master' of github.com:git/git: (51 commits)
  Hopefully the last batch of fixes before 2.44 final
  Git 2.43.2
  A few more fixes before -rc1
  write-or-die: fix the polarity of GIT_FLUSH environment variable
  A few more topics before -rc1
  completion: add and use __git_compute_second_level_config_vars_for_section
  completion: add and use __git_compute_first_level_config_vars_for_section
  completion: complete 'submodule.*' config variables
  completion: add space after config variable names also in Bash 3
  receive-pack: use find_commit_header() in check_nonce()
  ci(linux32): add a note about Actions that must not be updated
  ci: bump remaining outdated Actions versions
  unit-tests: do show relative file paths on non-Windows, too
  receive-pack: use find_commit_header() in check_cert_push_options()
  prune: mark rebase autostash and orig-head as reachable
  sequencer: unset GIT_CHERRY_PICK_HELP for 'exec' commands
  ref-filter.c: sort formatted dates by byte value
  ssh signing: signal an error with a negative return value
  bisect: document command line arguments for "bisect start"
  bisect: document "terms" subcommand more fully
  ...

2 years agoHopefully the last batch of fixes before 2.44 final
Junio C Hamano [Wed, 14 Feb 2024 21:49:09 +0000 (13:49 -0800)] 
Hopefully the last batch of fixes before 2.44 final

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agoMerge branch 'pb/complete-config'
Junio C Hamano [Wed, 14 Feb 2024 23:36:06 +0000 (15:36 -0800)] 
Merge branch 'pb/complete-config'

The command line completion script (in contrib/) learned to
complete configuration variable names better.

* pb/complete-config:
  completion: add and use __git_compute_second_level_config_vars_for_section
  completion: add and use __git_compute_first_level_config_vars_for_section
  completion: complete 'submodule.*' config variables
  completion: add space after config variable names also in Bash 3

2 years agoMerge branch 'js/check-null-from-read-object-file'
Junio C Hamano [Wed, 14 Feb 2024 23:36:06 +0000 (15:36 -0800)] 
Merge branch 'js/check-null-from-read-object-file'

The code paths that call repo_read_object_file() have been
tightened to react to errors.

* js/check-null-from-read-object-file:
  Always check the return value of `repo_read_object_file()`

2 years agoMerge branch 'rs/receive-pack-remove-find-header'
Junio C Hamano [Wed, 14 Feb 2024 23:36:05 +0000 (15:36 -0800)] 
Merge branch 'rs/receive-pack-remove-find-header'

Code simplification.

* rs/receive-pack-remove-find-header:
  receive-pack: use find_commit_header() in check_nonce()
  receive-pack: use find_commit_header() in check_cert_push_options()

2 years agoMerge branch 'vn/rebase-with-cherry-pick-authorship'
Junio C Hamano [Wed, 14 Feb 2024 23:36:05 +0000 (15:36 -0800)] 
Merge branch 'vn/rebase-with-cherry-pick-authorship'

"git cherry-pick" invoked during "git rebase -i" session lost
the authorship information, which has been corrected.

* vn/rebase-with-cherry-pick-authorship:
  sequencer: unset GIT_CHERRY_PICK_HELP for 'exec' commands

2 years agoMerge branch 'pw/gc-during-rebase'
Junio C Hamano [Wed, 14 Feb 2024 23:36:05 +0000 (15:36 -0800)] 
Merge branch 'pw/gc-during-rebase'

The sequencer machinery does not use the ref API and instead
records names of certain objects it needs for its correct operation
in temporary files, which makes these objects susceptible to loss
by garbage collection.  These temporary files have been added as
starting points for reachability analysis to fix this.

* pw/gc-during-rebase:
  prune: mark rebase autostash and orig-head as reachable

2 years agot9146: replace test -d/-e/-f with appropriate test_path_is_* function
Chandra Pratap [Wed, 14 Feb 2024 17:50:48 +0000 (17:50 +0000)] 
t9146: replace test -d/-e/-f with appropriate test_path_is_* function

The helper functions test_path_is_* provide better debugging
information than test -d/-e/-f.

Replace "if ! test -d then <error message>" and "test -d" with
"test_path_is_dir" at places where we check for existent directories.

Replace "test -f" with "test_path_is_file" at places where we check
for existent files.

Replace "test ! -e" and "if test -d then <error message>" with
"test_path_is_missing" where we check for non-existent directories.

Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Chandra Pratap <chandrapratap3519@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agodoc: add shortcut to "am --whitespace=<action>"
Junio C Hamano [Wed, 14 Feb 2024 18:44:01 +0000 (10:44 -0800)] 
doc: add shortcut to "am --whitespace=<action>"

We refer readers of "git am --help" to "git apply --help" for many
options that are passed through, and most of them are simple
booleans, but --whitespace takes from a set of actions whose names
may slip users' minds.  Give a list of them in "git am --help" to
reduce one level of redirection only to find out what they are.

In the helper function to parse the available options, there was a
helpful comment reminding the developer to update list of <action>s
in the completion script. Mention the two documentation pages there
as well.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agotag: error when git-column fails
Rubén Justo [Tue, 13 Feb 2024 23:36:38 +0000 (00:36 +0100)] 
tag: error when git-column fails

If the user asks for the list of tags to be displayed in columns
("--columns"), a child git-column process is used to format the output
as expected.

In a rare situation where we encounter a problem spawning that child
process, we will work erroneously.

Make noticeable we're having a problem executing git-column, so the user
can act accordingly.

Signed-off-by: Rubén Justo <rjusto@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agorev-list: allow missing tips with --missing=[print|allow*]
Christian Couder [Wed, 14 Feb 2024 14:25:13 +0000 (15:25 +0100)] 
rev-list: allow missing tips with --missing=[print|allow*]

In 9830926c7d (rev-list: add commit object support in `--missing`
option, 2023-10-27) we fixed the `--missing` option in `git rev-list`
so that it works with with missing commits, not just blobs/trees.

Unfortunately, such a command would still fail with a "fatal: bad
object <oid>" if it is passed a missing commit, blob or tree as an
argument (before the rev walking even begins).

When such a command is used to find the dependencies of some objects,
for example the dependencies of quarantined objects (see the
"QUARANTINE ENVIRONMENT" section in the git-receive-pack(1)
documentation), it would be better if the command would instead
consider such missing objects, especially commits, in the same way as
other missing objects.

If, for example `--missing=print` is used, it would be nice for some
use cases if the missing tips passed as arguments were reported in
the same way as other missing objects instead of the command just
failing.

We could introduce a new option to make it work like this, but most
users are likely to prefer the command to have this behavior as the
default one. Introducing a new option would require another dumb loop
to look for that option early, which isn't nice.

Also we made `git rev-list` work with missing commits very recently
and the command is most often passed commits as arguments. So let's
consider this as a bug fix related to these recent changes.

While at it let's add a NEEDSWORK comment to say that we should get
rid of the existing ugly dumb loops that parse the
`--exclude-promisor-objects` and `--missing=...` options early.

Helped-by: Linus Arver <linusa@google.com>
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agot6022: fix 'test' style and 'even though' typo
Christian Couder [Wed, 14 Feb 2024 14:25:12 +0000 (15:25 +0100)] 
t6022: fix 'test' style and 'even though' typo

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agooidset: refactor oidset_insert_from_set()
Christian Couder [Wed, 14 Feb 2024 14:25:11 +0000 (15:25 +0100)] 
oidset: refactor oidset_insert_from_set()

In a following commit, we will need to add all the oids from a set into
another set. In "list-objects-filter.c", there is already a static
function called add_all() to do that.

Let's rename this function oidset_insert_from_set() and move it into
oidset.{c,h} to make it generally available.

While at it, let's remove a useless `!= NULL`.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agorevision: clarify a 'return NULL' in get_reference()
Christian Couder [Wed, 14 Feb 2024 14:25:10 +0000 (15:25 +0100)] 
revision: clarify a 'return NULL' in get_reference()

When we know a pointer variable is NULL, it's clearer to
explicitly return NULL than to return that variable.

In get_reference(), when 'object' is NULL, we already return NULL
when 'revs->exclude_promisor_objects && is_promisor_object(oid)' is
true, but we return 'object' when 'revs->ignore_missing' is true.

Let's make the code clearer and more uniform by also explicitly
returning NULL when 'revs->ignore_missing' is true.

Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agodiff: mark param1 and param2 as placeholders
Jiang Xin [Wed, 14 Feb 2024 08:46:41 +0000 (16:46 +0800)] 
diff: mark param1 and param2 as placeholders

Some l10n translators translated the parameters "files", "param1" and
"param2" in the following message:

    "synonym for --dirstat=files,param1,param2..."

Translating "param1" and "param2" is OK, but changing the parameter
"files" is wrong. The parameters that are not meant to be used verbatim
should be marked as placeholders, but the verbatim parameter not marked
as a placeholder should be left as is.

This change is a complement for commit 51e846e673 (doc: enforce
placeholders in documentation, 2023-12-25).

With the help of Jean-Noël,some parameter combinations in one
placeholder (e.g. "<param1,param2>...") are splited into seperate
placeholders.

Helped-by: Jean-Noël Avila <jn.avila@free.fr>
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agoGit 2.44-rc1 v2.44.0-rc1
Junio C Hamano [Tue, 13 Feb 2024 22:47:02 +0000 (14:47 -0800)] 
Git 2.44-rc1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agoGit 2.43.2 v2.43.2
Junio C Hamano [Tue, 13 Feb 2024 22:44:20 +0000 (14:44 -0800)] 
Git 2.43.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agoMerge branch 'pb/template-for-single-commit-pr' into maint-2.43
Junio C Hamano [Tue, 13 Feb 2024 22:44:51 +0000 (14:44 -0800)] 
Merge branch 'pb/template-for-single-commit-pr' into maint-2.43

Doc update.

* pb/template-for-single-commit-pr:
  .github/PULL_REQUEST_TEMPLATE.md: add a note about single-commit PRs

2 years agoMerge branch 'jc/bisect-doc' into maint-2.43
Junio C Hamano [Tue, 13 Feb 2024 22:44:51 +0000 (14:44 -0800)] 
Merge branch 'jc/bisect-doc' into maint-2.43

Doc update.

* jc/bisect-doc:
  bisect: document command line arguments for "bisect start"
  bisect: document "terms" subcommand more fully

2 years agoMerge branch 'js/win32-retry-pipe-write-on-enospc' into maint-2.43
Junio C Hamano [Tue, 13 Feb 2024 22:44:51 +0000 (14:44 -0800)] 
Merge branch 'js/win32-retry-pipe-write-on-enospc' into maint-2.43

Update to the code that writes to pipes on Windows.

* js/win32-retry-pipe-write-on-enospc:
  win32: special-case `ENOSPC` when writing to a pipe

2 years agoMerge branch 'tb/pack-bitmap-drop-unused-struct-member' into maint-2.43
Junio C Hamano [Tue, 13 Feb 2024 22:44:50 +0000 (14:44 -0800)] 
Merge branch 'tb/pack-bitmap-drop-unused-struct-member' into maint-2.43

Code clean-up.

* tb/pack-bitmap-drop-unused-struct-member:
  pack-bitmap: drop unused `reuse_objects`

2 years agoMerge branch 'jt/p4-spell-re-with-raw-string' into maint-2.43
Junio C Hamano [Tue, 13 Feb 2024 22:44:50 +0000 (14:44 -0800)] 
Merge branch 'jt/p4-spell-re-with-raw-string' into maint-2.43

"git p4" update to squelch warnings from Python.

* jt/p4-spell-re-with-raw-string:
  git-p4: use raw string literals for regular expressions

2 years agoMerge branch 'jc/coc-whitespace-fix' into maint-2.43
Junio C Hamano [Tue, 13 Feb 2024 22:44:50 +0000 (14:44 -0800)] 
Merge branch 'jc/coc-whitespace-fix' into maint-2.43

Docfix.

* jc/coc-whitespace-fix:
  CoC: whitespace fix

2 years agoMerge branch 'sd/negotiate-trace-fix' into maint-2.43
Junio C Hamano [Tue, 13 Feb 2024 22:44:50 +0000 (14:44 -0800)] 
Merge branch 'sd/negotiate-trace-fix' into maint-2.43

Tracing fix.

* sd/negotiate-trace-fix:
  push: region_leave trace for negotiate_using_fetch

2 years agoMerge branch 'jc/majordomo-to-subspace' into maint-2.43
Junio C Hamano [Tue, 13 Feb 2024 22:44:50 +0000 (14:44 -0800)] 
Merge branch 'jc/majordomo-to-subspace' into maint-2.43

Doc update.

* jc/majordomo-to-subspace:
  Docs: majordomo@vger.kernel.org has been decomissioned

2 years agoMerge branch 'nb/rebase-x-shell-docfix' into maint-2.43
Junio C Hamano [Tue, 13 Feb 2024 22:44:49 +0000 (14:44 -0800)] 
Merge branch 'nb/rebase-x-shell-docfix' into maint-2.43

Doc update.

* nb/rebase-x-shell-docfix:
  rebase: fix documentation about used shell in -x

2 years agoMerge branch 'la/strvec-comment-fix' into maint-2.43
Junio C Hamano [Tue, 13 Feb 2024 22:44:49 +0000 (14:44 -0800)] 
Merge branch 'la/strvec-comment-fix' into maint-2.43

Comment fix.

* la/strvec-comment-fix:
  strvec: use correct member name in comments

2 years agoMerge branch 'ne/doc-filter-blob-limit-fix' into maint-2.43
Junio C Hamano [Tue, 13 Feb 2024 22:44:49 +0000 (14:44 -0800)] 
Merge branch 'ne/doc-filter-blob-limit-fix' into maint-2.43

Docfix.

* ne/doc-filter-blob-limit-fix:
  rev-list-options: fix off-by-one in '--filter=blob:limit=<n>' explainer

2 years agoMerge branch 'cp/git-flush-is-an-env-bool' into maint-2.43
Junio C Hamano [Tue, 13 Feb 2024 22:44:49 +0000 (14:44 -0800)] 
Merge branch 'cp/git-flush-is-an-env-bool' into maint-2.43

Recent conversion to allow more than 0/1 in GIT_FLUSH broke the
mechanism by flipping what yes/no means by mistake, which has been
corrected.

* cp/git-flush-is-an-env-bool:
  write-or-die: fix the polarity of GIT_FLUSH environment variable

2 years agoMerge branch 'ps/report-failure-from-git-stash' into maint-2.43
Junio C Hamano [Tue, 13 Feb 2024 22:44:49 +0000 (14:44 -0800)] 
Merge branch 'ps/report-failure-from-git-stash' into maint-2.43

"git stash" sometimes was silent even when it failed due to
unwritable index file, which has been corrected.

* ps/report-failure-from-git-stash:
  builtin/stash: report failure to write to index

2 years agoMerge branch 'jc/sign-buffer-failure-propagation-fix' into maint-2.43
Junio C Hamano [Tue, 13 Feb 2024 22:44:48 +0000 (14:44 -0800)] 
Merge branch 'jc/sign-buffer-failure-propagation-fix' into maint-2.43

A failed "git tag -s" did not necessarily result in an error
depending on the crypto backend, which has been corrected.

* jc/sign-buffer-failure-propagation-fix:
  ssh signing: signal an error with a negative return value
  tag: fix sign_buffer() call to create a signed tag

2 years agoMerge branch 'jc/comment-style-fixes' into maint-2.43
Junio C Hamano [Tue, 13 Feb 2024 22:44:48 +0000 (14:44 -0800)] 
Merge branch 'jc/comment-style-fixes' into maint-2.43

Rewrite //-comments to /* comments */ in files whose comments
prevalently use the latter.

* jc/comment-style-fixes:
  reftable/pq_test: comment style fix
  merge-ort.c: comment style fix
  builtin/worktree: comment style fixes

2 years agoMerge branch 'jk/diff-external-with-no-index' into maint-2.43
Junio C Hamano [Tue, 13 Feb 2024 22:44:48 +0000 (14:44 -0800)] 
Merge branch 'jk/diff-external-with-no-index' into maint-2.43

"git diff --no-index file1 file2" segfaulted while invoking the
external diff driver, which has been corrected.

* jk/diff-external-with-no-index:
  diff: handle NULL meta-info when spawning external diff

2 years agoMerge branch 'rs/parse-options-with-keep-unknown-abbrev-fix' into maint-2.43
Junio C Hamano [Tue, 13 Feb 2024 22:44:48 +0000 (14:44 -0800)] 
Merge branch 'rs/parse-options-with-keep-unknown-abbrev-fix' into maint-2.43

"git diff --no-rename A B" did not disable rename detection but did
not trigger an error from the command line parser.

* rs/parse-options-with-keep-unknown-abbrev-fix:
  parse-options: simplify positivation handling
  parse-options: fully disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN

2 years agoMerge branch 'en/diffcore-delta-final-line-fix' into maint-2.43
Junio C Hamano [Tue, 13 Feb 2024 22:44:47 +0000 (14:44 -0800)] 
Merge branch 'en/diffcore-delta-final-line-fix' into maint-2.43

Rename detection logic ignored the final line of a file if it is an
incomplete line.

* en/diffcore-delta-final-line-fix:
  diffcore-delta: avoid ignoring final 'line' of file

2 years agoMerge branch 'tc/show-ref-exists-fix' into maint-2.43
Junio C Hamano [Tue, 13 Feb 2024 22:44:47 +0000 (14:44 -0800)] 
Merge branch 'tc/show-ref-exists-fix' into maint-2.43

Update to a new feature recently added, "git show-ref --exists".

* tc/show-ref-exists-fix:
  builtin/show-ref: treat directory as non-existing in --exists

2 years agoA few more fixes before -rc1
Junio C Hamano [Tue, 13 Feb 2024 22:25:40 +0000 (14:25 -0800)] 
A few more fixes before -rc1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agoMerge branch 'cp/git-flush-is-an-env-bool'
Junio C Hamano [Tue, 13 Feb 2024 22:31:12 +0000 (14:31 -0800)] 
Merge branch 'cp/git-flush-is-an-env-bool'

Recent conversion to allow more than 0/1 in GIT_FLUSH broke the
mechanism by flipping what yes/no means by mistake, which has been
corrected.

* cp/git-flush-is-an-env-bool:
  write-or-die: fix the polarity of GIT_FLUSH environment variable

2 years agoMerge branch 'jc/unit-tests-make-relative-fix'
Junio C Hamano [Tue, 13 Feb 2024 22:31:11 +0000 (14:31 -0800)] 
Merge branch 'jc/unit-tests-make-relative-fix'

The mechanism to report the filename in the source code, used by
the unit-test machinery, assumed that the compiler expanded __FILE__
to the path to the source given to the $(CC), but some compilers
give full path, breaking the output.  This has been corrected.

* jc/unit-tests-make-relative-fix:
  unit-tests: do show relative file paths on non-Windows, too

2 years agoMerge branch 'js/github-actions-update'
Junio C Hamano [Tue, 13 Feb 2024 22:31:11 +0000 (14:31 -0800)] 
Merge branch 'js/github-actions-update'

Update remaining GitHub Actions jobs to avoid warnings against
using deprecated version of Node.js.

* js/github-actions-update:
  ci(linux32): add a note about Actions that must not be updated
  ci: bump remaining outdated Actions versions

2 years agoMerge branch 'jc/github-actions-update'
Junio C Hamano [Tue, 13 Feb 2024 22:31:11 +0000 (14:31 -0800)] 
Merge branch 'jc/github-actions-update'

Squelch node.js 16 deprecation warnings from GitHub Actions CI
by updating actions/github-script and actions/checkout that use
node.js 20.

* jc/github-actions-update:
  GitHub Actions: update to github-script@v7
  GitHub Actions: update to checkout@v4

2 years agoadd -p tests: remove PERL prerequisites
Ghanshyam Thakkar [Tue, 13 Feb 2024 00:05:30 +0000 (05:35 +0530)] 
add -p tests: remove PERL prerequisites

The Perl version of the add -i/-p commands has been removed since
20b813d (add: remove "add.interactive.useBuiltin" & Perl "git
add--interactive", 2023-02-07)

Therefore, Perl prerequisite in the test scripts which use the patch
mode functionality is not neccessary.

Signed-off-by: Ghanshyam Thakkar <shyamthakkar001@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agoadd-patch: classify '@' as a synonym for 'HEAD'
Ghanshyam Thakkar [Tue, 13 Feb 2024 00:05:29 +0000 (05:35 +0530)] 
add-patch: classify '@' as a synonym for 'HEAD'

Currently, (restore, checkout, reset) commands correctly take '@' as a
synonym for 'HEAD'. However, in patch mode different prompts/messages
are given on command line due to patch mode machinery not considering
'@' to be a synonym for 'HEAD' due to literal string comparison with
the word 'HEAD', and therefore assigning patch_mode_($command)_nothead
and triggering reverse mode (-R in diff-index). The NEEDSWORK comment
suggested comparing commit objects to get around this. However, doing
so would also take a non-checked out branch pointing to the same commit
as HEAD, as HEAD. This would cause confusion to the user.

Therefore, after parsing '@', replace it with 'HEAD' as reasonably
early as possible. This also solves another problem of disparity
between 'git checkout HEAD' and 'git checkout @' (latter detaches at
the HEAD commit and the former does not).

Trade-offs:
- Some of the errors would show the revision argument as 'HEAD' when
  given '@'. This should be fine, as most users who probably use '@'
  would be aware that it is a shortcut for 'HEAD' and most probably
  used to use 'HEAD'. There is also relevant documentation in
  'gitrevisions' manpage about '@' being the shortcut for 'HEAD'. Also,
  the simplicity of the solution far outweighs this cost.

- Consider '@' as a shortcut for 'HEAD' even if 'refs/heads/@' exists
  at a different commit. Naming a branch '@' is an obvious foot-gun and
  many existing commands already take '@' for 'HEAD' even if
  'refs/heads/@' exists at a different commit or does not exist at all
  (e.g. 'git log @', 'git push origin @' etc.). Therefore this is an
  existing assumption and should not be a problem.

Helped-by: Junio C Hamano <gitster@pobox.com>
Helped-by: Phillip Wood <phillip.wood123@gmail.com>
Signed-off-by: Ghanshyam Thakkar <shyamthakkar001@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agogit: --no-lazy-fetch option
Junio C Hamano [Thu, 8 Feb 2024 23:17:31 +0000 (15:17 -0800)] 
git: --no-lazy-fetch option

Sometimes, especially during tests of low level machinery, it is
handy to have a way to disable lazy fetching of objects.  This
allows us to say, for example, "git cat-file -e <object-name>", to
see if the object is locally available.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agowrite-or-die: fix the polarity of GIT_FLUSH environment variable
Junio C Hamano [Tue, 13 Feb 2024 19:48:15 +0000 (11:48 -0800)] 
write-or-die: fix the polarity of GIT_FLUSH environment variable

When GIT_FLUSH is set to 1, true, on, yes, then we should disable
skip_stdout_flush, but the conversion somehow did the opposite.

With the understanding of the original motivation behind "skip" in
06f59e9f (Don't fflush(stdout) when it's not helpful, 2007-06-29),
we can sympathize with the current naming (we wanted to avoid
useless flushing of stdout by default, with an escape hatch to
always flush), but it is still not a good excuse.

Retire the "skip_stdout_flush" variable and replace it with "flush_stdout"
that tells if we do or do not want to run fflush().

Reported-by: Xiaoguang WANG <wxiaoguang@gmail.com>
Helped-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agocolumn: guard against negative padding
Kristoffer Haugsbakk [Tue, 13 Feb 2024 16:01:21 +0000 (17:01 +0100)] 
column: guard against negative padding

Make sure that client code can’t pass in a negative padding by accident.

Suggested-by: Rubén Justo <rjusto@gmail.com>
Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agocolumn: disallow negative padding
Kristoffer Haugsbakk [Tue, 13 Feb 2024 16:01:20 +0000 (17:01 +0100)] 
column: disallow negative padding

A negative padding does not make sense and can cause errors in the
memory allocator since it’s interpreted as an unsigned integer.

Reported-by: Tiago Pascoal <tiago@pascoal.net>
Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agoSync with 'maint'
Junio C Hamano [Mon, 12 Feb 2024 21:17:06 +0000 (13:17 -0800)] 
Sync with 'maint'

2 years agoA few more topics before -rc1
Junio C Hamano [Mon, 12 Feb 2024 20:20:35 +0000 (12:20 -0800)] 
A few more topics before -rc1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2 years agoMerge branch 'tb/multi-pack-reuse-experiment'
Junio C Hamano [Mon, 12 Feb 2024 21:16:11 +0000 (13:16 -0800)] 
Merge branch 'tb/multi-pack-reuse-experiment'

Setting `feature.experimental` opts the user into multi-pack reuse
experiment

* tb/multi-pack-reuse-experiment:
  pack-objects: enable multi-pack reuse via `feature.experimental`
  t5332-multi-pack-reuse.sh: extract pack-objects helper functions