Files
zenml/venv/lib/python3.9/site-packages/mlflow/utils/git_utils.py
Christian Mantha 2ca0b9ef7c star
2026-03-02 19:10:52 -05:00

78 lines
2.3 KiB
Python

import logging
import os
from typing import Optional
_logger = logging.getLogger(__name__)
def get_git_repo_url(path: str) -> Optional[str]:
"""
Obtains the url of the git repository associated with the specified path,
returning ``None`` if the path does not correspond to a git repository.
"""
try:
from git import Repo
except ImportError as e:
_logger.warning(
"Failed to import Git (the Git executable is probably not on your PATH),"
" so Git SHA is not available. Error: %s",
e,
)
return None
try:
repo = Repo(path, search_parent_directories=True)
return next((remote.url for remote in repo.remotes), None)
except Exception:
return None
def get_git_commit(path: str) -> Optional[str]:
"""
Obtains the hash of the latest commit on the current branch of the git repository associated
with the specified path, returning ``None`` if the path does not correspond to a git
repository.
"""
try:
from git import Repo
except ImportError as e:
_logger.warning(
"Failed to import Git (the Git executable is probably not on your PATH),"
" so Git SHA is not available. Error: %s",
e,
)
return None
try:
if os.path.isfile(path):
path = os.path.dirname(os.path.abspath(path))
repo = Repo(path, search_parent_directories=True)
if path in repo.ignored(path):
return None
return repo.head.commit.hexsha
except Exception:
return None
def get_git_branch(path: str) -> Optional[str]:
"""
Obtains the name of the current branch of the git repository associated with the specified
path, returning ``None`` if the path does not correspond to a git repository.
"""
try:
from git import Repo
except ImportError as e:
_logger.warning(
"Failed to import Git (the Git executable is probably not on your PATH),"
" so Git SHA is not available. Error: %s",
e,
)
return None
try:
if os.path.isfile(path):
path = os.path.dirname(path)
repo = Repo(path, search_parent_directories=True)
return repo.active_branch.name
except Exception:
return None