]> git.ipfire.org Git - thirdparty/git.git/log
thirdparty/git.git
3 months agoMerge branch 'ja/doc-placeholders-markup-rules' into HEAD
Junio C Hamano [Fri, 1 Mar 2024 22:38:55 +0000 (14:38 -0800)] 
Merge branch 'ja/doc-placeholders-markup-rules' into HEAD

The way placeholders are to be marked-up in documentation have been
specified; use "_<placeholder>_" to typeset the word inside a pair
of <angle-brakets> emphasized.

* ja/doc-placeholders-markup-rules:
  doc: clarify the format of placeholders

3 months agoMerge branch 'ps/reflog-list' into HEAD
Junio C Hamano [Fri, 1 Mar 2024 22:38:55 +0000 (14:38 -0800)] 
Merge branch 'ps/reflog-list' into HEAD

"git reflog" learned a "list" subcommand that enumerates known reflogs.

* ps/reflog-list:
  builtin/reflog: introduce subcommand to list reflogs
  refs: stop resolving ref corresponding to reflogs
  refs: drop unused params from the reflog iterator callback
  refs: always treat iterators as ordered
  refs/files: sort merged worktree and common reflogs
  refs/files: sort reflogs returned by the reflog iterator
  dir-iterator: support iteration in sorted order
  dir-iterator: pass name to `prepare_next_entry_data()` directly

3 months agoMerge branch 'ds/doc-send-email-capitalization' into HEAD
Junio C Hamano [Fri, 1 Mar 2024 22:38:54 +0000 (14:38 -0800)] 
Merge branch 'ds/doc-send-email-capitalization' into HEAD

Doc update.

* ds/doc-send-email-capitalization:
  documentation: send-email: use camel case consistently

3 months agoMerge branch 'ja/docfixes' into HEAD
Junio C Hamano [Fri, 1 Mar 2024 22:38:54 +0000 (14:38 -0800)] 
Merge branch 'ja/docfixes' into HEAD

Doc update.

* ja/docfixes:
  doc: end sentences with full-stop
  doc: close unclosed angle-bracket of a placeholder in git-clone doc
  doc: git-rev-parse: enforce command-line description syntax

3 months agoMerge branch 'cp/t9146-use-test-path-helpers' into HEAD
Junio C Hamano [Fri, 1 Mar 2024 22:38:54 +0000 (14:38 -0800)] 
Merge branch 'cp/t9146-use-test-path-helpers' into HEAD

Test script clean-up.

* cp/t9146-use-test-path-helpers:
  t9146: replace test -d/-e/-f with appropriate test_path_is_* function

3 months agoMerge branch 'ps/difftool-dir-diff-exit-code' into HEAD
Junio C Hamano [Fri, 1 Mar 2024 22:38:54 +0000 (14:38 -0800)] 
Merge branch 'ps/difftool-dir-diff-exit-code' into HEAD

"git difftool --dir-diff" learned to honor the "--trust-exit-code"
option; it used to always exit with 0 and signalled success.

* ps/difftool-dir-diff-exit-code:
  git-difftool--helper: honor `--trust-exit-code` with `--dir-diff`

3 months agoThe second batch
Junio C Hamano [Wed, 28 Feb 2024 00:04:14 +0000 (16:04 -0800)] 
The second batch

Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 months agoMerge branch 'jb/doc-interactive-singlekey-do-not-need-perl'
Junio C Hamano [Wed, 28 Feb 2024 00:04:33 +0000 (16:04 -0800)] 
Merge branch 'jb/doc-interactive-singlekey-do-not-need-perl'

Doc clean-up.

* jb/doc-interactive-singlekey-do-not-need-perl:
  doc: remove outdated information about interactive.singleKey

3 months agoMerge branch 'jk/t0303-clean'
Junio C Hamano [Wed, 28 Feb 2024 00:04:32 +0000 (16:04 -0800)] 
Merge branch 'jk/t0303-clean'

Test clean-up.

* jk/t0303-clean:
  t0303: check that helper_test_clean removes all credentials

3 months agoMerge branch 'mh/libsecret-empty-password-fix'
Junio C Hamano [Wed, 28 Feb 2024 00:04:32 +0000 (16:04 -0800)] 
Merge branch 'mh/libsecret-empty-password-fix'

Credential helper based on libsecret (in contrib/) has been updated
to handle an empty password correctly.

* mh/libsecret-empty-password-fix:
  libsecret: retrieve empty password

3 months agoMerge branch 'bb/completion-no-grep-into-awk'
Junio C Hamano [Wed, 28 Feb 2024 00:04:32 +0000 (16:04 -0800)] 
Merge branch 'bb/completion-no-grep-into-awk'

Some parts of command line completion script (in contrib/) have
been micro-optimized.

* bb/completion-no-grep-into-awk:
  completion: use awk for filtering the config entries

3 months agoMerge branch 'km/mergetool-vimdiff-layout-fallback'
Junio C Hamano [Wed, 28 Feb 2024 00:04:32 +0000 (16:04 -0800)] 
Merge branch 'km/mergetool-vimdiff-layout-fallback'

Variants of vimdiff learned to honor mergetool.<variant>.layout settings.

* km/mergetool-vimdiff-layout-fallback:
  mergetools: vimdiff: use correct tool's name when reading mergetool config

3 months agoMerge branch 'ba/credential-test-clean-fix'
Junio C Hamano [Wed, 28 Feb 2024 00:04:32 +0000 (16:04 -0800)] 
Merge branch 'ba/credential-test-clean-fix'

Test clean-up.

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

3 months agoMerge branch 'rj/tag-column-fix'
Junio C Hamano [Wed, 28 Feb 2024 00:04:31 +0000 (16:04 -0800)] 
Merge branch 'rj/tag-column-fix'

"git tag --column" failed to check the exit status of its "git
column" invocation, which has been corrected.

* rj/tag-column-fix:
  tag: error when git-column fails

3 months agoMerge branch 'jc/am-whitespace-doc'
Junio C Hamano [Wed, 28 Feb 2024 00:04:31 +0000 (16:04 -0800)] 
Merge branch 'jc/am-whitespace-doc'

"git am --help" now tells readers what actions are available in
"git am --whitespace=<action>", in addition to saying that the
option is passed through to the underlying "git apply".

* jc/am-whitespace-doc:
  doc: add shortcut to "am --whitespace=<action>"

3 months agoStart the 2.45 cycle
Junio C Hamano [Tue, 27 Feb 2024 01:23:44 +0000 (17:23 -0800)] 
Start the 2.45 cycle

Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 months agoMerge branch 'ps/ref-tests-update-even-more'
Junio C Hamano [Tue, 27 Feb 2024 02:10:25 +0000 (18:10 -0800)] 
Merge branch 'ps/ref-tests-update-even-more'

More tests that are marked as "ref-files only" have been updated to
improve test coverage of reftable backend.

* ps/ref-tests-update-even-more:
  t7003: ensure filter-branch prunes reflogs with the reftable backend
  t2011: exercise D/F conflicts with HEAD with the reftable backend
  t1405: remove unneeded cleanup step
  t1404: make D/F conflict tests compatible with reftable backend
  t1400: exercise reflog with gaps with reftable backend
  t0410: convert tests to use DEFAULT_REPO_FORMAT prereq
  t: move tests exercising the "files" backend

3 months agoMerge branch 'gt/at-is-synonym-for-head-in-add-patch'
Junio C Hamano [Tue, 27 Feb 2024 02:10:25 +0000 (18:10 -0800)] 
Merge branch 'gt/at-is-synonym-for-head-in-add-patch'

Teach "git checkout -p" and friends that "@" is a synonym for
"HEAD".

* gt/at-is-synonym-for-head-in-add-patch:
  add -p tests: remove PERL prerequisites
  add-patch: classify '@' as a synonym for 'HEAD'

3 months agoMerge branch 'kh/column-reject-negative-padding'
Junio C Hamano [Tue, 27 Feb 2024 02:10:25 +0000 (18:10 -0800)] 
Merge branch 'kh/column-reject-negative-padding'

"git column" has been taught to reject negative padding value, as
it would lead to nonsense behaviour including division by zero.

* kh/column-reject-negative-padding:
  column: guard against negative padding
  column: disallow negative padding

3 months agoMerge branch 'jc/t9210-lazy-fix'
Junio C Hamano [Tue, 27 Feb 2024 02:10:24 +0000 (18:10 -0800)] 
Merge branch 'jc/t9210-lazy-fix'

Adjust use of "rev-list --missing" in an existing tests so that it
does not depend on a buggy failure mode.

* jc/t9210-lazy-fix:
  t9210: do not rely on lazy fetching to fail

3 months agoMerge branch 'ps/reftable-iteration-perf'
Junio C Hamano [Tue, 27 Feb 2024 02:10:24 +0000 (18:10 -0800)] 
Merge branch 'ps/reftable-iteration-perf'

The code to iterate over refs with the reftable backend has seen
some optimization.

* ps/reftable-iteration-perf:
  reftable/reader: add comments to `table_iter_next()`
  reftable/record: don't try to reallocate ref record name
  reftable/block: swap buffers instead of copying
  reftable/pq: allocation-less comparison of entry keys
  reftable/merged: skip comparison for records of the same subiter
  reftable/merged: allocation-less dropping of shadowed records
  reftable/record: introduce function to compare records by key

3 months agoMerge branch 'rs/use-xstrncmpz'
Junio C Hamano [Tue, 27 Feb 2024 02:10:24 +0000 (18:10 -0800)] 
Merge branch 'rs/use-xstrncmpz'

Code clean-up.

* rs/use-xstrncmpz:
  use xstrncmpz()

3 months agoMerge branch 'cp/apply-core-filemode'
Junio C Hamano [Tue, 27 Feb 2024 02:10:24 +0000 (18:10 -0800)] 
Merge branch 'cp/apply-core-filemode'

"git apply" on a filesystem without filemode support have learned
to take a hint from what is in the index for the path, even when
not working with the "--index" or "--cached" option, when checking
the executable bit match what is required by the preimage in the
patch.

* cp/apply-core-filemode:
  apply: code simplification
  apply: correctly reverse patch's pre- and post-image mode bits
  apply: ignore working tree filemode when !core.filemode

3 months agoMerge branch 'ps/reftable-backend'
Junio C Hamano [Tue, 27 Feb 2024 02:10:23 +0000 (18:10 -0800)] 
Merge branch 'ps/reftable-backend'

Integrate the reftable code into the refs framework as a backend.

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

3 months agoGit 2.44 v2.44.0
Junio C Hamano [Fri, 23 Feb 2024 00:14:53 +0000 (16:14 -0800)] 
Git 2.44

Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 months agoGit 2.43.3 v2.43.3
Junio C Hamano [Fri, 23 Feb 2024 00:13:38 +0000 (16:13 -0800)] 
Git 2.43.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 months agoMerge branch 'la/trailer-cleanups' into maint-2.43
Junio C Hamano [Fri, 23 Feb 2024 00:09:45 +0000 (16:09 -0800)] 
Merge branch 'la/trailer-cleanups' into maint-2.43

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

3 months agodoc: clarify the format of placeholders
Jean-Noël Avila [Wed, 21 Feb 2024 21:18:59 +0000 (21:18 +0000)] 
doc: clarify the format of placeholders

Add the new format rule when using placeholders in the description of
commands and options.

Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 months agobuiltin/reflog: introduce subcommand to list reflogs
Patrick Steinhardt [Wed, 21 Feb 2024 12:37:47 +0000 (13:37 +0100)] 
builtin/reflog: introduce subcommand to list reflogs

While the git-reflog(1) command has subcommands to show reflog entries
or check for reflog existence, it does not have any subcommands that
would allow the user to enumerate all existing reflogs. This makes it
quite hard to discover which reflogs a repository has. While this can
be worked around with the "files" backend by enumerating files in the
".git/logs" directory, users of the "reftable" backend don't enjoy such
a luxury.

Introduce a new subcommand `git reflog list` that lists all reflogs the
repository knows of to fill this gap.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 months agorefs: stop resolving ref corresponding to reflogs
Patrick Steinhardt [Wed, 21 Feb 2024 12:37:43 +0000 (13:37 +0100)] 
refs: stop resolving ref corresponding to reflogs

The reflog iterator tries to resolve the corresponding ref for every
reflog that it is about to yield. Historically, this was done due to
multiple reasons:

  - It ensures that the refname is safe because we end up calling
    `check_refname_format()`. Also, non-conformant refnames are skipped
    altogether.

  - The iterator used to yield the resolved object ID as well as its
    flags to the callback. This info was never used though, and the
    corresponding parameters were dropped in the preceding commit.

  - When a ref is corrupt then the reflog is not emitted at all.

We're about to introduce a new `git reflog list` subcommand that will
print all reflogs that the refdb knows about. Skipping over reflogs
whose refs are corrupted would be quite counterproductive in this case
as the user would have no way to learn about reflogs which may still
exist in their repository to help and rescue such a corrupted ref. Thus,
the only remaining reason for why we'd want to resolve the ref is to
verify its refname.

Refactor the code to call `check_refname_format()` directly instead of
trying to resolve the ref. This is significantly more efficient given
that we don't have to hit the object database anymore to list reflogs.
And second, it ensures that we end up showing reflogs of broken refs,
which will help to make the reflog more useful.

Note that this really only impacts the case where the corresponding ref
is corrupt. Reflogs for nonexistent refs would have been returned to the
caller beforehand already as we did not pass `RESOLVE_REF_READING` to
the function, and thus `refs_resolve_ref_unsafe()` would have returned
successfully in that case.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 months agorefs: drop unused params from the reflog iterator callback
Patrick Steinhardt [Wed, 21 Feb 2024 12:37:39 +0000 (13:37 +0100)] 
refs: drop unused params from the reflog iterator callback

The ref and reflog iterators share much of the same underlying code to
iterate over the corresponding entries. This results in some weird code
because the reflog iterator also exposes an object ID as well as a flag
to the callback function. Neither of these fields do refer to the reflog
though -- they refer to the corresponding ref with the same name. This
is quite misleading. In practice at least the object ID cannot really be
implemented in any other way as a reflog does not have a specific object
ID in the first place. This is further stressed by the fact that none of
the callbacks except for our test helper make use of these fields.

Split up the infrastucture so that ref and reflog iterators use separate
callback signatures. This allows us to drop the nonsensical fields from
the reflog iterator.

Note that internally, the backends still use the same shared infra to
iterate over both types. As the backends should never end up being
called directly anyway, this is not much of a problem and thus kept
as-is for simplicity's sake.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 months agorefs: always treat iterators as ordered
Patrick Steinhardt [Wed, 21 Feb 2024 12:37:35 +0000 (13:37 +0100)] 
refs: always treat iterators as ordered

In the preceding commit we have converted the reflog iterator of the
"files" backend to be ordered, which was the only remaining ref iterator
that wasn't ordered. Refactor the ref iterator infrastructure so that we
always assume iterators to be ordered, thus simplifying the code.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 months agorefs/files: sort merged worktree and common reflogs
Patrick Steinhardt [Wed, 21 Feb 2024 12:37:31 +0000 (13:37 +0100)] 
refs/files: sort merged worktree and common reflogs

When iterating through reflogs in a worktree we create a merged iterator
that merges reflogs from both refdbs. The resulting refs are ordered so
that instead we first return all worktree reflogs before we return all
common refs.

This is the only remaining case where a ref iterator returns entries in
a non-lexicographic order. The result would look something like the
following (listed with a command we introduce in a subsequent commit):

```
$ git reflog list
HEAD
refs/worktree/per-worktree
refs/heads/main
refs/heads/wt
```

So we first print the per-worktree reflogs in lexicographic order, then
the common reflogs in lexicographic order. This is confusing and not
consistent with how we print per-worktree refs, which are exclusively
sorted lexicographically.

Sort reflogs lexicographically in the same way as we sort normal refs.
As this is already implemented properly by the "reftable" backend via a
separate selection function, we simply pull out that logic and reuse it
for the "files" backend. As logs are properly sorted now, mark the
merged reflog iterator as sorted.

Tests will be added in a subsequent commit.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 months agorefs/files: sort reflogs returned by the reflog iterator
Patrick Steinhardt [Wed, 21 Feb 2024 12:37:27 +0000 (13:37 +0100)] 
refs/files: sort reflogs returned by the reflog iterator

We use a directory iterator to return reflogs via the reflog iterator.
This iterator returns entries in the same order as readdir(3P) would and
will thus yield reflogs with no discernible order.

Set the new `DIR_ITERATOR_SORTED` flag that was introduced in the
preceding commit so that the order is deterministic. While the effect of
this can only been observed in a test tool, a subsequent commit will
start to expose this functionality to users via a new `git reflog list`
subcommand.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 months agodir-iterator: support iteration in sorted order
Patrick Steinhardt [Wed, 21 Feb 2024 12:37:23 +0000 (13:37 +0100)] 
dir-iterator: support iteration in sorted order

The `struct dir_iterator` is a helper that allows us to iterate through
directory entries. This iterator returns entries in the exact same order
as readdir(3P) does -- or in other words, it guarantees no specific
order at all.

This is about to become problematic as we are introducing a new reflog
subcommand to list reflogs. As the "files" backend uses the directory
iterator to enumerate reflogs, returning reflog names and exposing them
to the user would inherit the indeterministic ordering. Naturally, it
would make for a terrible user interface to show a list with no
discernible order.

While this could be handled at a higher level by the new subcommand
itself by collecting and ordering the reflogs, this would be inefficient
because we would first have to collect all reflogs before we can sort
them, which would introduce additional latency when there are many
reflogs.

Instead, introduce a new option into the directory iterator that asks
for its entries to be yielded in lexicographical order. If set, the
iterator will read all directory entries greedily and sort them before
we start to iterate over them.

While this will of course also incur overhead as we cannot yield the
directory entries immediately, it should at least be more efficient than
having to sort the complete list of reflogs as we only need to sort one
directory at a time.

This functionality will be used in a follow-up commit.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 months agodir-iterator: pass name to `prepare_next_entry_data()` directly
Patrick Steinhardt [Wed, 21 Feb 2024 12:37:19 +0000 (13:37 +0100)] 
dir-iterator: pass name to `prepare_next_entry_data()` directly

When adding the next directory entry for `struct dir_iterator` we pass
the complete `struct dirent *` to `prepare_next_entry_data()` even
though we only need the entry's name.

Refactor the code to pass in the name, only. This prepares for a
subsequent commit where we introduce the ability to iterate through
dir entries in an ordered manner.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 months 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>
3 months 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>
3 months 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>
3 months 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>
3 months 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>
3 months 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>
3 months 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

3 months 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>
3 months 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>
3 months 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>
3 months 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

3 months 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>
3 months 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

3 months 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>
3 months 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

3 months 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>
3 months 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

3 months 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)

3 months 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

3 months 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)

3 months 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

3 months 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

3 months 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

3 months 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

3 months 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>
3 months 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>
3 months 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>
3 months 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>
3 months 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>
3 months 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>
3 months 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>
3 months 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>
3 months 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>
3 months 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>
3 months 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>
3 months 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>
3 months 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>
3 months 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>
3 months 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>
3 months 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

4 months 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

4 months 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>
4 months 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>
4 months 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>
4 months 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>
4 months 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>
4 months 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>
4 months 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>
4 months 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>
4 months 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
  ...

4 months 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>
4 months 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

4 months 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()`

4 months 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()

4 months 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

4 months 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

4 months 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>
4 months 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>
4 months 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>
4 months 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>
4 months 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>
4 months 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>
4 months 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

4 months 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