@@ -1081,6 +1081,18 @@ def cmd_uninstall_git_shim(argv: list[str]) -> int:
10811081 return 0
10821082
10831083
1084+ def cmd_version (argv : list [str ]) -> int :
1085+ ap = argparse .ArgumentParser (prog = "pygit version" )
1086+ ap .add_argument ("--build-options" , action = "store_true" )
1087+ args = ap .parse_args (argv )
1088+ from . import __version__
1089+ _print (f"pygit version { __version__ } " )
1090+ if args .build_options :
1091+ _print ("cpu: pure-python" )
1092+ _print ("sizeof-long: 8" )
1093+ return 0
1094+
1095+
10841096# ---------------------------------------------------------------------------
10851097# stubs that record they are not yet implemented (Phase 2)
10861098
@@ -1142,6 +1154,7 @@ def _f(argv):
11421154 "fsck" : cmd_fsck ,
11431155 "gc" : cmd_gc ,
11441156 "help" : cmd_help ,
1157+ "version" : cmd_version ,
11451158 "install-git-shim" : cmd_install_git_shim ,
11461159 "uninstall-git-shim" : cmd_uninstall_git_shim ,
11471160}
@@ -5089,8 +5102,10 @@ def _f(_argv):
50895102
50905103
50915104def _register_phase8 () -> None :
5105+ _COMMANDS ["stage" ] = cmd_add
50925106 _COMMANDS ["init-db" ] = cmd_init_db
50935107 _COMMANDS ["annotate" ] = cmd_annotate
5108+ _COMMANDS ["pickaxe" ] = cmd_blame
50945109 _COMMANDS ["patch-id" ] = cmd_patch_id
50955110 _COMMANDS ["checkout-index" ] = cmd_checkout_index
50965111 _COMMANDS ["fmt-merge-msg" ] = cmd_fmt_merge_msg
@@ -5099,9 +5114,14 @@ def _register_phase8() -> None:
50995114 _COMMANDS ["upload-pack" ] = cmd_upload_pack
51005115 _COMMANDS ["receive-pack" ] = cmd_receive_pack
51015116 _COMMANDS ["upload-archive" ] = cmd_upload_archive
5117+ _COMMANDS ["upload-archive--writer" ] = cmd_upload_archive
51025118 _COMMANDS ["pack-redundant" ] = cmd_pack_redundant
51035119 _COMMANDS ["prune-packed" ] = cmd_prune_packed
5120+ _COMMANDS ["fsck-objects" ] = cmd_fsck
51045121 _COMMANDS ["merge-recursive" ] = cmd_merge_recursive
5122+ _COMMANDS ["merge-recursive-ours" ] = cmd_merge_recursive
5123+ _COMMANDS ["merge-recursive-theirs" ] = cmd_merge_recursive
5124+ _COMMANDS ["merge-subtree" ] = cmd_merge_recursive
51055125 _COMMANDS ["merge-ours" ] = cmd_merge_ours
51065126 _COMMANDS ["multi-pack-index" ] = cmd_multi_pack_index
51075127 _COMMANDS ["for-each-repo" ] = cmd_for_each_repo
@@ -5113,7 +5133,9 @@ def _register_phase8() -> None:
51135133 _COMMANDS ["replay" ] = cmd_replay
51145134 _COMMANDS ["backfill" ] = cmd_backfill
51155135 _COMMANDS ["convert-object-format" ] = cmd_convert_object_format
5136+ _COMMANDS ["submodule--helper" ] = cmd_submodule_helper
51165137 _COMMANDS ["submodule-helper" ] = cmd_submodule_helper
5138+ _COMMANDS ["checkout--worker" ] = cmd_checkout_worker
51175139 _COMMANDS ["checkout-worker" ] = cmd_checkout_worker
51185140
51195141 # explicit out-of-scope stubs
@@ -5395,9 +5417,11 @@ def _cmd_svn(argv):
53955417 _COMMANDS ["cvsserver" ] = _cmd_cvs_bridge ("cvsserver" )
53965418 _COMMANDS ["svn" ] = _cmd_svn
53975419 _COMMANDS ["credential-cache" ] = _cmd_credential_cache
5420+ _COMMANDS ["credential-cache--daemon" ] = _cmd_credential_cache_daemon
53985421 _COMMANDS ["credential-cache-daemon" ] = _cmd_credential_cache_daemon
53995422 _COMMANDS ["credential-store" ] = _cmd_credential_store
54005423 _COMMANDS ["fsmonitor" ] = _cmd_fsmonitor
5424+ _COMMANDS ["fsmonitor--daemon" ] = _cmd_fsmonitor_daemon
54015425 _COMMANDS ["fsmonitor-daemon" ] = _cmd_fsmonitor_daemon
54025426 _COMMANDS ["remote-helper" ] = _cmd_mergetool_remote_helper
54035427 _COMMANDS ["remote-ext" ] = _cmd_remote_ext
@@ -5563,6 +5587,40 @@ def _cmd_repo(argv):
55635587_register_phase8 ()
55645588
55655589
5590+ _PYGIT_EXTENSION_COMMANDS = frozenset ({
5591+ "checkout-worker" ,
5592+ "convert-object-format" ,
5593+ "credential-cache-daemon" ,
5594+ "cvsexportcommit" ,
5595+ "cvsimport" ,
5596+ "cvsserver" ,
5597+ "daemon" ,
5598+ "fsmonitor" ,
5599+ "fsmonitor-daemon" ,
5600+ "gitk" ,
5601+ "gitweb" ,
5602+ "gui" ,
5603+ "http-backend" ,
5604+ "http-fetch" ,
5605+ "install-git-shim" ,
5606+ "instaweb" ,
5607+ "mergetool" ,
5608+ "remote-helper" ,
5609+ "request-pull" ,
5610+ "send-email" ,
5611+ "shell" ,
5612+ "submodule" ,
5613+ "submodule-helper" ,
5614+ "svn" ,
5615+ "uninstall-git-shim" ,
5616+ "url-parse" ,
5617+ })
5618+
5619+
5620+ def cgit_compatible_commands () -> set [str ]:
5621+ return set (_COMMANDS ) - set (_PYGIT_EXTENSION_COMMANDS )
5622+
5623+
55665624_GLOBAL_FLAGS_IGNORED = {
55675625 "-p" , "--paginate" , "-P" , "--no-pager" ,
55685626 "--no-replace-objects" , "--no-lazy-fetch" , "--no-optional-locks" ,
@@ -5701,10 +5759,12 @@ def main(argv: Optional[list[str]] = None) -> int:
57015759 return cmd_help ([])
57025760 if argv [0 ] == _GLOBAL_EXIT :
57035761 return 0
5704- if argv [0 ] in ("--version" , "-v" , "version" ):
5762+ if argv [0 ] in ("--version" , "-v" ):
57055763 from . import __version__
57065764 _print (f"pygit version { __version__ } " )
57075765 return 0
5766+ if argv [0 ] == "version" :
5767+ return cmd_version (argv [1 :])
57085768 cmd = argv [0 ]
57095769 rest = argv [1 :]
57105770 fn = _COMMANDS .get (cmd )
0 commit comments