From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx10.gouders.net (mx10.gouders.net [202.61.206.94]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7ECF33BBD6 for ; Sat, 9 Mar 2024 22:27:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.61.206.94 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710023254; cv=none; b=bGzrsjIWwLciU+76sCs1M89PDHVXisIEMWXzzdasLCgeMIFNVV0p/UzuRlwlkV7RRjoQXze+ytA78kC748aRbkpUa20dSlSF1oqDC+/nXfWrUlPxMqfvW/jJzUInMPp0EsDYEpEp/Eue6oHbNAYq6h1MkD/oWCntOE24Xtxo+XA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710023254; c=relaxed/simple; bh=Qf6r/ivTvUJQsyNsEXNG9HfA3AscDyCYIWheGgUCp6I=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type; b=Z/wkialZFxkiayGJJGrO54agKv1gccR9luqIimLs0JoU4ceZfjpHv3wwdk99bRzaAYGSxAuEtDyYaDJa6WEWK+C1f2dZw4QVBhMGoozaZNkjZ+JZu5qGDySpvorgj/OZW6TJY6By/QHs1isAUSX4y1qEqbCLAP/RgNQa0aOt8zQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=gouders.net; spf=pass smtp.mailfrom=gouders.net; dkim=pass (1024-bit key) header.d=gouders.net header.i=@gouders.net header.b=AT61j30W; arc=none smtp.client-ip=202.61.206.94 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=gouders.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gouders.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=gouders.net header.i=@gouders.net header.b="AT61j30W" Received: from localhost (ip-109-42-178-223.web.vodafone.de [109.42.178.223]) (authenticated bits=0) by mx10.gouders.net (8.17.1.9/8.17.1.9) with ESMTPSA id 429MRJGH030659 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO) for ; Sat, 9 Mar 2024 23:27:19 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gouders.net; s=gnet; t=1710023239; bh=Qf6r/ivTvUJQsyNsEXNG9HfA3AscDyCYIWheGgUCp6I=; h=From:To:Subject:Date; b=AT61j30W9WO/srkztMinJAHWO+atA1vS9G+Af/imJAYTPUG+DIEkPUeEF+AuLJCD2 6tIKQBd+2Q84nwfTgKudbEL7pt0bPpmA1/6qWdH0mlG49Fhn6fd4usc5iM73RalUHm 9TDDDIK4uZ5QfQGjpgqSSyks0g2ktdxAc9kJVXHY= From: Dirk Gouders To: git@vger.kernel.org Subject: Informative: git-options.txt User-Agent: Gnus/5.13 (Gnus v5.13) Date: Sat, 09 Mar 2024 23:27:13 +0100 Message-ID: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: text/plain Recently, I followed the discussion [1] and I thought: let's look at the manual pages to see what options Git currently uses -- just out of curiosity and for learning about Git. That were 160 manual pages to visit and if I counted correctly, there are 1160 different option strings -- some of them related and only differing in details. The attached file doesn't always say anything about semantics that sometimes is totally different (for -h, for example). I thought that could be interesting to some of you, as well, so I send it to the list. Some points I noticed: - SYNOPSIS not always matches OPTIONS (e.g. git(1)) and in those cases [] would probably a better solution. - Options that require arguments are often listed without those arguments in OPTIONS but those arguments are talked about and one has to go to SYNOPSIS to come to know the order of those arguments (e.g. git branch -m) Should you wonder about the sorting, I tried to stick to the following rules: - Take the strings as they appear in the OPTIONS sections -- no splitting. - Primarily sort by letters and numbers. - Sort by the first option, then by the second. Arguments are only used within those groups. - I changed the rules on the way, so there may be errors. Disclaimer: because manually created this file isn't 100% correct but I gave my best. On the way I noticed that sometimes options appear at unexpected places, so I for sure missed some. At least this perhaps serves amusing purposes ;-) Who knows, perhaps you think git-options(7) would be a valuable addition. I think it can be automatically generated with a moderate amount of work. Or the attached file could be used for some SoC micro-procect or the like... Dirk [1] https://lore.kernel.org/git/ef5958e1-af3f-4869-b0e3-ff1448c0d73c@gmail.com/T/#t --=-=-= Content-Type: text/plain Content-Disposition: attachment; filename=git-options.txt Content-Description: git-options.txt ... git-rev-parse(1) / git-archimport(1) base-name git-pack-objects(1) git-range-diff(1) git-checkout(1) git-rebase(1) git-branch(1) [] git(1) ... git-cherry-pick(1) git-merge(1) git-revert(1) commit-id git-http-fetch(1) ... git-describe(1) git-cvsimport(1) git-clone(1) git-cvsserver(1) git-daemon(1) git-request-pull(1) git-ls-files(1) git-receive-pack(1) [...] git-fast-export(1) git-bundle(1) git-fetch(1) git-cherry(1) ... git-prune(1) git-cherry(1) git-mailsplit(1) git-mailsplit(1) (|)... git-am(1) git-mailinfo(1) git-checkout(1) git-branch(1) git-cat-file(1) git-fsck(1) git-branch(1) git-mailinfo(1) ... git-apply(1) ... git-add(1) git-checkout(1) git-commit(1) git-grep(1) git-reset(1) git-restore(1) git-rm(1) git-archive(1) [...] git-ls-tree(1) ... git-diff(1) git-diff-tree(1) gitk(1) git-log(1) git-reflog(1) git-log(1) git-reflog(1) git-rev-list(1) ... git-for-each-ref(1) ... git-ls-remote(1) git-range-diff(1) [...] git-bundle(1) ... git-http-push(1) ... git-fetch-pack(1) git-fetch(1) git-pull(1) ... git-push(1) git-clone(1) git-fetch(1) git-fetch-pack(1) git-ls-remote(1) git-pull(1) git-push(1) ... git-range-diff(1) gitk(1) git-log(1) git-reflog(1) ... git-filter-branch(1) git-credential-cache--daemon(1) git-commit-graph(1) git-request-pull(1) git-branch(1) git-checkout(1) git-commit-tree(1) ... git-grep(1) git-archive(1) git-checkout(1) git-diff-index(1) git-diff-tree(1) git-ls-tree(1) git-read-tree(1) git-cat-file(1) git-request-pull(1) git-cherry(1) git-rebase(1) - git-format-patch(1) -/ git-p4(1) -, -C , --context git-grep(1) -, -n , --max-count= git-log(1) git-reflog(1) git-rev-list(1) -0 git-diff(1) -1 --base, -2 --ours, -3 --theirs git-diff(1) git-diff-files(1) -3, --3way git-apply(1) -3, --3way, --no-3way git-am(1) -4, --ipv4 git-fetch(1) git-pull(1) git-push(1) -6, --ipv6 git-fetch(1) git-pull(1) git-push(1) --8bit-encoding= git-send-email(1) -A git-repack(1) -A git-cvsimport(1) -A , --after-context git-grep(1) -A, --all, --no-ignore-removal git-add(1) -a git-archimport(1) git-cvsexportcommit(1) git-cvsimport(1) git-merge-index(1) git-repack(1) -a, -c, -t git-http-fetch(1) -a, --all git-branch(1) git-check-attr(1) git-checkout-index(1) git-commit(1) git-help(1) git-merge-base(1) -a, --append git-fetch(1) git-pull(1) -a, --text git-diff(1) git-diff-files(1) git-diff-index(1) git-diff-tree(1) git-format-patch(1) git-grep(1) git-log(1) git-reflog(1) --abbrev[=] git-diff(1) git-diff-files(1) git-diff-index(1) git-diff-tree(1) git-format-patch(1) git-ls-files(1) git-ls-tree(1) --abbrev= git-blame(1) git-branch(1) git-describe(1) git-log(1) git-reflog(1) --abbrev-commit git-diff-tree(1) git-log(1) git-reflog(1) git-rev-list(1) --abbrev-ref[=(strict|loose)] git-rev-parse(1) --abort git-am(1) git-cherry-pick(1) git-merge(1) git-notes(1) git-rebase(1) git-revert(1) --absolute-git-dir git-rev-parse(1) --access-hook= git-daemon(1) --active-branches= git-fast-import(1) --add git-config(1) --add-file= git-archive(1) --add-header=
git-format-patch(1) --add-virtual-file=: git-archive(1) --aggressive git-gc(1) git-read-tree(1) --all git-describe(1) git-fetch(1) git-fetch-pack(1) git-http-push(1) gitk(1) git-log(1) git-reflog(1) git-name-rev(1) git-pack-objects(1) git-pack-redundant(1) git-pack-refs(1) git-pull(1) git-reflog(1) git-rev-list(1) git-rev-parse(1) --all, --branches git-push(1) --all-match git-grep(1) git-log(1) git-reflog(1) git-rev-list(1) --all-progress git-pack-objects(1) --all-progress-implied git-pack-objects(1) --allow-binary-replacement, --binary git-apply(1) --allow-empty git-am(1) git-apply(1) git-cherry-pick(1) git-commit(1) git-notes(1) --allow-empty-message git-cherry-pick(1) git-commit(1) git-rebase(1) --[no-]allow-onelevel git-check-ref-format(1) --allow-override=, --forbid-override= git-daemon(1) --allow-unknown-type git-cat-file(1) --allow-unrelated-histories git-merge(1) git-merge-tree(1) git-pull(1) --allow-unsafe-features git-fast-import(1) --also-filter-submodules git-clone(1) --alternate-refs git-log(1) git-reflog(1) git-rev-list(1) --alt-odb git-pack-redundant(1) --always git-describe(1) git-diff-tree(1) git-format-patch(1) git-name-rev(1) --amend git-commit(1) --ancestry-path gitk(1) --ancestry-path[=] git-log(1) git-reflog(1) git-rev-list(1) --anchored= git-diff(1) git-diff-files(1) git-diff-index(1) git-diff-tree(1) git-format-patch(1) git-log(1) git-reflog(1) --and, --or, --not, ( ... ) git-grep(1) --annotate git-send-email(1) --annotate-stdin git-name-rev(1) --anonymize git-fast-export(1) --anonymize-map=[:] --append git-commit-graph(1) --apply git-apply(1) git-rebase(1) --argscmd= gitk(1) --atomic git-fetch(1) git-pull(1) --[no-]atomic git-push(1) --attach[=] git-format-patch(1) --attr-source= git(1) --auto git-gc(1) --author Author Name git-quiltimport(1) --author= git-commit(1) --author=, --committer= git-log(1) git-reflog(1) git-rev-list(1) --author-date-order git-log(1) git-reflog(1) git-rev-list(1) --[no-]auto-maintenance, --[no-]auto-gc git-fetch(1) --autosquash, --no-autosquash git-rebase(1) --autostash, --no-autostash git-merge(1) git-pull(1) git-rebase(1) -B git-checkout(1) -B , --before-context git-grep(1) -B[][/], --break-rewrites[=[][/]] git-diff(1) git-diff-files(1) git-diff-index(1) git-diff-tree(1) git-format-patch(1) git-log(1) git-reflog(1) -b git-annotate(1) git-blame(1) git-mailinfo(1) git-mailsplit(1) -b , --initial-branch= git-init(1) -b , --branch git-clone(1) -b git-checkout(1) -b, --browser git-instaweb(1) -b, --ignore-space-change git-diff(1) git-diff-files(1) git-diff-index(1) git-diff-tree(1) git-format-patch(1) git-log(1) git-reflog(1) -b, --write-bitmap-index git-repack(1) --bare git(1) git-clone(1) git-init(1) git-p4(1) --[no-]base[=] git-format-patch(1) --base-path= git-daemon(1) --base-path git-cvsserver(1) --base-path-relaxed git-daemon(1) --basic-regexp git-log(1) git-reflog(1) git-rev-list(1) --bcc=
,... git-send-email(1) --branch git-p4(1) --branch git-p4(1) --branches[=] git-log(1) git-reflog(1) git-rev-list(1) --branches[=], --tags[=], --remotes[=] gitk(1) git-rev-parse(1) --break git-grep(1) --batch git-mktree(1) --batch, --batch= git-cat-file(1) --batch-all-objects git-cat-file(1) --batch-check, --batch-check= git-cat-file(1) --batch-command, --batch-command= git-cat-file(1) --big-file-threshold= git-fast-import(1) --binary git-diff(1) git-diff-files(1) git-diff-index(1) git-diff-tree(1) git-format-patch(1) git-log(1) git-reflog(1) --bisect git-log(1) git-reflog(1) git-rev-list(1) --bisect-all git-rev-list(1) --bisect-vars git-rev-list(1) --[no-]bitmap git-multi-pack-index(1) --blob git-config(1) --bool, --int, --bool-or-int, --path, --expiry-date git-config(1) --boundary git-log(1) git-reflog(1) git-rev-list(1) --branch git-commit(1) --buffer git-cat-file(1) --build-fake-ancestor= git-apply(1) --bundle-uri= git-clone(1) -C git-branch(1) -C[], --find-copies[=] git-diff(1) git-diff-files(1) git-diff-index(1) git-diff-tree(1) git-format-patch(1) git-log(1) git-reflog(1) -C git-apply(1) git-rebase(1) -C[] git-annotate(1) git-blame(1) -C , --reuse-message= git-commit(1) -C , --reuse-message= git-notes(1) -C git(1) -C git-cvsimport(1) -c git-blame(1) git-cvsexportcommit(1) git-diff-tree(1) git-log(1) git-reflog(1) -c , --reedit-message= git-commit(1) -c =, --config = git-clone(1) -c , --reedit-message= git-notes(1) -c = git(1) -c, --cached git-ls-files(1) -c, --cc git-diff-files(1) -c, --config git-help(1) -c, --copy git-branch(1) -c, --count git-grep(1) -c, --scissors git-am(1) --cache git-fsck(1) --cached git-apply(1) git-check-attr(1) git-diff-index(1) git-grep(1) git-rm(1) --candidates= git-describe(1) --cat-blob-fd= git-fast-import(1) --cc git-diff-tree(1) git-log(1) git-reflog(1) --cc=
,... git-send-email(1) --cc= git-format-patch(1) --changed-paths git-commit-graph(1) --changes-block-size git-p4(1) --changesfile git-p4(1) --check git-apply(1) git-diff(1) git-diff-files(1) git-diff-index(1) git-diff-tree(1) git-log(1) git-reflog(1) --check-self-contained-and-connected git-fetch-pack(1) git-index-pack(1) --cherry git-log(1) git-reflog(1) git-rev-list(1) --cherry-mark git-log(1) git-reflog(1) git-rev-list(1) --cherry-pick git-log(1) git-reflog(1) git-rev-list(1) --chmod=(+|-)x --children git-log(1) git-reflog(1) git-rev-list(1) --cleanup= git-cherry-pick(1) git-commit(1) git-merge(1) git-pull(1) git-revert(1) --clear-decorations git-log(1) git-reflog(1) --color[=] git-branch(1) git-diff(1) git-diff-files(1) git-diff-index(1) git-diff-tree(1) git-for-each-ref(1) git-grep(1) git-log(1) git-reflog(1) --color-by-age git-annotate(1) git-blame(1) --color-moved[=] git-diff(1) git-diff-files(1) git-diff-index(1) git-diff-tree(1) git-log(1) git-reflog(1) --color-moved-ws= git-diff(1) git-diff-files(1) git-diff-index(1) git-diff-tree(1) git-log(1) git-reflog(1) --color-lines git-annotate(1) git-blame(1) --color-words[=] git-diff(1) git-diff-files(1) git-diff-index(1) git-diff-tree(1) git-log(1) git-reflog(1) --column git-grep(1) --column[=], --no-column git-branch(1) --combined-all-paths git-diff-tree(1) git-log(1) git-reflog(1) --command= git-column(1) --commit git-notes(1) --commit (|..) git-p4(1) --commit, --no-commit git-merge(1) git-pull(1) --commit-filter git-filter-branch(1) --commit-header git-rev-list(1) --committer-date-is-author-date git-am(1) git-rebase(1) --compact-summary git-diff(1) git-diff-files(1) git-diff-index(1) git-diff-tree(1) git-format-patch(1) git-log(1) git-reflog(1) --compose git-send-email(1) --compose-encoding= git-send-email(1) --compression= git-pack-objects(1) --connectivity-only git-fsck(1) --config= git-for-each-repo(1) --config-env== git(1) --conflict=(ask|skip|quit) git-p4(1) --conflict=