GitRepo (autotransform.repo.git)

The implementation for the GitRepo.

class autotransform.repo.git.GitRepo(*, base_branch: str)

Bases: Repo

A Repo that provides support for commiting changes to git.

base_branch

The name of the base branch for the repository.

Type:

str

name

The name of the component.

Type:

ClassVar[str]

BRANCH_NAME_PREFIX

The prefix to apply to branches that are created.

Type:

ClassVar[str]

COMMIT_MESSAGE_PREFIX

The prefix to apply to commits that are created.

Type:

ClassVar[str]

BRANCH_NAME_PREFIX: ClassVar[str] = 'AUTO_TRANSFORM'
COMMIT_MESSAGE_PREFIX: ClassVar[str] = '[AutoTransform]'
base_branch: str
clean(_batch: Batch) None

Performs git reset –hard to remove any changes.

Parameters:

_batch (Batch) – Unused Batch object used to match signature to base

commit(title: str, update: bool) None

Creates a new branch for all changes, stages them, and commits them.

Parameters:
  • title (str) – The title of the Batch being commited.

  • update (bool) – Whether to update an existing change.

static get_branch_name(title: str) str

Gets a unique name for a git branch using the title from the Batch.

Parameters:

title (str) – The title of the change.

Returns:

The name of the branch for this change.

Return type:

str

get_changed_files(_batch: Batch) List[str]

Uses git status to get all changed files.

Parameters:

_batch (Batch) – Unused Batch object used to match signature to base.

Returns:

All changed files, including untracked files.

Return type:

List[str]

static get_changed_files_from_status(status: str) List[str]

Parses the git status to get the changed files.

Parameters:

status (str) – The result of git status -s –untracked-files

Returns:

The changed files.

Return type:

List[str]

static get_commit_message(title: str) str

Gets a commit message for the change based on the Batch title.

Parameters:

title (str) – The title of the change.

Returns:

The commit message for this change.

Return type:

str

get_outstanding_changes() Sequence[Change]

Gets all outstanding Changes for the Repo.

Returns:

The outstanding Changes against the Repo.

Return type:

Sequence[Change]

has_outstanding_change(batch: Batch) bool

Checks the state of the repo to see whether an outstanding Change for the Batch exists.

Parameters:

batch (Batch) – The Batch to check for.

Returns:

Whether an outstanding Change exists.

Return type:

bool

model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'base_branch': FieldInfo(annotation=str, required=True)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

name: ClassVar[RepoName] = 'git'
rewind(batch: Batch) None

First eliminates any uncommitted changes using the clean function then checks out the initial active branch.

Parameters:

batch (Batch) – The Batch for the submitted changes that is being rewound.

submit(batch: Batch, _transform_data: Mapping[str, Any] | None, change: Change | None = None) None

Stages all changes and commits them in a new branch.

Parameters:
  • batch (Batch) – The Batch for which the changes were made.

  • _transform_data (Optional[Mapping[str, Any]]) – Data from the transformation. Unused.

  • change (Optional[Change]) – An associated change which should be updated. Defaults to None.