]> git.ipfire.org Git - thirdparty/git.git/log
thirdparty/git.git
21 months agoMerge branch 'js/ci-use-macos-13'
Junio C Hamano [Wed, 8 Nov 2023 02:03:59 +0000 (11:03 +0900)] 
Merge branch 'js/ci-use-macos-13'

Replace macos-12 used at GitHub CI with macos-13.

* js/ci-use-macos-13:
  ci: upgrade to using macos-13

21 months agoMerge branch 'jk/chunk-bounds'
Junio C Hamano [Wed, 8 Nov 2023 02:03:58 +0000 (11:03 +0900)] 
Merge branch 'jk/chunk-bounds'

Test portability fix.

* jk/chunk-bounds:
  t: avoid perl's pack/unpack "Q" specifier

21 months agoMerge branch 'jk/tree-name-and-depth-limit'
Junio C Hamano [Wed, 8 Nov 2023 02:03:58 +0000 (11:03 +0900)] 
Merge branch 'jk/tree-name-and-depth-limit'

Further limit tree depth max to avoid Windows build running out of
the stack space.

* jk/tree-name-and-depth-limit:
  max_tree_depth: lower it for MSVC to avoid stack overflows

21 months agoRelNotes: improve wording of credential helper notes
Todd Zullinger [Fri, 3 Nov 2023 14:17:51 +0000 (10:17 -0400)] 
RelNotes: improve wording of credential helper notes

Offer a slightly more verbose description of the issue fixed by
7144dee3ec (credential/libsecret: erase matching creds only, 2023-07-26)
and cb626f8e5c (credential/wincred: erase matching creds only,
2023-07-26).

Signed-off-by: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
21 months agoRelNotes: minor typo fixes in 2.43.0 draft
Todd Zullinger [Fri, 3 Nov 2023 14:17:50 +0000 (10:17 -0400)] 
RelNotes: minor typo fixes in 2.43.0 draft

Signed-off-by: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
21 months agoA bit more before -rc1
Junio C Hamano [Tue, 7 Nov 2023 00:38:26 +0000 (09:38 +0900)] 
A bit more before -rc1

21 months agoMerge branch 'rc/trace-upload-pack'
Junio C Hamano [Tue, 7 Nov 2023 01:26:45 +0000 (10:26 +0900)] 
Merge branch 'rc/trace-upload-pack'

Trace2 update.

* rc/trace-upload-pack:
  upload-pack: add tracing for fetches

21 months agoMerge branch 'es/bugreport-no-extra-arg'
Junio C Hamano [Tue, 7 Nov 2023 01:26:44 +0000 (10:26 +0900)] 
Merge branch 'es/bugreport-no-extra-arg'

"git bugreport" learned to complain when it received a command line
argument that it will not use.

* es/bugreport-no-extra-arg:
  bugreport: reject positional arguments
  t0091-bugreport: stop using i18ngrep

21 months agoMerge branch 'js/my-first-contribution-update'
Junio C Hamano [Tue, 7 Nov 2023 01:26:44 +0000 (10:26 +0900)] 
Merge branch 'js/my-first-contribution-update'

Documentation update.

* js/my-first-contribution-update:
  Include gettext.h in MyFirstContribution tutorial

21 months agoMerge branch 'ms/send-email-validate-fix'
Junio C Hamano [Tue, 7 Nov 2023 01:26:44 +0000 (10:26 +0900)] 
Merge branch 'ms/send-email-validate-fix'

"git send-email" did not have certain pieces of data computed yet
when it tried to validate the outging messages and its recipient
addresses, which has been sorted out.

* ms/send-email-validate-fix:
  send-email: move validation code below process_address_list

21 months agoMerge branch 'rs/reflog-expire-single-worktree-fix'
Junio C Hamano [Tue, 7 Nov 2023 01:26:43 +0000 (10:26 +0900)] 
Merge branch 'rs/reflog-expire-single-worktree-fix'

"git reflog expire --single-worktree" has been broken for the past
20 months or so, which has been corrected.

* rs/reflog-expire-single-worktree-fix:
  reflog: fix expire --single-worktree

21 months agoMerge branch 'rs/fix-arghelp'
Junio C Hamano [Tue, 7 Nov 2023 01:26:43 +0000 (10:26 +0900)] 
Merge branch 'rs/fix-arghelp'

Doc and help update.

* rs/fix-arghelp:
  am, rebase: fix arghelp syntax of --empty

21 months agoMerge branch 'rs/parse-options-cmdmode'
Junio C Hamano [Tue, 7 Nov 2023 01:26:43 +0000 (10:26 +0900)] 
Merge branch 'rs/parse-options-cmdmode'

parse-options improvements for OPT_CMDMODE options.

* rs/parse-options-cmdmode:
  am: simplify --show-current-patch handling
  parse-options: make CMDMODE errors more precise

21 months agoMerge branch 'jc/grep-f-relative-to-cwd'
Junio C Hamano [Tue, 7 Nov 2023 01:26:43 +0000 (10:26 +0900)] 
Merge branch 'jc/grep-f-relative-to-cwd'

"cd sub && git grep -f patterns" tried to read "patterns" file at
the top level of the working tree; it has been corrected to read
"sub/patterns" instead.

* jc/grep-f-relative-to-cwd:
  grep: -f <path> is relative to $cwd

21 months agoMerge branch 'ar/submitting-patches-doc-update'
Junio C Hamano [Tue, 7 Nov 2023 01:26:42 +0000 (10:26 +0900)] 
Merge branch 'ar/submitting-patches-doc-update'

Doc update.

* ar/submitting-patches-doc-update:
  SubmittingPatches: call gitk's command "Copy commit reference"

21 months agot: avoid perl's pack/unpack "Q" specifier
Jeff King [Fri, 3 Nov 2023 16:20:19 +0000 (12:20 -0400)] 
t: avoid perl's pack/unpack "Q" specifier

The perl script introduced by 86b008ee61 (t: add library for munging
chunk-format files, 2023-10-09) uses pack("Q") and unpack("Q") to read
and write 64-bit values ("quadwords" in perl parlance) from the on-disk
chunk files. However, some builds of perl may not support 64-bit
integers at all, and throw an exception here. While some 32-bit
platforms may still support 64-bit integers in perl (such as our linux32
CI environment), others reportedly don't (the NonStop 32-bit builds).

We can work around this by treating the 64-bit values as two 32-bit
values. We can't ever combine them into a single 64-bit value, but in
practice this is OK. These are representing file offsets, and our files
are much smaller than 4GB. So the upper half of the 64-bit value will
always be 0.

We can just introduce a few helper functions which perform the
translation and double-check our assumptions.

Reported-by: Randall S. Becker <randall.becker@nexbridge.ca>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
21 months agoci: upgrade to using macos-13
Johannes Schindelin [Fri, 3 Nov 2023 07:27:35 +0000 (07:27 +0000)] 
ci: upgrade to using macos-13

In April, GitHub announced that the `macos-13` pool is available:
https://github.blog/changelog/2023-04-24-github-actions-macos-13-is-now-available/.
It is only a matter of time until the `macos-12` pool is going away,
therefore we should switch now, without pressure of a looming deadline.

Since the `macos-13` runners no longer include Python2, we also drop
specifically testing with Python2 and switch uniformly to Python3, see
https://github.com/actions/runner-images/blob/HEAD/images/macos/macos-13-Readme.md
for details about the software available on the `macos-13` pool's
runners.

Also, on macOS 13, Homebrew seems to install a `gcc@9` package that no
longer comes with a regular `unistd.h` (there seems only to be a
`ssp/unistd.h`), and hence builds would fail with:

    In file included from base85.c:1:
    git-compat-util.h:223:10: fatal error: unistd.h: No such file or directory
      223 | #include <unistd.h>
          |          ^~~~~~~~~~
    compilation terminated.

The reason why we install GCC v9.x explicitly is historical, and back in
the days it was because it was the _newest_ version available via
Homebrew: 176441bfb58 (ci: build Git with GCC 9 in the 'osx-gcc' build
job, 2019-11-27).

To reinstate the spirit of that commit _and_ to fix that build failure,
let's switch to the now-newest GCC version: v13.x.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
21 months agoGit 2.43-rc0 v2.43.0-rc0
Junio C Hamano [Thu, 2 Nov 2023 08:09:48 +0000 (17:09 +0900)] 
Git 2.43-rc0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
21 months agoGit 2.42.1 v2.42.1
Junio C Hamano [Thu, 2 Nov 2023 07:38:18 +0000 (16:38 +0900)] 
Git 2.42.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
21 months agoMerge branch 'ms/doc-push-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:28 +0000 (16:53 +0900)] 
Merge branch 'ms/doc-push-fix' into maint-2.42

Docfix.

* ms/doc-push-fix:
  git-push doc: more visibility for -q option

21 months agoMerge branch 'jc/commit-new-underscore-index-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:28 +0000 (16:53 +0900)] 
Merge branch 'jc/commit-new-underscore-index-fix' into maint-2.42

Message fix.

* jc/commit-new-underscore-index-fix:
  commit: do not use cryptic "new_index" in end-user facing messages

21 months agoMerge branch 'wx/merge-ort-comment-typofix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:27 +0000 (16:53 +0900)] 
Merge branch 'wx/merge-ort-comment-typofix' into maint-2.42

Typofix.

* wx/merge-ort-comment-typofix:
  merge-ort.c: fix typo 'neeed' to 'needed'

21 months agoMerge branch 'ps/git-repack-doc-fixes' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:27 +0000 (16:53 +0900)] 
Merge branch 'ps/git-repack-doc-fixes' into maint-2.42

Doc updates.

* ps/git-repack-doc-fixes:
  doc/git-repack: don't mention nonexistent "--unpacked" option
  doc/git-repack: fix syntax for `-g` shorthand option

21 months agoMerge branch 'ni/die-message-fix-for-git-add' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:27 +0000 (16:53 +0900)] 
Merge branch 'ni/die-message-fix-for-git-add' into maint-2.42

Message updates.

* ni/die-message-fix-for-git-add:
  builtin/add.c: clean up die() messages

21 months agoMerge branch 'jc/am-doc-whitespace-action-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:27 +0000 (16:53 +0900)] 
Merge branch 'jc/am-doc-whitespace-action-fix' into maint-2.42

Docfix.

* jc/am-doc-whitespace-action-fix:
  am: align placeholder for --whitespace option with apply

21 months agoMerge branch 'jc/update-list-references-to-lore' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:26 +0000 (16:53 +0900)] 
Merge branch 'jc/update-list-references-to-lore' into maint-2.42

Doc update.

* jc/update-list-references-to-lore:
  doc: update list archive reference to use lore.kernel.org

21 months agoMerge branch 'ps/rewritten-is-per-worktree-doc' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:26 +0000 (16:53 +0900)] 
Merge branch 'ps/rewritten-is-per-worktree-doc' into maint-2.42

Doc update.

* ps/rewritten-is-per-worktree-doc:
  doc/git-worktree: mention "refs/rewritten" as per-worktree refs

21 months agoMerge branch 'sn/cat-file-doc-update' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:26 +0000 (16:53 +0900)] 
Merge branch 'sn/cat-file-doc-update' into maint-2.42

"git cat-file" documentation updates.

* sn/cat-file-doc-update:
  doc/cat-file: make synopsis and description less confusing

21 months agoMerge branch 'jk/decoration-and-other-leak-fixes' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:26 +0000 (16:53 +0900)] 
Merge branch 'jk/decoration-and-other-leak-fixes' into maint-2.42

Leakfix.

* jk/decoration-and-other-leak-fixes:
  daemon: free listen_addr before returning
  revision: clear decoration structs during release_revisions()
  decorate: add clear_decoration() function

21 months agoMerge branch 'rs/parse-opt-ctx-cleanup' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:26 +0000 (16:53 +0900)] 
Merge branch 'rs/parse-opt-ctx-cleanup' into maint-2.42

Code clean-up.

* rs/parse-opt-ctx-cleanup:
  parse-options: drop unused parse_opt_ctx_t member

21 months agoMerge branch 'ob/am-msgfix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:25 +0000 (16:53 +0900)] 
Merge branch 'ob/am-msgfix' into maint-2.42

The parameters to generate an error message have been corrected.

* ob/am-msgfix:
  am: fix error message in parse_opt_show_current_patch()

21 months agoMerge branch 'hy/doc-show-is-like-log-not-diff-tree' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:25 +0000 (16:53 +0900)] 
Merge branch 'hy/doc-show-is-like-log-not-diff-tree' into maint-2.42

Doc update.

* hy/doc-show-is-like-log-not-diff-tree:
  show doc: redirect user to git log manual instead of git diff-tree

21 months agoMerge branch 'ch/clean-docfix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:25 +0000 (16:53 +0900)] 
Merge branch 'ch/clean-docfix' into maint-2.42

Typofix.

* ch/clean-docfix:
  git-clean doc: fix "without do cleaning" typo

21 months agoMerge branch 'eg/config-type-path-docfix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:24 +0000 (16:53 +0900)] 
Merge branch 'eg/config-type-path-docfix' into maint-2.42

Typofix.

* eg/config-type-path-docfix:
  git-config: fix misworded --type=path explanation

21 months agoMerge branch 'ob/t3404-typofix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:24 +0000 (16:53 +0900)] 
Merge branch 'ob/t3404-typofix' into maint-2.42

Code clean-up.

* ob/t3404-typofix:
  t3404-rebase-interactive.sh: fix typos in title of a rewording test

21 months agoMerge branch 'ob/sequencer-remove-dead-code' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:24 +0000 (16:53 +0900)] 
Merge branch 'ob/sequencer-remove-dead-code' into maint-2.42

Code clean-up.

* ob/sequencer-remove-dead-code:
  sequencer: remove unreachable exit condition in pick_commits()

21 months agoMerge branch 'rs/name-rev-use-opt-hidden-bool' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:24 +0000 (16:53 +0900)] 
Merge branch 'rs/name-rev-use-opt-hidden-bool' into maint-2.42

Simplify use of parse-options API a bit.

* rs/name-rev-use-opt-hidden-bool:
  name-rev: use OPT_HIDDEN_BOOL for --peel-tag

21 months agoMerge branch 'rs/grep-parseopt-simplify' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:23 +0000 (16:53 +0900)] 
Merge branch 'rs/grep-parseopt-simplify' into maint-2.42

Simplify use of parse-options API a bit.

* rs/grep-parseopt-simplify:
  grep: use OPT_INTEGER_F for --max-depth

21 months agoMerge branch 'ob/sequencer-reword-error-message' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:23 +0000 (16:53 +0900)] 
Merge branch 'ob/sequencer-reword-error-message' into maint-2.42

Update an error message (which would probably never been seen).

* ob/sequencer-reword-error-message:
  sequencer: fix error message on failure to copy SQUASH_MSG

21 months agoMerge branch 'bc/more-git-var' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:23 +0000 (16:53 +0900)] 
Merge branch 'bc/more-git-var' into maint-2.42

Fix-up for a topic that already has graduated.

* bc/more-git-var:
  var: avoid a segmentation fault when `HOME` is unset

21 months agoMerge branch 'jk/ci-retire-allow-ref' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:22 +0000 (16:53 +0900)] 
Merge branch 'jk/ci-retire-allow-ref' into maint-2.42

CI update.

* jk/ci-retire-allow-ref:
  ci: deprecate ci/config/allow-ref script
  ci: allow branch selection through "vars"

21 months agoMerge branch 'ws/git-svn-retire-faketerm' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:22 +0000 (16:53 +0900)] 
Merge branch 'ws/git-svn-retire-faketerm' into maint-2.42

Code clean-up.

* ws/git-svn-retire-faketerm:
  git-svn: drop FakeTerm hack

21 months agoMerge branch 'ch/t6300-verify-commit-test-cleanup' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:22 +0000 (16:53 +0900)] 
Merge branch 'ch/t6300-verify-commit-test-cleanup' into maint-2.42

Test clean-up.

* ch/t6300-verify-commit-test-cleanup:
  t/t6300: drop magic filtering
  t/lib-gpg: forcibly run a trustdb update

21 months agoMerge branch 'jc/mv-d-to-d-error-message-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:22 +0000 (16:53 +0900)] 
Merge branch 'jc/mv-d-to-d-error-message-fix' into maint-2.42

Typofix in an error message.

* jc/mv-d-to-d-error-message-fix:
  mv: fix error for moving directory to another

21 months agoMerge branch 'ja/worktree-orphan' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:21 +0000 (16:53 +0900)] 
Merge branch 'ja/worktree-orphan' into maint-2.42

Typofix in an error message.

* ja/worktree-orphan:
  builtin/worktree.c: fix typo in "forgot fetch" msg

21 months agoMerge branch 'ob/t9001-indent-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:21 +0000 (16:53 +0900)] 
Merge branch 'ob/t9001-indent-fix' into maint-2.42

Test style fix.

* ob/t9001-indent-fix:
  t9001: fix indentation in test_no_confirm()

21 months agoMerge branch 'jk/function-pointer-mismatches-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:20 +0000 (16:53 +0900)] 
Merge branch 'jk/function-pointer-mismatches-fix' into maint-2.42

Code clean-up to please clang-18.

* jk/function-pointer-mismatches-fix:
  hashmap: use expected signatures for comparison functions

21 months agoMerge branch 'ds/upload-pack-error-sequence-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:20 +0000 (16:53 +0900)] 
Merge branch 'ds/upload-pack-error-sequence-fix' into maint-2.42

Error message generation fix.

* ds/upload-pack-error-sequence-fix:
  upload-pack: fix exit code when denying fetch of unreachable object ID
  upload-pack: fix race condition in error messages

21 months agoMerge branch 'ws/git-push-doc-grammofix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:20 +0000 (16:53 +0900)] 
Merge branch 'ws/git-push-doc-grammofix' into maint-2.42

Doc update.

* ws/git-push-doc-grammofix:
  git-push.txt: fix grammar

21 months agoMerge branch 'jk/test-pass-ubsan-options-to-http-test' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:20 +0000 (16:53 +0900)] 
Merge branch 'jk/test-pass-ubsan-options-to-http-test' into maint-2.42

UBSAN options were not propagated through the test framework to git
run via the httpd, unlike ASAN options, which has been corrected.

* jk/test-pass-ubsan-options-to-http-test:
  test-lib: set UBSAN_OPTIONS to match ASan

21 months agoMerge branch 'tb/send-email-extract-valid-address-error-message-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:19 +0000 (16:53 +0900)] 
Merge branch 'tb/send-email-extract-valid-address-error-message-fix' into maint-2.42

An error message given by "git send-email" when given a malformed
address did not give correct information, which has been corrected.

* tb/send-email-extract-valid-address-error-message-fix:
  git-send-email.perl: avoid printing undef when validating addresses

21 months agoMerge branch 'jk/redact-h2h3-headers-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:19 +0000 (16:53 +0900)] 
Merge branch 'jk/redact-h2h3-headers-fix' into maint-2.42

HTTP Header redaction code has been adjusted for a newer version of
cURL library that shows its traces differently from earlier
versions.

* jk/redact-h2h3-headers-fix:
  http: update curl http/2 info matching for curl 8.3.0
  http: factor out matching of curl http/2 trace lines

21 months agoMerge branch 'pb/completion-aliases-doc' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:19 +0000 (16:53 +0900)] 
Merge branch 'pb/completion-aliases-doc' into maint-2.42

Clarify how "alias.foo = : git cmd ; aliased-command-string" should
be spelled with necessary whitespaces around punctuation marks to
work.

* pb/completion-aliases-doc:
  completion: improve doc for complex aliases

21 months agoMerge branch 'js/diff-cached-fsmonitor-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:19 +0000 (16:53 +0900)] 
Merge branch 'js/diff-cached-fsmonitor-fix' into maint-2.42

"git diff --cached" codepath did not fill the necessary stat
information for a file when fsmonitor knows it is clean and ended
up behaving as if it is not clean, which has been corrected.

* js/diff-cached-fsmonitor-fix:
  diff-lib: fix check_removed when fsmonitor is on

21 months agoMerge branch 'js/systemd-timers-wsl-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:18 +0000 (16:53 +0900)] 
Merge branch 'js/systemd-timers-wsl-fix' into maint-2.42

Update "git maintainance" timers' implementation based on systemd
timers to work with WSL.

* js/systemd-timers-wsl-fix:
  maintenance(systemd): support the Windows Subsystem for Linux

21 months agoMerge branch 'pw/diff-no-index-from-named-pipes' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:18 +0000 (16:53 +0900)] 
Merge branch 'pw/diff-no-index-from-named-pipes' into maint-2.42

"git diff --no-index -R <(one) <(two)" did not work correctly,
which has been corrected.

* pw/diff-no-index-from-named-pipes:
  diff --no-index: fix -R with stdin

21 months agoMerge branch 'js/complete-checkout-t' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:18 +0000 (16:53 +0900)] 
Merge branch 'js/complete-checkout-t' into maint-2.42

The completion script (in contrib/) has been taught to treat the
"-t" option to "git checkout" and "git switch" just like the
"--track" option, to complete remote-tracking branches.

* js/complete-checkout-t:
  completion(switch/checkout): treat --track and -t the same

21 months agoMerge branch 'rs/grep-no-no-or' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:17 +0000 (16:53 +0900)] 
Merge branch 'rs/grep-no-no-or' into maint-2.42

"git grep -e A --no-or -e B" is accepted, even though the negation
of "or" did not mean anything, which has been tightened.

* rs/grep-no-no-or:
  grep: reject --no-or

21 months agoMerge branch 'so/diff-doc-for-patch-update' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:17 +0000 (16:53 +0900)] 
Merge branch 'so/diff-doc-for-patch-update' into maint-2.42

References from description of the `--patch` option in various
manual pages have been simplified and improved.

* so/diff-doc-for-patch-update:
  doc/diff-options: fix link to generating patch section

21 months agoMerge branch 'pw/rebase-i-after-failure' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:17 +0000 (16:53 +0900)] 
Merge branch 'pw/rebase-i-after-failure' into maint-2.42

Various fixes to the behaviour of "rebase -i" when the command got
interrupted by conflicting changes.
cf. <6b927687-cf6e-d73e-78fb-bd4f46736928@gmx.de>

* pw/rebase-i-after-failure:
  rebase -i: fix adding failed command to the todo list
  rebase --continue: refuse to commit after failed command
  rebase: fix rewritten list for failed pick
  sequencer: factor out part of pick_commits()
  sequencer: use rebase_path_message()
  rebase -i: remove patch file after conflict resolution
  rebase -i: move unlink() calls

21 months agoMerge branch 'ks/ref-filter-sort-numerically' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:16 +0000 (16:53 +0900)] 
Merge branch 'ks/ref-filter-sort-numerically' into maint-2.42

"git for-each-ref --sort='contents:size'" sorts the refs according
to size numerically, giving a ref that points at a blob twelve-byte
(12) long before showing a blob hundred-byte (100) long.

* ks/ref-filter-sort-numerically:
  ref-filter: sort numerically when ":size" is used

21 months agoMerge branch 'jk/diff-result-code-cleanup' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:16 +0000 (16:53 +0900)] 
Merge branch 'jk/diff-result-code-cleanup' into maint-2.42

"git diff --no-such-option" and other corner cases around the exit
status of the "diff" command has been corrected.

* jk/diff-result-code-cleanup:
  diff: drop useless "status" parameter from diff_result_code()
  diff: drop useless return values in git-diff helpers
  diff: drop useless return from run_diff_{files,index} functions
  diff: die when failing to read index in git-diff builtin
  diff: show usage for unknown builtin_diff_files() options
  diff-files: avoid negative exit value
  diff: spell DIFF_INDEX_CACHED out when calling run_diff_index()

21 months agoMerge branch 'ob/sequencer-empty-hint-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:16 +0000 (16:53 +0900)] 
Merge branch 'ob/sequencer-empty-hint-fix' into maint-2.42

The use of API between two calls to require_clean_work_tree() from
the sequencer code has been cleaned up for consistency.

* ob/sequencer-empty-hint-fix:
  sequencer: rectify empty hint in call of require_clean_work_tree()

21 months agoMerge branch 'ts/unpacklimit-config-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:16 +0000 (16:53 +0900)] 
Merge branch 'ts/unpacklimit-config-fix' into maint-2.42

transfer.unpackLimit ought to be used as a fallback, but overrode
fetch.unpackLimit and receive.unpackLimit instead.

* ts/unpacklimit-config-fix:
  transfer.unpackLimit: fetch/receive.unpackLimit takes precedence

21 months agoMerge branch 'jc/diff-exit-code-with-w-fixes' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:15 +0000 (16:53 +0900)] 
Merge branch 'jc/diff-exit-code-with-w-fixes' into maint-2.42

"git diff -w --exit-code" with various options did not work
correctly, which is being addressed.

* jc/diff-exit-code-with-w-fixes:
  diff: the -w option breaks --exit-code for --raw and other output modes
  t4040: remove test that succeeded for a wrong reason
  diff: teach "--stat -w --exit-code" to notice differences
  diff: mode-only change should be noticed by "--patch -w --exit-code"
  diff: move the fallback "--exit-code" code down

21 months agoMerge branch 'tb/commit-graph-verify-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:15 +0000 (16:53 +0900)] 
Merge branch 'tb/commit-graph-verify-fix' into maint-2.42

The commit-graph verification code that detects mixture of zero and
non-zero generation numbers has been updated.

* tb/commit-graph-verify-fix:
  commit-graph: avoid repeated mixed generation number warnings
  t/t5318-commit-graph.sh: test generation zero transitions during fsck
  commit-graph: verify swapped zero/non-zero generation cases
  commit-graph: introduce `commit_graph_generation_from_graph()`

21 months agoMerge branch 'jc/ci-skip-same-commit' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:15 +0000 (16:53 +0900)] 
Merge branch 'jc/ci-skip-same-commit' into maint-2.42

Tweak GitHub Actions CI so that pushing the same commit to multiple
branch tips at the same time will not waste building and testing
the same thing twice.

* jc/ci-skip-same-commit:
  ci: avoid building from the same commit in parallel

21 months agoMerge branch 'ds/scalar-updates' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:14 +0000 (16:53 +0900)] 
Merge branch 'ds/scalar-updates' into maint-2.42

Scalar updates.

* ds/scalar-updates:
  scalar reconfigure: help users remove buggy repos
  setup: add discover_git_directory_reason()
  scalar: add --[no-]src option

21 months agoMerge branch 'mp/rebase-label-length-limit' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:14 +0000 (16:53 +0900)] 
Merge branch 'mp/rebase-label-length-limit' into maint-2.42

Overly long label names used in the sequencer machinery are now
chopped to fit under filesystem limitation.

* mp/rebase-label-length-limit:
  rebase: allow overriding the maximal length of the generated labels
  sequencer: truncate labels to accommodate loose refs

21 months agoMerge branch 'js/ci-coverity' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:14 +0000 (16:53 +0900)] 
Merge branch 'js/ci-coverity' into maint-2.42

GitHub CI workflow has learned to trigger Coverity check.

* js/ci-coverity:
  coverity: detect and report when the token or project is incorrect
  coverity: allow running on macOS
  coverity: support building on Windows
  coverity: allow overriding the Coverity project
  coverity: cache the Coverity Build Tool
  ci: add a GitHub workflow to submit Coverity scans

21 months agoMerge branch 'jk/test-lsan-denoise-output' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:14 +0000 (16:53 +0900)] 
Merge branch 'jk/test-lsan-denoise-output' into maint-2.42

Tests with LSan from time to time seem to emit harmless message
that makes our tests unnecessarily flakey; we work it around by
filtering the uninteresting output.

* jk/test-lsan-denoise-output:
  test-lib: ignore uninteresting LSan output

21 months agoMerge branch 'js/ci-san-skip-p4-and-svn-tests' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:13 +0000 (16:53 +0900)] 
Merge branch 'js/ci-san-skip-p4-and-svn-tests' into maint-2.42

Flakey "git p4" tests, as well as "git svn" tests, are now skipped
in the (rather expensive) sanitizer CI job.

* js/ci-san-skip-p4-and-svn-tests:
  ci(linux-asan-ubsan): let's save some time

21 months agoMerge branch 'tb/mark-more-tests-as-leak-free' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:13 +0000 (16:53 +0900)] 
Merge branch 'tb/mark-more-tests-as-leak-free' into maint-2.42

Tests that are known to pass with LSan are now marked as such.

* tb/mark-more-tests-as-leak-free:
  leak tests: mark t5583-push-branches.sh as leak-free
  leak tests: mark t3321-notes-stripspace.sh as leak-free
  leak tests: mark a handful of tests as leak-free

21 months agomax_tree_depth: lower it for MSVC to avoid stack overflows
Johannes Schindelin [Wed, 1 Nov 2023 13:03:30 +0000 (13:03 +0000)] 
max_tree_depth: lower it for MSVC to avoid stack overflows

There seems to be some internal stack overflow detection in MSVC's
`malloc()` machinery that seems to be independent of the `stack reserve`
and `heap reserve` sizes specified in the executable (editable via
`EDITBIN /STACK:<n> <exe>` and `EDITBIN /HEAP:<n> <exe>`).

In the newly test cases added by `jk/tree-name-and-depth-limit`, this
stack overflow detection is unfortunately triggered before Git can print
out the error message about too-deep trees and exit gracefully. Instead,
it exits with `STATUS_STACK_OVERFLOW`. This corresponds to the numeric
value -1073741571, something the MSYS2 runtime we sadly need to use to
run Git's test suite cannot handle and which it internally maps to the
exit code 127. Git's test suite, in turn, mistakes this to mean that the
command was not found, and fails both test cases.

Here is an example stack trace from an example run:

    [0x0]   ntdll!RtlpAllocateHeap+0x31   0x4212603f50   0x7ff9d6d4cd49
    [0x1]   ntdll!RtlpAllocateHeapInternal+0x6c9   0x42126041b0   0x7ff9d6e14512
    [0x2]   ntdll!RtlDebugAllocateHeap+0x102   0x42126042b0   0x7ff9d6dcd8b0
    [0x3]   ntdll!RtlpAllocateHeap+0x7ec70   0x4212604350   0x7ff9d6d4cd49
    [0x4]   ntdll!RtlpAllocateHeapInternal+0x6c9   0x42126045b0   0x7ff9596ed480
    [0x5]   ucrtbased!heap_alloc_dbg_internal+0x210   0x42126046b0   0x7ff9596ed20d
    [0x6]   ucrtbased!heap_alloc_dbg+0x4d   0x4212604750   0x7ff9596f037f
    [0x7]   ucrtbased!_malloc_dbg+0x2f   0x42126047a0   0x7ff9596f0dee
    [0x8]   ucrtbased!malloc+0x1e   0x42126047d0   0x7ff730fcc1ef
    [0x9]   git!do_xmalloc+0x2f   0x4212604800   0x7ff730fcc2b9
    [0xa]   git!do_xmallocz+0x59   0x4212604840   0x7ff730fca779
    [0xb]   git!xmallocz_gently+0x19   0x4212604880   0x7ff7311b0883
    [0xc]   git!unpack_compressed_entry+0x43   0x42126048b0   0x7ff7311ac9a4
    [0xd]   git!unpack_entry+0x554   0x42126049a0   0x7ff7311b0628
    [0xe]   git!cache_or_unpack_entry+0x58   0x4212605250   0x7ff7311ad3a8
    [0xf]   git!packed_object_info+0x98   0x42126052a0   0x7ff7310a92da
    [0x10]   git!do_oid_object_info_extended+0x3fa   0x42126053b0   0x7ff7310a44e7
    [0x11]   git!oid_object_info_extended+0x37   0x4212605460   0x7ff7310a38ba
    [0x12]   git!repo_read_object_file+0x9a   0x42126054a0   0x7ff7310a6147
    [0x13]   git!read_object_with_reference+0x97   0x4212605560   0x7ff7310b4656
    [0x14]   git!fill_tree_descriptor+0x66   0x4212605620   0x7ff7310dc0a5
    [0x15]   git!traverse_trees_recursive+0x3f5   0x4212605680   0x7ff7310dd831
    [0x16]   git!unpack_callback+0x441   0x4212605790   0x7ff7310b4c95
    [0x17]   git!traverse_trees+0x5d5   0x42126058a0   0x7ff7310dc0f2
    [0x18]   git!traverse_trees_recursive+0x442   0x4212605980   0x7ff7310dd831
    [0x19]   git!unpack_callback+0x441   0x4212605a90   0x7ff7310b4c95
    [0x1a]   git!traverse_trees+0x5d5   0x4212605ba0   0x7ff7310dc0f2
    [0x1b]   git!traverse_trees_recursive+0x442   0x4212605c80   0x7ff7310dd831
    [0x1c]   git!unpack_callback+0x441   0x4212605d90   0x7ff7310b4c95
    [0x1d]   git!traverse_trees+0x5d5   0x4212605ea0   0x7ff7310dc0f2
    [0x1e]   git!traverse_trees_recursive+0x442   0x4212605f80   0x7ff7310dd831
    [0x1f]   git!unpack_callback+0x441   0x4212606090   0x7ff7310b4c95
    [0x20]   git!traverse_trees+0x5d5   0x42126061a0   0x7ff7310dc0f2
    [0x21]   git!traverse_trees_recursive+0x442   0x4212606280   0x7ff7310dd831
    [...]
    [0xfad]   git!cmd_main+0x2a2   0x42126ff740   0x7ff730fb6345
    [0xfae]   git!main+0xe5   0x42126ff7c0   0x7ff730fbff93
    [0xfaf]   git!wmain+0x2a3   0x42126ff830   0x7ff731318859
    [0xfb0]   git!invoke_main+0x39   0x42126ff8a0   0x7ff7313186fe
    [0xfb1]   git!__scrt_common_main_seh+0x12e   0x42126ff8f0   0x7ff7313185be
    [0xfb2]   git!__scrt_common_main+0xe   0x42126ff960   0x7ff7313188ee
    [0xfb3]   git!wmainCRTStartup+0xe   0x42126ff990   0x7ff9d5ed257d
    [0xfb4]   KERNEL32!BaseThreadInitThunk+0x1d   0x42126ff9c0   0x7ff9d6d6aa78
    [0xfb5]   ntdll!RtlUserThreadStart+0x28   0x42126ff9f0   0x0

I verified manually that `traverse_trees_cur_depth` was 562 when that
happened, which is far below the 2048 that were already accepted into
Git as a hard limit.

Despite many attempts to figure out which of the internals trigger this
`STATUS_STACK_OVERFLOW` and how to maybe increase certain sizes to avoid
running into this issue and let Git behave the same way as under Linux,
I failed to find any build-time/runtime knob we could turn to that
effect.

Note: even switching to using a different allocator (I used mimalloc
because that's what Git for Windows uses for its GCC builds) does not
help, as the zlib code used to unpack compressed pack entries _still_
uses the regular `malloc()`. And runs into the same issue.

Note also: switching to using a different allocator _also_ for zlib code
seems _also_ not to help. I tried that, and it still exited with
`STATUS_STACK_OVERFLOW` that seems to have been triggered by a
`mi_assert_internal()`, i.e. an internal assertion of mimalloc...

So the best bet to work around this for now seems to just lower the
maximum allowed tree depth _even further_ for MSVC builds.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
21 months agoMerge branch 'jm/bisect-run-synopsis-fix'
Junio C Hamano [Tue, 31 Oct 2023 03:57:44 +0000 (12:57 +0900)] 
Merge branch 'jm/bisect-run-synopsis-fix'

Doc and usage message update.

* jm/bisect-run-synopsis-fix:
  doc/git-bisect: clarify `git bisect run` syntax

21 months agoMerge branch 'ii/branch-error-messages-update'
Junio C Hamano [Tue, 31 Oct 2023 03:57:44 +0000 (12:57 +0900)] 
Merge branch 'ii/branch-error-messages-update'

Error message update.

* ii/branch-error-messages-update:
  builtin/branch.c: adjust error messages to coding guidelines

21 months agoupload-pack: add tracing for fetches
Robert Coup [Tue, 17 Oct 2023 21:12:47 +0000 (21:12 +0000)] 
upload-pack: add tracing for fetches

Information on how users are accessing hosted repositories can be
helpful to server operators. For example, being able to broadly
differentiate between fetches and initial clones; the use of shallow
repository features; or partial clone filters.

a29263c (fetch-pack: add tracing for negotiation rounds, 2022-08-02)
added some information on have counts to fetch-pack itself to help
diagnose negotiation; but from a git-upload-pack (server) perspective,
there's no means of accessing such information without using
GIT_TRACE_PACKET to examine the protocol packets.

Improve this by emitting a Trace2 JSON event from upload-pack with
summary information on the contents of a fetch request.

* haves, wants, and want-ref counts can help determine (broadly) between
  fetches and clones, and the use of single-branch, etc.
* shallow clone depth, tip counts, and deepening options.
* any partial clone filter type.

Signed-off-by: Robert Coup <robert@coup.net.nz>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
21 months agoThe twenty-second batch
Junio C Hamano [Sun, 29 Oct 2023 04:45:50 +0000 (13:45 +0900)] 
The twenty-second batch

Signed-off-by: Junio C Hamano <gitster@pobox.com>
21 months agoMerge branch 'ms/doc-push-fix'
Junio C Hamano [Sun, 29 Oct 2023 22:09:59 +0000 (07:09 +0900)] 
Merge branch 'ms/doc-push-fix'

Docfix.

* ms/doc-push-fix:
  git-push doc: more visibility for -q option

21 months agoMerge branch 'jk/send-email-fix-addresses-from-composed-messages'
Junio C Hamano [Sun, 29 Oct 2023 22:09:58 +0000 (07:09 +0900)] 
Merge branch 'jk/send-email-fix-addresses-from-composed-messages'

The codepath to handle recipient addresses `git send-email
--compose` learns from the user was completely broken, which has
been corrected.

* jk/send-email-fix-addresses-from-composed-messages:
  send-email: handle to/cc/bcc from --compose message
  Revert "send-email: extract email-parsing code into a subroutine"
  doc/send-email: mention handling of "reply-to" with --compose

21 months agoMerge branch 'ob/rebase-cleanup'
Junio C Hamano [Sun, 29 Oct 2023 22:09:58 +0000 (07:09 +0900)] 
Merge branch 'ob/rebase-cleanup'

Code clean-up.

* ob/rebase-cleanup:
  rebase: move parse_opt_keep_empty() down
  rebase: handle --strategy via imply_merge() as well
  rebase: simplify code related to imply_merge()

21 months agoMerge branch 'jc/commit-new-underscore-index-fix'
Junio C Hamano [Sun, 29 Oct 2023 22:09:58 +0000 (07:09 +0900)] 
Merge branch 'jc/commit-new-underscore-index-fix'

Message fix.

* jc/commit-new-underscore-index-fix:
  commit: do not use cryptic "new_index" in end-user facing messages

21 months agoMerge branch 'wx/merge-ort-comment-typofix'
Junio C Hamano [Sun, 29 Oct 2023 22:09:58 +0000 (07:09 +0900)] 
Merge branch 'wx/merge-ort-comment-typofix'

Typofix.

* wx/merge-ort-comment-typofix:
  merge-ort.c: fix typo 'neeed' to 'needed'

21 months agoMerge branch 'ps/git-repack-doc-fixes'
Junio C Hamano [Sun, 29 Oct 2023 22:09:57 +0000 (07:09 +0900)] 
Merge branch 'ps/git-repack-doc-fixes'

Doc updates.

* ps/git-repack-doc-fixes:
  doc/git-repack: don't mention nonexistent "--unpacked" option
  doc/git-repack: fix syntax for `-g` shorthand option

21 months agoMerge branch 'kh/pathspec-error-wo-repository-fix'
Junio C Hamano [Sun, 29 Oct 2023 22:09:57 +0000 (07:09 +0900)] 
Merge branch 'kh/pathspec-error-wo-repository-fix'

The pathspec code carelessly dereferenced NULL while emitting an
error message, which has been corrected.

* kh/pathspec-error-wo-repository-fix:
  grep: die gracefully when outside repository

21 months agoMerge branch 'ni/die-message-fix-for-git-add'
Junio C Hamano [Sun, 29 Oct 2023 22:09:57 +0000 (07:09 +0900)] 
Merge branch 'ni/die-message-fix-for-git-add'

Message updates.

* ni/die-message-fix-for-git-add:
  builtin/add.c: clean up die() messages

21 months agoMerge branch 'jc/am-doc-whitespace-action-fix'
Junio C Hamano [Sun, 29 Oct 2023 22:09:56 +0000 (07:09 +0900)] 
Merge branch 'jc/am-doc-whitespace-action-fix'

Docfix.

* jc/am-doc-whitespace-action-fix:
  am: align placeholder for --whitespace option with apply

21 months agoMerge branch 'mm/p4-symlink-with-lfs'
Junio C Hamano [Sun, 29 Oct 2023 22:09:56 +0000 (07:09 +0900)] 
Merge branch 'mm/p4-symlink-with-lfs'

"git p4" tried to store symlinks to LFS when told, but has been
fixed not to do so, because it does not make sense.

* mm/p4-symlink-with-lfs:
  git-p4 shouldn't attempt to store symlinks in LFS

21 months agoMerge branch 'da/t7601-style-fix'
Junio C Hamano [Sun, 29 Oct 2023 22:09:56 +0000 (07:09 +0900)] 
Merge branch 'da/t7601-style-fix'

Coding style update.

* da/t7601-style-fix:
  t7601: use "test_path_is_file" etc. instead of "test -f"

21 months agoMerge branch 'jc/update-list-references-to-lore'
Junio C Hamano [Sun, 29 Oct 2023 22:09:56 +0000 (07:09 +0900)] 
Merge branch 'jc/update-list-references-to-lore'

Doc update.

* jc/update-list-references-to-lore:
  doc: update list archive reference to use lore.kernel.org

21 months agoMerge branch 'jc/attr-tree-config'
Junio C Hamano [Sun, 29 Oct 2023 22:09:55 +0000 (07:09 +0900)] 
Merge branch 'jc/attr-tree-config'

The attribute subsystem learned to honor `attr.tree` configuration
that specifies which tree to read the .gitattributes files from.

* jc/attr-tree-config:
  attr: add attr.tree for setting the treeish to read attributes from
  attr: read attributes from HEAD when bare repo

21 months agoMerge branch 'sn/typo-grammo-phraso-fixes'
Junio C Hamano [Sun, 29 Oct 2023 22:09:55 +0000 (07:09 +0900)] 
Merge branch 'sn/typo-grammo-phraso-fixes'

Many typos, ungrammatical sentences and wrong phrasing have been
fixed.

* sn/typo-grammo-phraso-fixes:
  t/README: fix multi-prerequisite example
  doc/gitk: s/sticked/stuck/
  git-jump: admit to passing merge mode args to ls-files
  doc/diff-options: improve wording of the log.diffMerges mention
  doc: fix some typos, grammar and wording issues

21 months agoreflog: fix expire --single-worktree
René Scharfe [Sat, 28 Oct 2023 11:58:41 +0000 (13:58 +0200)] 
reflog: fix expire --single-worktree

33d7bdd645 (builtin/reflog.c: use parse-options api for expire, delete
subcommands, 2022-01-06) broke the option --single-worktree of git
reflog expire and added a non-printable short flag for it, presumably by
accident.  While before it set the variable "all_worktrees" to 0, now it
sets it to 1, its default value.  --no-single-worktree is required now
to set it to 0.

Fix it by replacing the variable with one that has the opposite meaning,
to avoid the negation and its potential for confusion.  The new variable
"single_worktree" directly captures whether --single-worktree was given.

Also remove the unprintable short flag SOH (start of heading) because it
is undocumented, hard to use and is likely to have been added by mistake
in connection with the negation bug above.

Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
21 months agoam, rebase: fix arghelp syntax of --empty
René Scharfe [Sat, 28 Oct 2023 11:58:07 +0000 (13:58 +0200)] 
am, rebase: fix arghelp syntax of --empty

Use parentheses and pipes to present alternatives in the argument help
for the --empty options of git am and git rebase, like in the rest of
the documentation.

While at it remove a stray use of the enum empty_action value
STOP_ON_EMPTY_COMMIT to indicate that no short option is present.
While it has a value of 0 and thus there is no user-visible change,
that enum is not meant to hold short option characters.  Hard-code 0,
like we do for other options without a short option.

Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
21 months agoam: simplify --show-current-patch handling
René Scharfe [Sat, 28 Oct 2023 11:57:44 +0000 (13:57 +0200)] 
am: simplify --show-current-patch handling

Let the parse-options code detect and handle the use of options that are
incompatible with --show-current-patch.  This requires exposing the
distinction between the "raw" and "diff" sub-modes.  Do that by
splitting the mode RESUME_SHOW_PATCH into RESUME_SHOW_PATCH_RAW and
RESUME_SHOW_PATCH_DIFF and stop tracking sub-modes in a separate struct.

The result is a simpler callback function and more precise error
messages.  The original reports a spurious argument or a NULL pointer:

   $ git am --show-current-patch --show-current-patch=diff
   error: options '--show-current-patch=diff' and '--show-current-patch=raw' cannot be used together
   $ git am --show-current-patch=diff --show-current-patch
   error: options '--show-current-patch=(null)' and '--show-current-patch=diff' cannot be used together

With this patch we get the more precise:

   $ git am --show-current-patch --show-current-patch=diff
   error: --show-current-patch=diff is incompatible with --show-current-patch
   $ git am --show-current-patch=diff --show-current-patch
   error: --show-current-patch is incompatible with --show-current-patch=diff

Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
21 months agoparse-options: make CMDMODE errors more precise
René Scharfe [Sat, 28 Oct 2023 11:53:01 +0000 (13:53 +0200)] 
parse-options: make CMDMODE errors more precise

Only a single PARSE_OPT_CMDMODE option can be specified for the same
variable at the same time.  This is enforced by get_value(), but the
error messages are imprecise in three ways:

1. If a non-PARSE_OPT_CMDMODE option changes the value variable of a
PARSE_OPT_CMDMODE option then an ominously vague message is shown:

   $ t/helper/test-tool parse-options --set23 --mode1
   error: option `mode1' : incompatible with something else

Worse: If the order of options is reversed then no error is reported at
all:

   $ t/helper/test-tool parse-options --mode1 --set23
   boolean: 0
   integer: 23
   magnitude: 0
   timestamp: 0
   string: (not set)
   abbrev: 7
   verbose: -1
   quiet: 0
   dry run: no
   file: (not set)

Fortunately this can currently only happen in the test helper; actual
Git commands don't share the same variable for the value of options with
and without the flag PARSE_OPT_CMDMODE.

2. If there are multiple options with the same value (synonyms), then
the one that is defined first is shown rather than the one actually
given on the command line, which is confusing:

   $ git am --resolved --quit
   error: option `quit' is incompatible with --continue

3. Arguments of PARSE_OPT_CMDMODE options are not handled by the
parse-option machinery.  This is left to the callback function.  We
currently only have a single affected option, --show-current-patch of
git am.  Errors for it can show an argument that was not actually given
on the command line:

   $ git am --show-current-patch --show-current-patch=diff
   error: options '--show-current-patch=diff' and '--show-current-patch=raw' cannot be used together

The options --show-current-patch and --show-current-patch=raw are
synonyms, but the error accuses the user of input they did not actually
made.  Or it can awkwardly print a NULL pointer:

   $ git am --show-current-patch=diff --show-current-patch
   error: options '--show-current-patch=(null)' and '--show-current-patch=diff' cannot be used together

The reasons for these shortcomings is that the current code checks
incompatibility only when encountering a PARSE_OPT_CMDMODE option at the
command line, and that it searches the previous incompatible option by
value.

Fix the first two points by checking all PARSE_OPT_CMDMODE variables
after parsing each option and by storing all relevant details if their
value changed.  Do that whether or not the changing options has the flag
PARSE_OPT_CMDMODE set.  Report an incompatibility only if two options
change the variable to different values and at least one of them is a
PARSE_OPT_CMDMODE option.  This changes the output of the first three
examples above to:

   $ t/helper/test-tool parse-options --set23 --mode1
   error: --mode1 is incompatible with --set23
   $ t/helper/test-tool parse-options --mode1 --set23
   error: --set23 is incompatible with --mode1
   $ git am --resolved --quit
   error: --quit is incompatible with --resolved

Store the argument of PARSE_OPT_CMDMODE options of type OPTION_CALLBACK
as well to allow taking over the responsibility for compatibility
checking from the callback function.  The next patch will use this
capability to fix the messages for git am --show-current-patch.

Use a linked list for storing the PARSE_OPT_CMDMODE variables.  This
somewhat outdated data structure is simple and suffices, as the number
of elements per command is currently only zero or one.  We do support
multiple different command modes variables per command, but I don't
expect that we'd ever use a significant number of them.  Once we do we
can switch to a hashmap.

Since we no longer need to search the conflicting option, the all_opts
parameter of get_value() is no longer used.  Remove it.

Extend the tests to check for both conflicting option names, but don't
insist on a particular order.

Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
21 months agobugreport: reject positional arguments
Emily Shaffer [Thu, 26 Oct 2023 18:22:31 +0000 (11:22 -0700)] 
bugreport: reject positional arguments

git-bugreport already rejected unrecognized flag arguments, like
`--diaggnose`, but this doesn't help if the user's mistake was to forget
the `--` in front of the argument. This can result in a user's intended
argument not being parsed with no indication to the user that something
went wrong. Since git-bugreport presently doesn't take any positionals
at all, let's reject all positionals and give the user a usage hint.

Signed-off-by: Emily Shaffer <nasamuffin@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
21 months agot0091-bugreport: stop using i18ngrep
Emily Shaffer [Thu, 26 Oct 2023 18:22:30 +0000 (11:22 -0700)] 
t0091-bugreport: stop using i18ngrep

Since e6545201ad (Merge branch 'ab/detox-config-gettext', 2021-04-13),
test_i18ngrep is no longer required. Quit using it in the bugreport
tests, since it's setting a bad example for tests added later.

Signed-off-by: Emily Shaffer <nasamuffin@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
21 months agoInclude gettext.h in MyFirstContribution tutorial
Jacob Stopak [Tue, 17 Oct 2023 04:15:03 +0000 (21:15 -0700)] 
Include gettext.h in MyFirstContribution tutorial

The tutorial in Documentation/MyFirstContribution.txt has steps to print
some text using the "_" function. However, this leads to compiler errors
when running "make" since "gettext.h" is not #included.

Update docs with a note to #include "gettext.h" in "builtin/psuh.c".

Signed-off-by: Jacob Stopak <jacob@initialcommit.io>
Reviewed-by: Emily Shaffer <nasamuffin@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
21 months agosend-email: move validation code below process_address_list
Michael Strawbridge [Wed, 25 Oct 2023 18:51:29 +0000 (14:51 -0400)] 
send-email: move validation code below process_address_list

Move validation logic below processing of email address lists so that
email validation gets the proper email addresses.  As a side effect,
some initialization needed to be moved down.  In order for validation
and the actual email sending to have the same initial state, the
initialized variables that get modified by pre_process_file are
encapsulated in a new function.

This fixes email address validation errors when the optional
perl module Email::Valid is installed and multiple addresses are passed
in on a single to/cc argument like --to=foo@example.com,bar@example.com.
A new test was added to t9001 to expose failures with this case in the
future.

Reported-by: Bagas Sanjaya <bagasdotme@gmail.com>
Signed-off-by: Michael Strawbridge <michael.strawbridge@amd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>