# `gbp.rpm.git.RpmGitRepository(PkgGitRepository)` class documentation

Part of `gbp.rpm.git` (View In Hierarchy)

A git repository that holds the source of an RPM package

Method | __init__ | No summary
Method | find_version | Check if a certain version is stored in this repo and return the SHA1 of the related commit. That is, an annotated tag is dereferenced to the commit object it points to.
Static Method | version_to_tag | Generate a tag from a given format and a version
Method | pristine_tar_branch | The name of the pristine-tar branch, whether it already exists or not.
Method | has_pristine_tar_branch | Whether the repo has a pristine-tar branch.
Static Method | _sanitize_tag | sanitize a version so git accepts it as a tag

Inherited from GitRepository (via PkgGitRepository):

Method | path | The absolute path to the repository
Method | git_dir | The absolute path to git's metadata
Method | bare | Whether this is a bare repository
Method | tags | List of all tags in the repository
Method | branch | The currently checked out branch
Method | head | SHA1 of the current HEAD
Method | rename_branch | Rename branch
Method | create_branch | Create a new branch
Method | delete_branch | Delete branch branch
Method | get_branch | On what branch is the current working copy
Method | has_branch | Check if the repository has branch named branch.
Method | set_branch | Switch to branch branch
Method | get_merge_branch | Get the branch we'd merge from
Method | get_merge_base | Get the common ancestor between two commits
Method | merge | Merge changes from the named commit into the current branch
Method | abort_merge | Abort a merge
Method | is_in_merge | Undocumented
Method | is_fast_forward | Check if an update from from_branch to to_branch would be a fast forward or if the branch is up to date already.
Method | get_local_branches | Get a list of local branches
Method | get_remote_branches | Get a list of remote branches
Method | update_ref | Update ref ref to commit new if ref currently points to old
Method | branch_contains | Check if branch branch contains commit commit
Method | set_upstream_branch | Set upstream branches for local branch
Method | get_upstream_branch | Get upstream branch for the local branch
Method | create_tag | Create a new tag.
Method | delete_tag | Delete a tag named tag
Method | move_tag | Undocumented
Method | has_tag | Check if the repository has a tag named tag.
Method | describe | Describe commit, relative to the latest tag reachable from it.
Method | find_tag | Find the closest tag to a given commit
Method | find_branch_tag | Find the closest tag on a certain branch to a given commit
Method | get_tags | List tags
Method | verify_tag | Verify a signed tag
Method | force_head | Force HEAD to a specific commit
Method | is_clean | Does the repository contain any uncommitted modifications?
Method | clean | Remove untracked files from the working tree.
Method | status | Check status of repository.
Method | is_empty | Is the repository empty?
Method | rev_parse | Find the SHA1 of a given name
Static Method | strip_sha1 | Strip a given sha1 and check if the resulting hash has the expected length.
Method | checkout | Checkout treeish
Method | has_treeish | Check if the repository has the treeish object treeish.
Method | write_tree | Create a tree object from the current index
Method | make_tree | Create a tree based on contents.
Method | get_obj_type | Get type of a git repository object
Method | list_tree | Get a trees content. It returns a list of objects that match the 'ls-tree' output: [mode, type, sha1, path].
Method | get_config | Gets the config value associated with name
Method | set_config | Set a git config value in this repository
Method | set_user_name | Sets the full name to use for git commits.
Method | set_user_email | Sets the email address to use for git commits.
Method | get_author_info | Determine a sane values for author name and author email from git's config and environment variables.
Method | get_remotes | Get a list of remote repositories
Method | get_remote_repos | Get all remote repositories
Method | has_remote_repo | Do we know about a remote named name?
Method | add_remote_repo | Add a tracked remote repository
Method | remove_remote_repo | Undocumented
Method | fetch | Download objects and refs from another repository.
Method | pull | Fetch and merge from another repository
Method | push | Push changes to the remote repo
Method | push_tag | Push a tag to the remote repo
Method | add_files | Add files to a the repository
Method | remove_files | Remove files from the repository
Method | list_files | List files in index and working tree
Method | write_file | Hash a single file and write it into the object database
Method | rename_file | Rename file, directory, or symlink
Method | commit_staged | Commit currently staged files to the repository
Method | commit_all | No summary
Method | commit_files | Commit the given files to the repository
Method | commit_dir | Replace the current tip of branch branch with the contents from unpack_dir
Method | commit_tree | Commit a tree with commit msg msg and parents parents
Method | get_commits | Get commits from since to until touching paths
Method | show | Show a git object
Method | grep_log | Get commmits matching regex
Method | get_subject | Gets the subject of a commit.
Method | get_commit_info | Look up data of a specific commit-ish. Dereferences given commit-ish to the commit it points to.
Method | format_patches | Output the commits between start and end as patches in output_dir.
Method | apply_patch | Apply a patch using git apply
Method | diff | Diff two git repository objects
Method | diff_status | Get file-status of two git repository objects
Method | archive | Create an archive from a treeish
Method | collect_garbage | Cleanup unnecessary files and optimize the local repository
Method | has_submodules | Does the repo have any submodules?
Method | add_submodule | Add a submodule
Method | update_submodules | Update all submodules
Method | get_submodules | List the submodules of treeish
Class Method | create | Create a repository at path
Class Method | clone | Clone a git repository at remote to path.
Instance Variable | _path | The path to the working tree (type: `str`)
Instance Variable | _bare | Whether this is a bare repository (type: `bool`)
Method | _check_bare | Check whether this is a bare repository
Method | _get_git_dir | Undocumented
Method | _check_repo | Undocumented
Static Method | __build_env | Prepare environment for subprocess calls
Method | _git_getoutput | Run a git command and return the output
Method | _git_inout | Run a git command with input and return output
Class Method | __git_inout | As _git_inout but can be used without an instance
Method | _git_command | Execute git command with arguments args and environment env at path.
Method | _cmd_has_feature | Check if the git command has certain feature enabled.
Method | _get_branches | Get a list of branches
Method | _status | Undocumented
Method | _commit | Undocumented

Inherited from GitRepository (via PkgGitRepository):

Method | path | The absolute path to the repository
Method | git_dir | The absolute path to git's metadata
Method | bare | Whether this is a bare repository
Method | tags | List of all tags in the repository
Method | branch | The currently checked out branch
Method | head | SHA1 of the current HEAD
Method | rename_branch | Rename branch
Method | create_branch | Create a new branch
Method | delete_branch | Delete branch branch
Method | get_branch | On what branch is the current working copy
Method | has_branch | Check if the repository has branch named branch.
Method | set_branch | Switch to branch branch
Method | get_merge_branch | Get the branch we'd merge from
Method | get_merge_base | Get the common ancestor between two commits
Method | merge | Merge changes from the named commit into the current branch
Method | abort_merge | Abort a merge
Method | is_in_merge | Undocumented
Method | is_fast_forward | Check if an update from from_branch to to_branch would be a fast forward or if the branch is up to date already.
Method | get_local_branches | Get a list of local branches
Method | get_remote_branches | Get a list of remote branches
Method | update_ref | Update ref ref to commit new if ref currently points to old
Method | branch_contains | Check if branch branch contains commit commit
Method | set_upstream_branch | Set upstream branches for local branch
Method | get_upstream_branch | Get upstream branch for the local branch
Method | create_tag | Create a new tag.
Method | delete_tag | Delete a tag named tag
Method | move_tag | Undocumented
Method | has_tag | Check if the repository has a tag named tag.
Method | describe | Describe commit, relative to the latest tag reachable from it.
Method | find_tag | Find the closest tag to a given commit
Method | find_branch_tag | Find the closest tag on a certain branch to a given commit
Method | get_tags | List tags
Method | verify_tag | Verify a signed tag
Method | force_head | Force HEAD to a specific commit
Method | is_clean | Does the repository contain any uncommitted modifications?
Method | clean | Remove untracked files from the working tree.
Method | status | Check status of repository.
Method | is_empty | Is the repository empty?
Method | rev_parse | Find the SHA1 of a given name
Static Method | strip_sha1 | Strip a given sha1 and check if the resulting hash has the expected length.
Method | checkout | Checkout treeish
Method | has_treeish | Check if the repository has the treeish object treeish.
Method | write_tree | Create a tree object from the current index
Method | make_tree | Create a tree based on contents.
Method | get_obj_type | Get type of a git repository object
Method | list_tree | Get a trees content. It returns a list of objects that match the 'ls-tree' output: [mode, type, sha1, path].
Method | get_config | Gets the config value associated with name
Method | set_config | Set a git config value in this repository
Method | set_user_name | Sets the full name to use for git commits.
Method | set_user_email | Sets the email address to use for git commits.
Method | get_author_info | Determine a sane values for author name and author email from git's config and environment variables.
Method | get_remotes | Get a list of remote repositories
Method | get_remote_repos | Get all remote repositories
Method | has_remote_repo | Do we know about a remote named name?
Method | add_remote_repo | Add a tracked remote repository
Method | remove_remote_repo | Undocumented
Method | fetch | Download objects and refs from another repository.
Method | pull | Fetch and merge from another repository
Method | push | Push changes to the remote repo
Method | push_tag | Push a tag to the remote repo
Method | add_files | Add files to a the repository
Method | remove_files | Remove files from the repository
Method | list_files | List files in index and working tree
Method | write_file | Hash a single file and write it into the object database
Method | rename_file | Rename file, directory, or symlink
Method | commit_staged | Commit currently staged files to the repository
Method | commit_all | No summary
Method | commit_files | Commit the given files to the repository
Method | commit_dir | Replace the current tip of branch branch with the contents from unpack_dir
Method | commit_tree | Commit a tree with commit msg msg and parents parents
Method | get_commits | Get commits from since to until touching paths
Method | show | Show a git object
Method | grep_log | Get commmits matching regex
Method | get_subject | Gets the subject of a commit.
Method | get_commit_info | Look up data of a specific commit-ish. Dereferences given commit-ish to the commit it points to.
Method | format_patches | Output the commits between start and end as patches in output_dir.
Method | apply_patch | Apply a patch using git apply
Method | diff | Diff two git repository objects
Method | diff_status | Get file-status of two git repository objects
Method | archive | Create an archive from a treeish
Method | collect_garbage | Cleanup unnecessary files and optimize the local repository
Method | has_submodules | Does the repo have any submodules?
Method | add_submodule | Add a submodule
Method | update_submodules | Update all submodules
Method | get_submodules | List the submodules of treeish
Class Method | create | Create a repository at path
Class Method | clone | Clone a git repository at remote to path.
Instance Variable | _path | The path to the working tree (type: `str`)
Instance Variable | _bare | Whether this is a bare repository (type: `bool`)
Method | _check_bare | Check whether this is a bare repository
Method | _get_git_dir | Undocumented
Method | _check_repo | Undocumented
Static Method | __build_env | Prepare environment for subprocess calls
Method | _git_getoutput | Run a git command and return the output
Method | _git_inout | Run a git command with input and return output
Class Method | __git_inout | As _git_inout but can be used without an instance
Method | _git_command | Execute git command with arguments args and environment env at path.
Method | _cmd_has_feature | Check if the git command has certain feature enabled.
Method | _get_branches | Get a list of branches
Method | _status | Undocumented
Method | _commit | Undocumented

def __init__(self, path):
overrides gbp.pkg.git.PkgGitRepository.__init__

Parameters | path | path to git repo (or subdir) (type: `str`)
| toplevel | whether path points to the toplevel dir of git repository (type: `bool`)

def find_version(self, format, str_fields):

Check if a certain version is stored in this repo and return the SHA1 of the related commit. That is, an annotated tag is dereferenced to the commit object it points to.

Parameters | format | tag pattern (type: `str`)
| str_fields | arguments for format string ('upstreamversion', 'release', 'vendor'...) (type: `dict` of `str`)
Returns | sha1 of the commit the tag references to

@staticmethod
def version_to_tag(format, str_fields):

Generate a tag from a given format and a version

Parameters | format | tag pattern (type: `str`)
| str_fields | arguments for format string ('upstreamversion', 'release', 'vendor'...) (type: `dict` of `str`)

Returns

version tag

    >>> RpmGitRepository.version_to_tag("packaging/%(version)s", dict(epoch='0', upstreamversion='0~0'))
    'packaging/0%0_0'
    >>> RpmGitRepository.version_to_tag("%(vendor)s/v%(version)s", dict(upstreamversion='1.0', release='2', vendor="myvendor"))
    'myvendor/v1.0-2'

@staticmethod
def _sanitize_tag(tag):

sanitize a version so git accepts it as a tag

    >>> RpmGitRepository._sanitize_tag("0.0.0")
    '0.0.0'
    >>> RpmGitRepository._sanitize_tag("0.0~0")
    '0.0_0'
    >>> RpmGitRepository._sanitize_tag("0:0.0")
    '0%0.0'
    >>> RpmGitRepository._sanitize_tag("0%0~0")
    '0%0_0'

@property
def pristine_tar_branch(self):

The name of the pristine-tar branch, whether it already exists or not.

def has_pristine_tar_branch(self):

Whether the repo has a pristine-tar branch.

Returns | `True` if the repo has pristine-tar commits already, `False` otherwise (type: `Bool`)