git/builtin
D. Ben Knoble 129b3632f3 builtin: also setup gently for --help-all
Git experts often check the help summary of a command to make sure they
spell options right when suggesting advice to colleagues. Further, they
might check hidden options when responding to queries about deprecated
options like git-rebase(1)'s "preserve merges" option. But some commands
don't support "--help-all" outside of a git directory. Running (for
example)

    git rebase --help-all

outside a directory fails in "setup_git_directory", erroring with the
localized form of

    fatal: not a git repository (or any of the parent directories): .git

Like 99caeed05d (Let 'git <command> -h' show usage without a git dir,
2009-11-09), we want to show the "--help-all" output even without a git
dir. Make "--help-all" where we expect "-h" to mean
"setup_git_directory_gently", and interpose early in the natural place
("show_usage_with_options_if_asked").

Do the same for usage callers with show_usage_if_asked.

The exception is merge-recursive, whose help block doesn't use newer
APIs.

Best-viewed-with: --ignore-space-change
Signed-off-by: D. Ben Knoble <ben.knoble+github@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2025-08-08 11:13:12 -07:00
..
add.c Merge branch 'ds/sparse-apply-add-p' 2025-05-27 13:59:09 -07:00
am.c Merge branch 'rs/parse-options-precision' 2025-07-16 09:42:28 -07:00
annotate.c
apply.c builtin: use default hash when outside a repository 2025-07-01 14:58:24 -07:00
archive.c
backfill.c odb: rename `has_object()` 2025-07-01 14:46:38 -07:00
bisect.c
blame.c odb: rename `oid_object_info()` 2025-07-01 14:46:37 -07:00
branch.c
bugreport.c
bundle.c
cat-file.c Merge branch 'ps/object-store' 2025-07-15 15:18:18 -07:00
check-attr.c
check-ignore.c
check-mailmap.c
check-ref-format.c
checkout--worker.c
checkout-index.c
checkout.c Merge branch 'ps/object-store' 2025-07-15 15:18:18 -07:00
clean.c
clone.c odb: rename `has_object()` 2025-07-01 14:46:38 -07:00
column.c parse-options: detect mismatches in integer signedness 2025-04-17 08:15:16 -07:00
commit-graph.c Merge branch 'ps/object-store' 2025-07-15 15:18:18 -07:00
commit-tree.c odb: get rid of `the_repository` in `assert_oid_type()` 2025-07-01 14:46:35 -07:00
commit.c commit: avoid scanning trailing comments when 'core.commentChar' is "auto" 2025-07-16 08:25:17 -07:00
config.c config: mention --url in the synopsis 2025-07-01 10:28:48 -07:00
count-objects.c odb: get rid of `the_repository` in `for_each()` functions 2025-07-01 14:46:36 -07:00
credential-cache--daemon.c
credential-cache.c
credential-store.c
credential.c
describe.c odb: rename `oid_object_info()` 2025-07-01 14:46:37 -07:00
diagnose.c
diff-files.c
diff-index.c
diff-pairs.c
diff-tree.c
diff.c Merge branch 'bc/use-sha256-by-default-in-3.0' 2025-07-21 09:14:25 -07:00
difftool.c odb: rename `repo_read_object_file()` 2025-07-01 14:46:38 -07:00
fast-export.c Merge branch 'cc/fast-import-export-signature-names' 2025-07-23 15:45:16 -07:00
fast-import.c Merge branch 'cc/fast-import-export-signature-names' 2025-07-23 15:45:16 -07:00
fetch-pack.c builtin/fetch-pack: cleanup before return error 2025-06-04 08:52:25 -07:00
fetch.c Merge branch 'ph/fetch-prune-optim' 2025-07-16 09:42:27 -07:00
fmt-merge-msg.c parse-options: introduce precision handling for `OPTION_INTEGER` 2025-04-17 08:15:15 -07:00
for-each-ref.c
for-each-repo.c
fsck.c odb: rename `has_object()` 2025-07-01 14:46:38 -07:00
fsmonitor--daemon.c
gc.c Merge branch 'jk/unleak-reflog-expire-entry' 2025-08-01 11:27:11 -07:00
get-tar-commit-id.c
grep.c odb: rename `read_object_with_reference()` 2025-07-01 14:46:39 -07:00
hash-object.c Merge branch 'bc/use-sha256-by-default-in-3.0' 2025-07-21 09:14:25 -07:00
help.c
hook.c
index-pack.c Merge branch 'bc/use-sha256-by-default-in-3.0' 2025-07-21 09:14:25 -07:00
init-db.c Merge branch 'ps/parse-options-integers' 2025-04-24 17:25:34 -07:00
interpret-trailers.c
log.c Merge branch 'jk/revision-no-early-output' 2025-08-01 11:27:11 -07:00
ls-files.c odb: rename `oid_object_info()` 2025-07-01 14:46:37 -07:00
ls-remote.c builtin: use default hash when outside a repository 2025-07-01 14:58:24 -07:00
ls-tree.c odb: rename `oid_object_info()` 2025-07-01 14:46:37 -07:00
mailinfo.c
mailsplit.c
merge-base.c
merge-file.c object-store: rename files to "odb.{c,h}" 2025-07-01 14:46:34 -07:00
merge-index.c
merge-ours.c
merge-recursive.c builtin: also setup gently for --help-all 2025-08-08 11:13:12 -07:00
merge-tree.c odb: rename `repo_read_object_file()` 2025-07-01 14:46:38 -07:00
merge.c merge/pull: extend merge.stat configuration variable to cover --compact-summary 2025-06-13 11:54:14 -07:00
mktag.c Merge branch 'ps/object-store' 2025-07-15 15:18:18 -07:00
mktree.c odb: rename `oid_object_info()` 2025-07-01 14:46:37 -07:00
multi-pack-index.c object-store: rename files to "odb.{c,h}" 2025-07-01 14:46:34 -07:00
mv.c Merge branch 'ps/mv-contradiction-fix' 2025-05-08 12:36:32 -07:00
name-rev.c Merge branch 'ps/object-wo-the-repository' 2025-04-15 13:50:15 -07:00
notes.c odb: rename `repo_read_object_file()` 2025-07-01 14:46:38 -07:00
pack-objects.c Merge branch 'tb/midx-avoid-cruft-packs' 2025-07-21 09:14:26 -07:00
pack-redundant.c Merge branch 'ps/object-store' 2025-07-15 15:18:18 -07:00
pack-refs.c
patch-id.c builtin: use default hash when outside a repository 2025-07-01 14:58:24 -07:00
prune-packed.c
prune.c Merge branch 'ps/object-store' 2025-07-15 15:18:18 -07:00
pull.c Merge branch 'ly/pull-autostash' 2025-08-01 11:27:14 -07:00
push.c
range-diff.c
read-tree.c global: use designated initializers for options 2025-04-17 08:15:15 -07:00
rebase.c parse-options: add precision handling for OPTION_NEGBIT 2025-07-09 08:39:46 -07:00
receive-pack.c Merge branch 'bc/use-sha256-by-default-in-3.0' 2025-07-21 09:14:25 -07:00
reflog.c reflog: close leak of reflog expire entry 2025-07-22 16:34:11 -07:00
refs.c
remote-ext.c
remote-fd.c
remote.c Merge branch 'jk/remote-avoid-overlapping-names' 2025-07-21 09:14:26 -07:00
repack.c Merge branch 'tb/midx-avoid-cruft-packs' 2025-07-21 09:14:26 -07:00
replace.c odb: rename `oid_object_info()` 2025-07-01 14:46:37 -07:00
replay.c repo_logmsg_reencode: fix memory leak when use repo_logmsg_reencode () 2025-06-05 08:35:22 -07:00
rerere.c
reset.c reset: integrate sparse index with --patch 2025-05-16 12:02:47 -07:00
rev-list.c Merge branch 'jc/do-not-scan-argv-without-parsing' 2025-08-01 11:27:11 -07:00
rev-parse.c
revert.c Merge branch 'ps/parse-options-integers' 2025-04-24 17:25:34 -07:00
rm.c
send-pack.c Merge branch 'jk/fix-leak-send-pack' 2025-07-07 14:12:57 -07:00
shortlog.c Merge branch 'bc/use-sha256-by-default-in-3.0' 2025-07-21 09:14:25 -07:00
show-branch.c Merge branch 'az/tighten-string-array-constness' 2025-04-29 14:21:28 -07:00
show-index.c builtin: use default hash when outside a repository 2025-07-01 14:58:24 -07:00
show-ref.c odb: rename `has_object()` 2025-07-01 14:46:38 -07:00
sparse-checkout.c
stash.c Merge branch 'bc/stash-export-import' 2025-06-30 14:30:31 -07:00
stripspace.c
submodule--helper.c Merge branch 'ps/object-store' 2025-07-15 15:18:18 -07:00
symbolic-ref.c
tag.c odb: rename `repo_read_object_file()` 2025-07-01 14:46:38 -07:00
unpack-file.c odb: rename `repo_read_object_file()` 2025-07-01 14:46:38 -07:00
unpack-objects.c odb: rename `has_object()` 2025-07-01 14:46:38 -07:00
update-index.c parse-options: add precision handling for OPTION_SET_INT 2025-07-09 08:39:26 -07:00
update-ref.c refs: add function to translate errors to strings 2025-05-19 11:06:31 -07:00
update-server-info.c
upload-archive.c
upload-pack.c
var.c
verify-commit.c
verify-pack.c
verify-tag.c
worktree.c Merge branch 'ly/do-not-localize-bug-messages' 2025-06-17 10:44:40 -07:00
write-tree.c parse-options: add precision handling for OPTION_BIT 2025-07-09 08:39:28 -07:00