GitPython is a python library used to interact with Git repositories.
This report presents the forensic synthetic code analysis of gitpython-developers/GitPython, a Python project with 5,156 GitHub stars. SynthScan v2.0 examined 46,139 lines of code across 174 source files, recording 1050 pattern matches distributed across 15 syntactic categories. The overall adjusted score of 33.1 places this repository in the Strong AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 1050 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | check-version.sh | 3 | # This file is part of GitPython and is released under the | COMMENT |
| MEDIUM | init-tests-after-clone.sh | 3 | # This file is part of GitPython and is released under the | COMMENT |
| MEDIUM | build-release.sh | 3 | # This file is part of GitPython and is released under the | COMMENT |
| MEDIUM | fuzzing/oss-fuzz-scripts/build.sh | 3 | # This file is part of GitPython and is released under the | COMMENT |
| MEDIUM | …ng/oss-fuzz-scripts/container-environment-bootstrap.sh | 3 | # This file is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_stats.py | 3 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_tree.py | 3 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_rev_parse.py | 3 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_submodule.py | 1 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_db.py | 3 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_actor.py | 3 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_blob_filter.py | 1 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_docs.py | 3 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM⚡ | test/test_docs.py | 88 | # Create a new head/branch. | COMMENT |
| MEDIUM⚡ | test/test_docs.py | 90 | new_branch = cloned_repo.create_head("feature") # Create a new branch ... | CODE |
| MEDIUM⚡ | test/test_docs.py | 98 | # Create a new tag reference. | COMMENT |
| MEDIUM | test/test_docs.py | 149 | # Create a local branch at the latest fetched master. We specify the name | COMMENT |
| MEDIUM | test/test_docs.py | 188 | # Create a new submodule and check it out on the spot, setup to track master | COMMENT |
| MEDIUM | test/test_docs.py | 242 | new_branch = repo.create_head("new") # Create a new one. | CODE |
| MEDIUM | test/test_docs.py | 470 | git_cmd.checkout("HEAD", b="my_new_branch") # Create a new branch. | CODE |
| MEDIUM | test/test_imports.py | 1 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_git.py | 3 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_git.py | 347 | # Create a shell script that doesn't do anything. | COMMENT |
| MEDIUM | test/test_git.py | 387 | # Create the child process that inherits the environment variable. The child | COMMENT |
| MEDIUM | test/test_fun.py | 1 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/__init__.py | 3 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_clone.py | 1 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_util.py | 3 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_diff.py | 3 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_diff.py | 575 | # Create a file beginning by a whitespace | COMMENT |
| MEDIUM | test/test_refs.py | 3 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_refs.py | 473 | # Create a new branch that is likely to touch the file we changed. | COMMENT |
| MEDIUM | test/test_refs.py | 564 | # Create a new non-head ref just to be sure we handle it even if packed. | COMMENT |
| MEDIUM | test/test_refs.py | 667 | # Create a file containing a valid reference outside the repository. Attempting | COMMENT |
| MEDIUM | test/tstrunner.py | 1 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_installation.py | 1 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_installation.py | 51 | # Create a convenience function to run commands in it. | COMMENT |
| MEDIUM | test/test_repo.py | 3 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_repo.py | 987 | # Create a repo and make sure it's pointing to the relocated .git directory. | COMMENT |
| MEDIUM | test/test_reflog.py | 1 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_config.py | 3 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_config.py | 60 | # Creating an additional config writer must fail due to exclusive | COMMENT |
| MEDIUM | test/test_index.py | 3 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_remote.py | 3 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_remote.py | 300 | # Create a new UN-shared repo and fetch into it after we pushed a change to the | COMMENT |
| MEDIUM | test/test_quick_doc.py | 1 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_fixture_health.py | 1 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_exc.py | 3 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM⚡ | test/test_blob.py | 3 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_base.py | 3 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_commit.py | 3 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/test_commit.py | 388 | # Create a commit with Unicode in the message, and the author's name. | COMMENT |
| MEDIUM | test/deprecation/test_basic.py | 1 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM⚡ | test/deprecation/lib.py | 1 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/deprecation/__init__.py | 1 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/deprecation/test_toplevel.py | 1 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/deprecation/test_compat.py | 1 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/deprecation/test_remote_progress.py | 1 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/deprecation/test_types.py | 1 | # This module is part of GitPython and is released under the | COMMENT |
| MEDIUM | test/deprecation/test_cmd_git.py | 1 | # This module is part of GitPython and is released under the | COMMENT |
| 82 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | fuzzing/fuzz-targets/utils.py | 10 | def is_expected_exception_message(exception: Exception, error_message_list: List[str]) -> bool: # pragma: no cover | CODE |
| LOW⚡ | fuzzing/fuzz-targets/utils.py | 78 | def match_exception_with_traceback(exception_list: Set[Tuple[str, str]], exc_traceback) -> bool: | CODE |
| LOW | fuzzing/fuzz-targets/utils.py | 89 | def check_exception_against_list(exc_traceback, exception_file: str = "explicit-exceptions-list.txt") -> bool: | CODE |
| LOW | test/test_tree.py | 80 | def test_tree_modifier_ordering(self): | CODE |
| LOW⚡ | test/test_tree.py | 170 | def test_repo_lookup_string_path(self, rw_repo): | CODE |
| LOW⚡ | test/test_tree.py | 177 | def test_repo_lookup_pathlike_path(self, rw_repo): | CODE |
| LOW⚡ | test/test_tree.py | 184 | def test_repo_lookup_invalid_string_path(self, rw_repo): | CODE |
| LOW⚡ | test/test_tree.py | 190 | def test_repo_lookup_invalid_pathlike_path(self, rw_repo): | CODE |
| LOW⚡ | test/test_tree.py | 196 | def test_repo_lookup_nested_string_path(self, rw_repo): | CODE |
| LOW⚡ | test/test_tree.py | 203 | def test_repo_lookup_nested_pathlike_path(self, rw_repo): | CODE |
| LOW⚡ | test/test_tree.py | 210 | def test_repo_lookup_folder_string_path(self, rw_repo): | CODE |
| LOW⚡ | test/test_tree.py | 217 | def test_repo_lookup_folder_pathlike_path(self, rw_repo): | CODE |
| LOW | test/test_rev_parse.py | 61 | def test_rev_parse_names_hex_and_describe_forms(rev_parse_repo): | CODE |
| LOW | test/test_rev_parse.py | 79 | def test_rev_parse_navigation_and_peeling(rev_parse_repo): | CODE |
| LOW | test/test_rev_parse.py | 104 | def test_rev_parse_tree_and_index_paths(rev_parse_repo): | CODE |
| LOW | test/test_rev_parse.py | 115 | def test_rev_parse_reflog_selectors(rev_parse_repo): | CODE |
| LOW | test/test_rev_parse.py | 133 | def test_rev_parse_commit_message_search(rev_parse_repo): | CODE |
| LOW | test/test_rev_parse.py | 143 | def test_rev_parse_rejects_invalid_object_specs(rev_parse_repo): | CODE |
| LOW⚡ | test/test_submodule.py | 700 | def test_iter_items_from_nonexistent_hash(self): | CODE |
| LOW⚡ | test/test_submodule.py | 705 | def test_iter_items_from_invalid_hash(self): | CODE |
| LOW⚡ | test/test_submodule.py | 713 | def test_deinit_calls_git_submodule(self, rwdir): | CODE |
| LOW | test/test_submodule.py | 751 | def test_update_to_latest_revision_after_deinit_fetches_remote(self, rwdir): | CODE |
| LOW | test/test_submodule.py | 771 | def test_update_after_deinit_fetches_new_gitlink_commit(self, rwdir): | CODE |
| LOW | test/test_submodule.py | 797 | def test_update_after_deinit_refuses_non_empty_checkout(self, rwdir): | CODE |
| LOW | test/test_submodule.py | 823 | def test_update_after_deinit_without_init_does_not_restore_checkout(self, rwdir): | CODE |
| LOW | test/test_submodule.py | 838 | def test_dry_run_update_after_deinit_does_not_restore_checkout(self, rwdir): | CODE |
| LOW | test/test_submodule.py | 853 | def test_update_after_deinit_restores_nested_checkout(self, rwdir): | CODE |
| LOW | test/test_submodule.py | 914 | def test_update_submodule_with_relative_path(self, rwdir): | CODE |
| LOW | test/test_submodule.py | 930 | def test_list_only_valid_submodules(self, rwdir): | CODE |
| LOW | test/test_submodule.py | 957 | def test_git_submodules_and_add_sm_with_new_commit(self, rwdir): | CODE |
| LOW | test/test_submodule.py | 1024 | def test_git_submodule_compatibility(self, rwdir): | CODE |
| LOW | test/test_submodule.py | 1111 | def test_ignore_non_submodule_file(self, rwdir): | CODE |
| LOW | test/test_submodule.py | 1249 | def test_to_relative_path_with_super_at_root_drive(self): | CODE |
| LOW | test/test_submodule.py | 1272 | def test_update_clone_multi_options_argument(self, rwdir): | CODE |
| LOW | test/test_submodule.py | 1296 | def test_update_no_clone_multi_options_argument(self, rwdir): | CODE |
| LOW | test/test_submodule.py | 1321 | def test_add_clone_multi_options_argument(self, rwdir): | CODE |
| LOW | test/test_submodule.py | 1341 | def test_add_no_clone_multi_options_argument(self, rwdir): | CODE |
| LOW | test/test_submodule.py | 1355 | def test_add_does_not_expand_environment_variables_in_url(self, rwdir): | CODE |
| LOW | test/test_submodule.py | 1369 | def test_submodule_add_unsafe_url(self, rw_repo): | CODE |
| LOW | test/test_submodule.py | 1383 | def test_submodule_add_unsafe_url_allowed(self, rw_repo): | CODE |
| LOW | test/test_submodule.py | 1399 | def test_submodule_add_unsafe_options(self, rw_repo): | CODE |
| LOW | test/test_submodule.py | 1415 | def test_submodule_add_unsafe_options_allowed(self, rw_repo): | CODE |
| LOW | test/test_submodule.py | 1452 | def test_submodule_update_unsafe_url(self, rw_repo): | CODE |
| LOW | test/test_submodule.py | 1467 | def test_submodule_update_unsafe_url_allowed(self, rw_repo): | CODE |
| LOW | test/test_submodule.py | 1484 | def test_submodule_update_unsafe_options(self, rw_repo): | CODE |
| LOW | test/test_submodule.py | 1501 | def test_submodule_update_unsafe_options_are_checked_after_splitting_multi_options(self, rw_repo): | CODE |
| LOW | test/test_submodule.py | 1512 | def test_submodule_update_unsafe_options_allowed(self, rw_repo): | CODE |
| LOW | test/test_submodule.py | 1538 | def test_submodule_update_relative_url(self, rwdir): | CODE |
| LOW | test/test_actor.py | 12 | def test_from_string_should_separate_name_and_email(self): | CODE |
| LOW⚡ | test/test_actor.py | 25 | def test_from_string_should_handle_just_name(self): | CODE |
| LOW⚡ | test/test_actor.py | 30 | def test_should_display_representation(self): | CODE |
| LOW⚡ | test/test_actor.py | 34 | def test_str_should_alias_name(self): | CODE |
| LOW | test/test_docs.py | 207 | def test_references_and_objects(self, rw_dir): | CODE |
| LOW | test/test_imports.py | 9 | def test_git_util_attribute_is_git_index_util(): | CODE |
| LOW | test/test_imports.py | 21 | def test_git_index_util_attribute_is_git_index_util(): | CODE |
| LOW | test/test_imports.py | 26 | def test_separate_git_util_module_exists(): | CODE |
| LOW⚡ | test/test_git.py | 177 | def test_check_unsafe_options_does_not_treat_short_options_as_abbreviations(self): | CODE |
| LOW⚡ | test/test_git.py | 184 | def test_check_unsafe_options_does_not_treat_option_values_as_abbreviations(self): | CODE |
| LOW⚡ | test/test_git.py | 187 | def test_check_unsafe_options_rejects_joined_unsafe_short_options(self): | CODE |
| LOW⚡ | test/test_git.py | 274 | def test_it_logs_istream_summary_for_stdin(self, case): | CODE |
| 289 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/deprecation/test_basic.py | 32 | CODE | |
| LOW | test/deprecation/test_basic.py | 34 | CODE | |
| LOW | test/deprecation/test_basic.py | 34 | CODE | |
| LOW | test/deprecation/test_basic.py | 35 | CODE | |
| LOW | test/lib/__init__.py | 8 | CODE | |
| LOW | smmap/smmap/__init__.py | 10 | CODE | |
| LOW | smmap/smmap/__init__.py | 11 | CODE | |
| LOW | gitdb/gitdb/fun.py | 702 | CODE | |
| LOW | gitdb/gitdb/util.py | 14 | CODE | |
| LOW | gitdb/gitdb/util.py | 87 | CODE | |
| LOW | gitdb/gitdb/util.py | 87 | CODE | |
| LOW | gitdb/gitdb/util.py | 28 | CODE | |
| LOW | gitdb/gitdb/__init__.py | 14 | CODE | |
| LOW | gitdb/gitdb/__init__.py | 15 | CODE | |
| LOW | gitdb/gitdb/__init__.py | 16 | CODE | |
| LOW | gitdb/gitdb/stream.py | 30 | CODE | |
| LOW | gitdb/gitdb/test/lib.py | 21 | CODE | |
| LOW | gitdb/gitdb/test/db/lib.py | 6 | CODE | |
| LOW | gitdb/gitdb/test/db/lib.py | 6 | CODE | |
| LOW | gitdb/gitdb/test/db/lib.py | 6 | CODE | |
| LOW | gitdb/gitdb/test/db/test_ref.py | 11 | CODE | |
| LOW | gitdb/gitdb/db/__init__.py | 6 | CODE | |
| LOW | gitdb/gitdb/db/__init__.py | 7 | CODE | |
| LOW | gitdb/gitdb/db/__init__.py | 8 | CODE | |
| LOW | gitdb/gitdb/db/__init__.py | 9 | CODE | |
| LOW | gitdb/gitdb/db/__init__.py | 10 | CODE | |
| LOW | gitdb/gitdb/db/__init__.py | 11 | CODE | |
| LOW | git/db.py | 9 | CODE | |
| LOW | git/db.py | 22 | CODE | |
| LOW | git/cmd.py | 6 | CODE | |
| LOW | git/cmd.py | 71 | CODE | |
| LOW | git/cmd.py | 72 | CODE | |
| LOW | git/config.py | 45 | CODE | |
| LOW | git/config.py | 47 | CODE | |
| LOW | git/compat.py | 18 | CODE | |
| LOW | git/compat.py | 18 | CODE | |
| LOW | git/compat.py | 22 | CODE | |
| LOW | git/compat.py | 22 | CODE | |
| LOW | git/compat.py | 22 | CODE | |
| LOW | git/compat.py | 22 | CODE | |
| LOW | git/remote.py | 49 | CODE | |
| LOW | git/remote.py | 50 | CODE | |
| LOW | git/remote.py | 51 | CODE | |
| LOW | git/util.py | 54 | CODE | |
| LOW | git/util.py | 54 | CODE | |
| LOW | git/util.py | 54 | CODE | |
| LOW | git/util.py | 54 | CODE | |
| LOW | git/util.py | 54 | CODE | |
| LOW | git/util.py | 54 | CODE | |
| LOW | git/util.py | 54 | CODE | |
| LOW | git/util.py | 54 | CODE | |
| LOW | git/util.py | 95 | CODE | |
| LOW | git/util.py | 90 | CODE | |
| LOW | git/util.py | 91 | CODE | |
| LOW | git/util.py | 91 | CODE | |
| LOW | git/util.py | 92 | CODE | |
| LOW | git/util.py | 93 | CODE | |
| LOW | git/__init__.py | 91 | CODE | |
| LOW | git/__init__.py | 91 | CODE | |
| LOW | git/__init__.py | 91 | CODE | |
| 191 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | test/test_docs.py | 414 | origin.push() # Attempt push, ignore errors. | CODE |
| HIGH | test/test_docs.py | 415 | origin.push().raise_if_error() # Push and raise error if it fails. | CODE |
| HIGH⚡ | test/test_remote.py | 352 | res = remote.push(lhead.reference, progress) | CODE |
| HIGH⚡ | test/test_remote.py | 359 | res = remote.push(lhead.reference) | CODE |
| HIGH⚡ | test/test_remote.py | 365 | res = remote.push("+%s" % lhead.reference) | CODE |
| HIGH⚡ | test/test_remote.py | 378 | res = remote.push(progress=progress, tags=True) | CODE |
| HIGH⚡ | test/test_remote.py | 386 | res = remote.push(tags=True) | CODE |
| HIGH⚡ | test/test_remote.py | 392 | res = remote.push("+%s" % new_tag.path) | CODE |
| HIGH⚡ | test/test_remote.py | 397 | res = remote.push(":%s" % new_tag.path) | CODE |
| HIGH⚡ | test/test_remote.py | 407 | res = remote.push(new_head, progress) | CODE |
| HIGH⚡ | test/test_remote.py | 415 | res = remote.push(":%s" % new_head.path, force_with_lease=force_with_lease) | CODE |
| HIGH⚡ | test/test_remote.py | 422 | res = remote.push(":%s" % new_head.path) | CODE |
| HIGH⚡ | test/test_remote.py | 428 | res = remote.push(all=True) | CODE |
| HIGH⚡ | test/test_remote.py | 436 | remote.push(":%s" % other_tag.path, kill_after_timeout=10.0) | CODE |
| HIGH | test/test_remote.py | 321 | remote.push(rw_repo.head.reference) | CODE |
| HIGH | test/test_remote.py | 711 | rem.push("__BAD_REF__") | CODE |
| HIGH | test/test_remote.py | 962 | remote.push(url) | CODE |
| HIGH | test/test_remote.py | 979 | remote.push(url, allow_unsafe_protocols=True) | CODE |
| HIGH | test/test_remote.py | 998 | remote.push(**unsafe_option) | CODE |
| HIGH | test/test_remote.py | 1025 | remote.push(**unsafe_option, allow_unsafe_options=True) | CODE |
| HIGH | git/remote.py | 122 | info = remote.push()[0] | STRING |
| HIGH | git/remote.py | 1212 | proc = self.repo.git.push( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | test/test_submodule.py | 523 | # ================================================== | COMMENT |
| MEDIUM | test/test_submodule.py | 564 | # ============== | COMMENT |
| MEDIUM | test/test_submodule.py | 585 | # ==================================== | COMMENT |
| MEDIUM | test/test_submodule.py | 628 | # ============= | COMMENT |
| MEDIUM | test/test_submodule.py | 656 | # ============== | COMMENT |
| MEDIUM | test/test_submodule.py | 685 | # ================= | COMMENT |
| MEDIUM | test/deprecation/test_basic.py | 37 | # ------------------------------------------------------------------------ | COMMENT |
| MEDIUM | doc/source/conf.py | 24 | # --------------------- | COMMENT |
| MEDIUM | doc/source/conf.py | 94 | # ----------------------- | COMMENT |
| MEDIUM | doc/source/conf.py | 159 | # ------------------------ | COMMENT |
| MEDIUM | git/db.py | 24 | # -------------------------------------------------------- | COMMENT |
| MEDIUM | git/cmd.py | 74 | # --------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | git/cmd.py | 95 | # ============================================================================== | COMMENT |
| MEDIUM | git/cmd.py | 97 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | git/config.py | 62 | # ------------------------------------------------------------- | COMMENT |
| MEDIUM | git/compat.py | 36 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | git/remote.py | 55 | # ------------------------------------------------------------- | COMMENT |
| MEDIUM | git/util.py | 107 | # --------------------------------------------------------------------- | COMMENT |
| MEDIUM | git/types.py | 212 | # ----------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | git/exc.py | 58 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | git/diff.py | 45 | # ------------------------------------------------------------------------ | COMMENT |
| MEDIUM | git/objects/tree.py | 52 | # -------------------------------------------------------- | COMMENT |
| MEDIUM | git/objects/fun.py | 38 | # --------------------------------------------------- | COMMENT |
| MEDIUM | git/objects/util.py | 84 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | git/objects/commit.py | 62 | # ------------------------------------------------------------------------ | COMMENT |
| MEDIUM | git/objects/base.py | 35 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | git/objects/tag.py | 38 | # --------------------------------------------------- | COMMENT |
| MEDIUM | git/objects/submodule/root.py | 24 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | git/objects/submodule/base.py | 73 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | git/objects/submodule/base.py | 757 | # =============================== | COMMENT |
| MEDIUM | git/objects/submodule/base.py | 761 | # =============================== | COMMENT |
| MEDIUM | git/refs/log.py | 38 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | git/refs/remote.py | 24 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | git/refs/symbolic.py | 50 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | git/refs/head.py | 28 | # ------------------------------------------------------------------- | COMMENT |
| MEDIUM | git/refs/reference.py | 20 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | git/refs/tag.py | 27 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | git/index/fun.py | 54 | # ------------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | git/index/util.py | 25 | # --------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | git/index/typ.py | 26 | # --------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | git/index/base.py | 85 | # ------------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | git/repo/fun.py | 51 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | git/repo/base.py | 93 | # ----------------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 46 | CODE | |
| LOW | fuzzing/fuzz-targets/fuzz_submodule.py | 23 | CODE | |
| LOW | test/test_git.py | 729 | CODE | |
| LOW | test/test_clone.py | 357 | CODE | |
| LOW | test/test_diff.py | 395 | CODE | |
| LOW | test/test_index.py | 614 | CODE | |
| LOW | test/test_index.py | 633 | CODE | |
| LOW | test/lib/helper.py | 248 | CODE | |
| LOW | test/lib/helper.py | 279 | CODE | |
| LOW | test/lib/helper.py | 281 | CODE | |
| LOW | test/performance/test_odb.py | 13 | CODE | |
| LOW | smmap/smmap/mman.py | 303 | CODE | |
| LOW | smmap/smmap/mman.py | 491 | CODE | |
| LOW | smmap/smmap/test/test_mman.py | 50 | CODE | |
| LOW | smmap/smmap/test/test_mman.py | 96 | CODE | |
| LOW | smmap/smmap/test/test_buf.py | 25 | CODE | |
| LOW | gitdb/gitdb/pack.py | 862 | CODE | |
| LOW | gitdb/gitdb/fun.py | 536 | CODE | |
| LOW | gitdb/gitdb/fun.py | 248 | CODE | |
| LOW | gitdb/gitdb/test/test_stream.py | 76 | CODE | |
| LOW | gitdb/gitdb/test/performance/test_pack.py | 105 | CODE | |
| LOW | gitdb/gitdb/db/git.py | 44 | CODE | |
| LOW | git/cmd.py | 102 | CODE | |
| LOW | git/cmd.py | 149 | CODE | |
| LOW | git/cmd.py | 735 | CODE | |
| LOW | git/cmd.py | 973 | CODE | |
| LOW | git/cmd.py | 1036 | CODE | |
| LOW | git/cmd.py | 1208 | CODE | |
| LOW | git/cmd.py | 1623 | CODE | |
| LOW | git/cmd.py | 1446 | CODE | |
| LOW | git/config.py | 250 | CODE | |
| LOW | git/config.py | 83 | CODE | |
| LOW | git/config.py | 381 | CODE | |
| LOW | git/config.py | 442 | CODE | |
| LOW | git/config.py | 549 | CODE | |
| LOW | git/config.py | 613 | CODE | |
| LOW | git/config.py | 897 | CODE | |
| LOW | git/remote.py | 215 | CODE | |
| LOW | git/remote.py | 380 | CODE | |
| LOW | git/remote.py | 702 | CODE | |
| LOW | git/util.py | 347 | CODE | |
| LOW | git/util.py | 419 | CODE | |
| LOW | git/util.py | 623 | CODE | |
| LOW | git/util.py | 861 | CODE | |
| LOW | git/diff.py | 319 | CODE | |
| LOW | git/diff.py | 429 | CODE | |
| LOW | git/diff.py | 701 | CODE | |
| LOW | git/objects/tree.py | 234 | CODE | |
| LOW | git/objects/util.py | 111 | CODE | |
| LOW | git/objects/util.py | 222 | CODE | |
| LOW | git/objects/commit.py | 850 | CODE | |
| LOW | git/objects/submodule/root.py | 79 | CODE | |
| LOW | git/objects/submodule/base.py | 641 | CODE | |
| LOW | git/objects/submodule/base.py | 1109 | CODE | |
| LOW | git/refs/symbolic.py | 144 | CODE | |
| LOW | git/refs/symbolic.py | 201 | CODE | |
| LOW | git/refs/symbolic.py | 449 | CODE | |
| LOW | git/refs/symbolic.py | 649 | CODE | |
| LOW | git/index/fun.py | 316 | CODE | |
| LOW | git/index/fun.py | 389 | CODE | |
| 14 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | test/deprecation/lib.py | 6 | __all__ = ["assert_no_deprecation_warning", "suppress_deprecation_warning"] | CODE |
| LOW | test/lib/__init__.py | 10 | __all__ = [name for name, obj in locals().items() if not (name.startswith("_") or inspect.ismodule(obj))] | CODE |
| LOW | test/lib/helper.py | 6 | __all__ = [ | CODE |
| LOW | smmap/smmap/mman.py | 12 | __all__ = ["StaticWindowMapManager", "SlidingWindowMapManager", "WindowCursor"] | CODE |
| LOW | smmap/smmap/buf.py | 4 | __all__ = ["SlidingWindowMapBuffer"] | CODE |
| LOW | smmap/smmap/util.py | 8 | __all__ = ["align_to_mmap", "is_64_bit", | CODE |
| LOW | smmap/smmap/test/lib.py | 6 | __all__ = ['TestBase', 'FileCreator'] | CODE |
| LOW | gitdb/gitdb/exc.py | 8 | __all__ = [ | CODE |
| LOW | git/db.py | 6 | __all__ = ["GitCmdObjectDB", "GitDB"] | CODE |
| LOW | git/cmd.py | 8 | __all__ = ["GitMeta", "Git"] | CODE |
| LOW | git/cmd.py | 1101 | def set_persistent_git_options(self, **kwargs: Any) -> None: | CODE |
| LOW | git/config.py | 8 | __all__ = ["GitConfigParser", "SectionConstraint"] | CODE |
| LOW | git/remote.py | 8 | __all__ = ["RemoteProgress", "PushInfo", "FetchInfo", "Remote"] | CODE |
| LOW | git/remote.py | 587 | def _set_cache_(self, attr: str) -> None: | CODE |
| LOW | git/util.py | 8 | __all__ = [ | CODE |
| LOW | git/__init__.py | 8 | __all__ = [ | CODE |
| LOW | git/exc.py | 8 | __all__ = [ | CODE |
| LOW | git/diff.py | 6 | __all__ = ["DiffConstants", "NULL_TREE", "NULL_TREE_SHA", "INDEX", "Diffable", "DiffIndex", "Diff"] | CODE |
| LOW | git/objects/tree.py | 6 | __all__ = ["TreeModifier", "Tree"] | CODE |
| LOW | git/objects/tree.py | 213 | def _set_cache_(self, attr: str) -> None: | STRING |
| LOW | git/objects/fun.py | 6 | __all__ = [ | CODE |
| LOW | git/objects/util.py | 8 | __all__ = [ | CODE |
| LOW | git/objects/commit.py | 6 | __all__ = ["Commit"] | CODE |
| LOW | git/objects/commit.py | 247 | def _set_cache_(self, attr: str) -> None: | CODE |
| LOW | git/objects/__init__.py | 6 | __all__ = [ | CODE |
| LOW | git/objects/blob.py | 6 | __all__ = ["Blob"] | CODE |
| LOW | git/objects/base.py | 6 | __all__ = ["Object", "IndexObject"] | CODE |
| LOW | git/objects/base.py | 154 | def _set_cache_(self, attr: str) -> None: | CODE |
| LOW | git/objects/base.py | 272 | def _set_cache_(self, attr: str) -> None: | CODE |
| LOW | git/objects/tag.py | 12 | __all__ = ["TagObject"] | CODE |
| LOW | git/objects/tag.py | 110 | def _set_cache_(self, attr: str) -> None: | CODE |
| LOW | git/objects/submodule/util.py | 4 | __all__ = [ | CODE |
| LOW | git/objects/submodule/util.py | 89 | def set_submodule(self, submodule: "Submodule") -> None: | CODE |
| LOW | git/objects/submodule/__init__.py | 4 | __all__ = ["Submodule", "UpdateProgress", "RootModule", "RootUpdateProgress"] | CODE |
| LOW | git/objects/submodule/root.py | 4 | __all__ = ["RootModule", "RootUpdateProgress"] | CODE |
| LOW | git/objects/submodule/base.py | 4 | __all__ = ["Submodule", "UpdateProgress"] | CODE |
| LOW | git/objects/submodule/base.py | 169 | def _set_cache_(self, attr: str) -> None: | CODE |
| LOW | git/refs/log.py | 4 | __all__ = ["RefLog", "RefLogEntry"] | CODE |
| LOW | git/refs/remote.py | 6 | __all__ = ["RemoteReference"] | CODE |
| LOW | git/refs/__init__.py | 4 | __all__ = [ | CODE |
| LOW | git/refs/symbolic.py | 4 | __all__ = ["SymbolicReference"] | CODE |
| LOW | git/refs/head.py | 9 | __all__ = ["HEAD", "Head"] | CODE |
| LOW | git/refs/reference.py | 4 | __all__ = ["Reference"] | CODE |
| LOW | git/refs/tag.py | 11 | __all__ = ["TagReference", "Tag"] | CODE |
| LOW | git/index/fun.py | 7 | __all__ = [ | CODE |
| LOW | git/index/util.py | 6 | __all__ = ["TemporaryFileSwap", "post_clear_cache", "default_index", "git_working_dir"] | CODE |
| LOW | git/index/__init__.py | 6 | __all__ = [ | CODE |
| LOW | git/index/typ.py | 6 | __all__ = ["BlobFilter", "BaseIndexEntry", "IndexEntry", "StageType"] | CODE |
| LOW | git/index/base.py | 9 | __all__ = ["IndexFile", "CheckoutError", "StageType"] | CODE |
| LOW | git/index/base.py | 156 | def _set_cache_(self, attr: str) -> None: | CODE |
| LOW | git/repo/fun.py | 8 | __all__ = [ | CODE |
| LOW | git/repo/__init__.py | 6 | __all__ = ["Repo"] | CODE |
| LOW | git/repo/base.py | 8 | __all__ = ["Repo"] | CODE |
| LOW | git/repo/base.py | 940 | def _set_daemon_export(self, value: object) -> None: | STRING |
| LOW | git/repo/base.py | 973 | def _set_alternates(self, alts: List[str]) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | fuzzing/fuzz-targets/fuzz_config.py | 1 | # Copyright 2023 Google LLC | COMMENT |
| LOW | test/test_docs.py | 21 | # | COMMENT |
| LOW | test/__init__.py | 1 | # Copyright (C) 2008, 2009 Michael Trier (mtrier@gmail.com) and contributors | COMMENT |
| LOW | test/test_index.py | 401 | COMMENT | |
| LOW | test/test_index.py | 421 | rw_repo.index.write() | COMMENT |
| LOW | test/test_quick_doc.py | 41 | # ![1-test_cloned_repo_object] | COMMENT |
| LOW | test/test_quick_doc.py | 81 | # ![6-test_cloned_repo_object] | COMMENT |
| LOW | test/test_quick_doc.py | 181 | COMMENT | |
| LOW | test/test_quick_doc.py | 221 | # File 2 version 1 | COMMENT |
| LOW | test/performance/__init__.py | 1 | # This module is part of GitPython and is released under the | COMMENT |
| LOW | smmap/doc/source/conf.py | 1 | # | COMMENT |
| LOW | smmap/doc/source/conf.py | 41 | copyright = '2011, Sebastian Thiel' | COMMENT |
| LOW | smmap/doc/source/conf.py | 61 | COMMENT | |
| LOW | smmap/doc/source/conf.py | 81 | #show_authors = False | COMMENT |
| LOW | smmap/doc/source/conf.py | 101 | # Add any paths that contain custom themes here, relative to this directory. | COMMENT |
| LOW | smmap/doc/source/conf.py | 121 | # relative to this directory. They are copied after the builtin static files, | COMMENT |
| LOW | smmap/doc/source/conf.py | 141 | #html_use_modindex = True | COMMENT |
| LOW | smmap/doc/source/conf.py | 181 | #latex_logo = None | COMMENT |
| LOW | .github/workflows/codeql.yml | 1 | # For most projects, this workflow file will not need changing; you simply need | COMMENT |
| LOW | .github/workflows/codeql.yml | 41 | # CodeQL supports the following values keywords for 'language': 'actions', 'c-cpp', 'csharp', 'go', 'java-kotlin | COMMENT |
| LOW | doc/source/conf.py | 1 | # GitPython documentation build configuration file, originally created by | COMMENT |
| LOW | doc/source/conf.py | 61 | # non-false value, then it is used: | COMMENT |
| LOW | doc/source/conf.py | 101 | # html_title = None | COMMENT |
| LOW | doc/source/conf.py | 121 | # html_last_updated_fmt = '%b %d, %Y' | COMMENT |
| LOW | doc/source/conf.py | 141 | # html_split_index = False | COMMENT |
| LOW | doc/source/conf.py | 161 | # The paper size ('letter' or 'a4'). | COMMENT |
| LOW | doc/source/conf.py | 181 | # Additional stuff for the LaTeX preamble. | COMMENT |
| LOW | gitdb/doc/source/conf.py | 1 | # | COMMENT |
| LOW | gitdb/doc/source/conf.py | 41 | copyright = '2011, Sebastian Thiel' | COMMENT |
| LOW | gitdb/doc/source/conf.py | 61 | COMMENT | |
| LOW | gitdb/doc/source/conf.py | 101 | #html_theme_path = [] | COMMENT |
| LOW | gitdb/doc/source/conf.py | 121 | # so a file named "default.css" will overwrite the builtin "default.css". | COMMENT |
| LOW | gitdb/doc/source/conf.py | 141 | COMMENT | |
| LOW | gitdb/doc/source/conf.py | 181 | COMMENT | |
| LOW | gitdb/gitdb/stream.py | 161 | # is already complete, but there are still some bytes left in the compressed | COMMENT |
| LOW | gitdb/gitdb/stream.py | 241 | self._buflen = 0 | COMMENT |
| LOW | gitdb/gitdb/stream.py | 281 | # END handle tail | COMMENT |
| LOW | gitdb/gitdb/stream.py | 321 | # Stop when we have enough or there is no path to more output. | COMMENT |
| LOW | gitdb/gitdb/stream.py | 461 | # We will use it as scratch space for all delta ops. If the final | COMMENT |
| LOW | gitdb/gitdb/test/__init__.py | 1 | # Copyright (C) 2010, 2011 Sebastian Thiel (byronimo@gmail.com) and contributors | COMMENT |
| LOW | gitdb/gitdb/test/db/__init__.py | 1 | # Copyright (C) 2010, 2011 Sebastian Thiel (byronimo@gmail.com) and contributors | COMMENT |
| LOW | git/util.py | 681 | # Hence we get something like "CompreReceiving objects", which is | COMMENT |
| LOW | git/__init__.py | 221 | ) | COMMENT |
| LOW | git/__init__.py | 241 | # unambiguously non-public and subject to immediate removal. Here, the public | COMMENT |
| LOW | git/objects/submodule/root.py | 301 | else: | COMMENT |
| LOW | git/refs/reference.py | 101 | # From refs/files-backend.c in git-source: | COMMENT |
| LOW | git/index/fun.py | 481 | # It was added the same in both. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | fuzzing/fuzz-targets/fuzz_submodule.py | 114 | except Exception as e: | CODE |
| MEDIUM | fuzzing/fuzz-targets/utils.py | 53 | print(f"Error reading file {file_path}: {e}") | CODE |
| LOW⚡ | fuzzing/fuzz-targets/utils.py | 72 | except Exception as e: | CODE |
| MEDIUM⚡ | fuzzing/fuzz-targets/utils.py | 73 | print(f"Error loading exception list: {e}") | CODE |
| LOW⚡ | test/test_index.py | 319 | except Exception as ex: | CODE |
| LOW⚡ | test/test_index.py | 327 | except Exception as ex: | CODE |
| LOW | test/lib/helper.py | 114 | except Exception: | CODE |
| LOW | test/lib/helper.py | 220 | except Exception as ex: | CODE |
| LOW | test/lib/helper.py | 243 | except Exception as ex: | CODE |
| LOW | test/lib/helper.py | 300 | except Exception: | CODE |
| LOW | smmap/smmap/mman.py | 360 | except Exception: | CODE |
| LOW | smmap/smmap/mman.py | 570 | except Exception: | CODE |
| LOW | gitdb/gitdb/util.py | 75 | except Exception: | CODE |
| LOW | gitdb/gitdb/test/lib.py | 72 | except Exception: | CODE |
| LOW | gitdb/gitdb/db/ref.py | 73 | except Exception: | CODE |
| LOW | git/cmd.py | 166 | except Exception as ex: | STRING |
| LOW | git/config.py | 819 | except Exception: | CODE |
| LOW | git/config.py | 851 | except Exception: | CODE |
| LOW | git/remote.py | 979 | except Exception as e: | CODE |
| LOW | git/util.py | 480 | except Exception as ex: | CODE |
| LOW | git/util.py | 538 | except Exception: | CODE |
| LOW | git/util.py | 890 | except Exception: | CODE |
| LOW | git/__init__.py | 297 | except Exception as _exc: | CODE |
| LOW | git/objects/util.py | 316 | except Exception as e: | CODE |
| LOW | git/objects/submodule/root.py | 417 | except Exception as err: | CODE |
| LOW | git/objects/submodule/base.py | 961 | except Exception as err: | CODE |
| LOW | git/objects/submodule/base.py | 1094 | except Exception: | CODE |
| LOW | git/objects/submodule/base.py | 1487 | except Exception: | CODE |
| LOW | git/objects/submodule/base.py | 1517 | except Exception: | CODE |
| LOW | git/index/fun.py | 124 | except Exception as ex: | CODE |
| LOW | git/repo/base.py | 347 | except Exception: | STRING |
| LOW | git/repo/base.py | 382 | except Exception: | STRING |
| MEDIUM | git/repo/base.py | 379 | def __del__(self) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | test/test_refs.py | 261 | res = rw_repo.remotes.origin.refs.master.checkout() | CODE |
| CRITICAL | test/test_repo.py | 517 | for item in self.rorepo.head.commit.tree.traverse( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | smmap/smmap/test/test_tutorial.py | 31 | # before you can use the cursor, you have to specify a window you want to | COMMENT |
| MEDIUM | smmap/smmap/test/test_tutorial.py | 64 | # you can use it right away | COMMENT |
| MEDIUM | .github/workflows/codeql.yml | 47 | # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how | COMMENT |
| LOW | git/index/base.py | 1149 | don't forget to :meth:`write` your changes to disk beforehand. | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/test_remote.py | 340 | # master yet. We simply create it. | COMMENT |
| LOW | test/test_base.py | 141 | # On POSIX, we can just add Unicode files without problems. | COMMENT |
| MEDIUM | smmap/smmap/mman.py | 97 | """Assign rhs to this instance. This is required in order to get a real copy. | STRING |
| LOW | smmap/smmap/test/test_util.py | 103 | assert isinstance(is_64_bit(), bool) # just call it | CODE |
| LOW | gitdb/gitdb/fun.py | 314 | # this is very pythonic - we might have just use index based access here, | COMMENT |
| LOW | gitdb/gitdb/stream.py | 462 | # target buffer is smaller than our allocated space, we just use parts | COMMENT |
| LOW | git/diff.py | 668 | # is invalid. We just use the one mode we should have parsed. | COMMENT |
| MEDIUM | git/index/base.py | 112 | """An Index that can be manipulated using a native implementation in order to save | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | test/test_git.py | 423 | token = "fake-token-1234" | CODE |
| LOW⚡ | test/test_util.py | 531 | "GIT_AUTHOR_NAME": "John Doe", | CODE |
| LOW⚡ | test/test_util.py | 533 | "GIT_COMMITTER_NAME": "Jane Doe", | CODE |
| LOW⚡ | test/test_util.py | 540 | self.assertEqual(committer.name, "Jane Doe") | CODE |
| LOW⚡ | test/test_util.py | 542 | self.assertEqual(author.name, "John Doe") | CODE |
| LOW | test/test_util.py | 674 | authorization = "Bearer fake-token-1234" | CODE |
| LOW | git/remote.py | 993 | unset = "placeholder" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tox.ini | 17 | CLICOLOR_FORCE = 1 # Set NO_COLOR to override this. | CODE |
| LOW | tox.ini | 25 | CLICOLOR_FORCE = 1 # Set NO_COLOR to override this. | CODE |
| LOW | test/test_docs.py | 243 | new_branch.commit = "HEAD~10" # Set branch to another commit without changing index or working trees. | CODE |
| LOW | test/test_index.py | 453 | # Write the file back. | COMMENT |
| LOW | test/performance/test_streams.py | 104 | # Write file - pump everything in at once to be a fast as possible. | COMMENT |
| LOW | git/config.py | 525 | # Check if it's an option with no value - it's just ignored by git. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | git/cmd.py | 1208 | CODE | |
| LOW | git/diff.py | 105 | CODE | |
| LOW | git/objects/commit.py | 115 | CODE | |
| LOW | git/objects/submodule/root.py | 79 | CODE | |
| LOW | git/objects/submodule/base.py | 442 | CODE | |
| LOW | git/objects/submodule/base.py | 641 | CODE | |
| LOW | git/index/base.py | 1129 | CODE |