Module ploigos_step_runner.utils.git
Shared utils for git operations.
NOTE: There is heavy overlap between this class and GitMixin
. An architectural decision needs
to be made on composition vs. multiple inheritance for gaining consistency between unrelated
step implementers that require the same configuration parameters / behaviors.
Functions
def clone_repo(repo_dir, repo_url, username=None, password=None)
-
Clones the repository specified in repo_url.
Parameters
repo_dir
:str
- Path to where to clone the repository
repo_url
:str
- URI of the repository to clone.
username
:str
- Username for the remote git repo (if required)
password
:str
- Password for the remote git repo (if required)
Raises
StepRunnerException
- if error cloning repository
def get_git_repo_regex()
-
Getter for the StepImplementer's configuration defaults.
Returns
str
- The regex representing a valid git repo URI.
def git_checkout(repo_dir, repo_branch)
-
Checks out a specifc branch in the given git repository.
Parameters
repo_dir
:str
- Path to an existing git repository
repo_branch
:str
- The branch to checkout.
Raises
StepRunnerException
- if error checking out branch of repository
def git_commit_file(git_commit_message, file_path, repo_dir)
-
Adds and commits a file. NOTE: In the future, this should be split between two methods, to allow adding multiple files before committing.
Parameters
git_commit_message
:str
- The message to apply on commit.
file_path
:str
- The file to commit.
repo_dir
:str
- Path to an existing git repository.
Raises
StepRunnerException
- if error adding or committing the file
def git_config(repo_dir, git_email, git_name)
-
Sets the git config (username + email) for the git repository residing under repo_dir.
Parameters
repo_dir
:str
- Path to where to clone the repository
git_email
:str
- email to use when performing git operations in the cloned repository
git_name
:str
- name to use when performing git operations in the cloned repository
Raises
StepRunnerException
- if error configuring repo user
def git_tag_and_push(repo_dir, tag, url=None, force_push_tags=False)
-
Tags a commit and pushes it. NOTE: In the future, this should be split between two methods, to allow additional actions after tagging without requiring multiple pushes.
Parameters
repo_dir
:str
- Path to an existing git repository.
tag
:str
- Tag (label) to apply.
url
:str
- URI of git repo, if different than the default as configured under repo_dir.
force_push_tags
:bool
- Whether to force push when history between the local and remote branch differs.
Raises
StepRunnerException
- if error pushing commits
- if error tagging repository
- if error pushing tags