| | |
| | |
| | |
| | |
| |
|
| | |
| |
|
| | __all__ = [ |
| | "Actor", |
| | "AmbiguousObjectName", |
| | "BadName", |
| | "BadObject", |
| | "BadObjectType", |
| | "BaseIndexEntry", |
| | "Blob", |
| | "BlobFilter", |
| | "BlockingLockFile", |
| | "CacheError", |
| | "CheckoutError", |
| | "CommandError", |
| | "Commit", |
| | "Diff", |
| | "DiffConstants", |
| | "DiffIndex", |
| | "Diffable", |
| | "FetchInfo", |
| | "Git", |
| | "GitCmdObjectDB", |
| | "GitCommandError", |
| | "GitCommandNotFound", |
| | "GitConfigParser", |
| | "GitDB", |
| | "GitError", |
| | "HEAD", |
| | "Head", |
| | "HookExecutionError", |
| | "INDEX", |
| | "IndexEntry", |
| | "IndexFile", |
| | "IndexObject", |
| | "InvalidDBRoot", |
| | "InvalidGitRepositoryError", |
| | "List", |
| | "LockFile", |
| | "NULL_TREE", |
| | "NoSuchPathError", |
| | "ODBError", |
| | "Object", |
| | "Optional", |
| | "ParseError", |
| | "PathLike", |
| | "PushInfo", |
| | "RefLog", |
| | "RefLogEntry", |
| | "Reference", |
| | "Remote", |
| | "RemoteProgress", |
| | "RemoteReference", |
| | "Repo", |
| | "RepositoryDirtyError", |
| | "RootModule", |
| | "RootUpdateProgress", |
| | "Sequence", |
| | "StageType", |
| | "Stats", |
| | "Submodule", |
| | "SymbolicReference", |
| | "TYPE_CHECKING", |
| | "Tag", |
| | "TagObject", |
| | "TagReference", |
| | "Tree", |
| | "TreeModifier", |
| | "Tuple", |
| | "Union", |
| | "UnmergedEntriesError", |
| | "UnsafeOptionError", |
| | "UnsafeProtocolError", |
| | "UnsupportedOperation", |
| | "UpdateProgress", |
| | "WorkTreeRepositoryUnsupported", |
| | "refresh", |
| | "remove_password_if_present", |
| | "rmtree", |
| | "safe_decode", |
| | "to_hex_sha", |
| | ] |
| |
|
| | __version__ = '3.1.44' |
| |
|
| | from typing import Any, List, Optional, Sequence, TYPE_CHECKING, Tuple, Union |
| |
|
| | if TYPE_CHECKING: |
| | from types import ModuleType |
| |
|
| | import warnings |
| |
|
| | from gitdb.util import to_hex_sha |
| |
|
| | from git.exc import ( |
| | AmbiguousObjectName, |
| | BadName, |
| | BadObject, |
| | BadObjectType, |
| | CacheError, |
| | CheckoutError, |
| | CommandError, |
| | GitCommandError, |
| | GitCommandNotFound, |
| | GitError, |
| | HookExecutionError, |
| | InvalidDBRoot, |
| | InvalidGitRepositoryError, |
| | NoSuchPathError, |
| | ODBError, |
| | ParseError, |
| | RepositoryDirtyError, |
| | UnmergedEntriesError, |
| | UnsafeOptionError, |
| | UnsafeProtocolError, |
| | UnsupportedOperation, |
| | WorkTreeRepositoryUnsupported, |
| | ) |
| | from git.types import PathLike |
| |
|
| | try: |
| | from git.compat import safe_decode |
| | from git.config import GitConfigParser |
| | from git.objects import ( |
| | Blob, |
| | Commit, |
| | IndexObject, |
| | Object, |
| | RootModule, |
| | RootUpdateProgress, |
| | Submodule, |
| | TagObject, |
| | Tree, |
| | TreeModifier, |
| | UpdateProgress, |
| | ) |
| | from git.refs import ( |
| | HEAD, |
| | Head, |
| | RefLog, |
| | RefLogEntry, |
| | Reference, |
| | RemoteReference, |
| | SymbolicReference, |
| | Tag, |
| | TagReference, |
| | ) |
| | from git.diff import ( |
| | INDEX, |
| | NULL_TREE, |
| | Diff, |
| | DiffConstants, |
| | DiffIndex, |
| | Diffable, |
| | ) |
| | from git.db import GitCmdObjectDB, GitDB |
| | from git.cmd import Git |
| | from git.repo import Repo |
| | from git.remote import FetchInfo, PushInfo, Remote, RemoteProgress |
| | from git.index import ( |
| | BaseIndexEntry, |
| | BlobFilter, |
| | CheckoutError, |
| | IndexEntry, |
| | IndexFile, |
| | StageType, |
| | |
| | |
| | util, |
| | ) |
| | from git.util import ( |
| | Actor, |
| | BlockingLockFile, |
| | LockFile, |
| | Stats, |
| | remove_password_if_present, |
| | rmtree, |
| | ) |
| | except GitError as _exc: |
| | raise ImportError("%s: %s" % (_exc.__class__.__name__, _exc)) from _exc |
| |
|
| |
|
| | def _warned_import(message: str, fullname: str) -> "ModuleType": |
| | import importlib |
| |
|
| | warnings.warn(message, DeprecationWarning, stacklevel=3) |
| | return importlib.import_module(fullname) |
| |
|
| |
|
| | def _getattr(name: str) -> Any: |
| | |
| |
|
| | if name == "util": |
| | return _warned_import( |
| | "The expression `git.util` and the import `from git import util` actually " |
| | "reference git.index.util, and not the git.util module accessed in " |
| | '`from git.util import XYZ` or `sys.modules["git.util"]`. This potentially ' |
| | "confusing behavior is currently preserved for compatibility, but may be " |
| | "changed in the future and should not be relied on.", |
| | fullname="git.index.util", |
| | ) |
| |
|
| | for names, prefix in ( |
| | ({"head", "log", "reference", "symbolic", "tag"}, "git.refs"), |
| | ({"base", "fun", "typ"}, "git.index"), |
| | ): |
| | if name not in names: |
| | continue |
| |
|
| | fullname = f"{prefix}.{name}" |
| |
|
| | return _warned_import( |
| | f"{__name__}.{name} is a private alias of {fullname} and subject to " |
| | f"immediate removal. Use {fullname} instead.", |
| | fullname=fullname, |
| | ) |
| |
|
| | raise AttributeError(f"module {__name__!r} has no attribute {name!r}") |
| |
|
| |
|
| | if not TYPE_CHECKING: |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | del util |
| |
|
| | |
| | __getattr__ = _getattr |
| |
|
| | |
| |
|
| | GIT_OK = None |
| |
|
| |
|
| | def refresh(path: Optional[PathLike] = None) -> None: |
| | """Convenience method for setting the git executable path. |
| | |
| | :param path: |
| | Optional path to the Git executable. If not absolute, it is resolved |
| | immediately, relative to the current directory. |
| | |
| | :note: |
| | The `path` parameter is usually omitted and cannot be used to specify a custom |
| | command whose location is looked up in a path search on each call. See |
| | :meth:`Git.refresh <git.cmd.Git.refresh>` for details on how to achieve this. |
| | |
| | :note: |
| | This calls :meth:`Git.refresh <git.cmd.Git.refresh>` and sets other global |
| | configuration according to the effect of doing so. As such, this function should |
| | usually be used instead of using :meth:`Git.refresh <git.cmd.Git.refresh>` or |
| | :meth:`FetchInfo.refresh <git.remote.FetchInfo.refresh>` directly. |
| | |
| | :note: |
| | This function is called automatically, with no arguments, at import time. |
| | """ |
| | global GIT_OK |
| | GIT_OK = False |
| |
|
| | if not Git.refresh(path=path): |
| | return |
| | if not FetchInfo.refresh(): |
| | return |
| |
|
| | GIT_OK = True |
| |
|
| |
|
| | try: |
| | refresh() |
| | except Exception as _exc: |
| | raise ImportError("Failed to initialize: {0}".format(_exc)) from _exc |
| |
|
| | |
| |
|