# `gbp.pkg.git.PkgGitRepository(GitRepository)` class documentation

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

Known subclasses: gbp.deb.git.DebianGitRepository, gbp.rpm.git.RpmGitRepository

A git repository that holds the source of a Distro package

Method | __init__ | No summary
Instance Variable | pristine_tar | Undocumented
Static Method | sanitize_prefix | Make sure git-archive prefix ends with a slash
Method | archive_comp | Create a compressed source tree archive with the given options
Method | _archive_comp_submodules | Create a compressed source tree archive with submodules.
Method | _archive_comp_single | Create a compressed source tree archive without submodules

Inherited from GitRepository:

Class Method | git_inout | As _git_inout but can be used without an instance
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
Instance Variable | _bare | Whether this is a bare repository
Method | _check_bare | Check whether this is a bare repository
Method | _get_git_dir | Undocumented
Instance Variable | _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
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, *args, **kwargs):
overrides gbp.git.repository.GitRepository.__init__
overridden in gbp.deb.git.DebianGitRepository, gbp.rpm.git.RpmGitRepository

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

pristine_tar =
Undocumented
@staticmethod
def sanitize_prefix(prefix):

Make sure git-archive prefix ends with a slash

    >>> PkgGitRepository.sanitize_prefix('')
    '/'
    >>> PkgGitRepository.sanitize_prefix('foo/')
    'foo/'
    >>> PkgGitRepository.sanitize_prefix('/foo/bar')
    'foo/bar/'

def archive_comp(self, treeish, output, prefix, comp, format="""tar""", submodules=(False)):

Create a compressed source tree archive with the given options

def _archive_comp_submodules(self, treeish, output, prefix, comp, format="""tar"""):

Create a compressed source tree archive with submodules.

Concatenates the archives generated by git-archive into one and compresses the end result.

Exception handling is left to the caller.

def _archive_comp_single(self, treeish, output, prefix, comp, format="""tar"""):

Create a compressed source tree archive without submodules

We have this as a special case since it avoids a temporary file