Package gbp :: Package deb :: Module git :: Class DebianGitRepository
[hide private]
[frames] | no frames]

Class DebianGitRepository

                  object --+    
                           |    
git.repository.GitRepository --+
                               |
                              DebianGitRepository
Known Subclasses:

A git repository that holds the source of a Debian package

Instance Methods [hide private]
 
__init__(self, path)
x.__init__(...) initializes x; see help(type(x)) for signature
 
tree_drop_dirs(self, tree, dirs)
Drop the given top level dirs from the given git tree returning a new tree object.
 
tree_get_dir(self, tree, dir)
Get the SHA1 of directory in a given tree
str
find_version(self, format, version)
Check if a certain version is stored in this repo and return the SHA1 of the related commit.
 
debian_version_from_upstream(self, upstream_tag_format, upstream_branch, commit='HEAD', epoch=None, debian_release=True)
Build the Debian version that a package based on upstream commit commit would carry taking into account a possible epoch.
Bool
has_pristine_tar_branch(self)
Whether the repo has a pristine-tar branch.
 
create_pristinetar_commits(self, upstream_tree, tarball, component_tarballs)
Create pristine-tar commits for a package with main tarball tarball and (optionl) component tarballs based on upstream_tree

Inherited from git.repository.GitRepository: archive, clean, collect_garbage, force_head, get_author_info, get_config, is_clean, is_empty, rev_parse, status

Inherited from object: __delattr__, __format__, __getattribute__, __hash__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __sizeof__, __str__, __subclasshook__

    Branches and Merging

Inherited from git.repository.GitRepository: abort_merge, branch_contains, create_branch, delete_branch, get_branch, get_local_branches, get_merge_base, get_merge_branch, get_remote_branches, get_upstream_branch, has_branch, is_fast_forward, merge, rename_branch, set_branch, set_upstream_branch, update_ref

Inherited from git.repository.GitRepository (private): _get_branches

    Tags

Inherited from git.repository.GitRepository: create_tag, delete_tag, describe, find_branch_tag, find_tag, get_tags, has_tag, move_tag, verify_tag

    Trees

Inherited from git.repository.GitRepository: checkout, get_obj_type, has_treeish, list_tree, make_tree, write_tree

    Remote Repositories

Inherited from git.repository.GitRepository: add_remote_repo, fetch, get_remote_repos, get_remotes, has_remote_repo, pull, push, push_tag, remove_remote_repo

    Files

Inherited from git.repository.GitRepository: add_files, list_files, remove_files, write_file

    Comitting

Inherited from git.repository.GitRepository: commit_all, commit_dir, commit_files, commit_staged, commit_tree

Inherited from git.repository.GitRepository (private): _commit

    Commit Information

Inherited from git.repository.GitRepository: get_commit_info, get_commits, get_subject, grep_log, show

    Patches

Inherited from git.repository.GitRepository: apply_patch, diff, diff_status, format_patches

    Submodules

Inherited from git.repository.GitRepository: add_submodule, get_submodules, has_submodules, update_submodules

Class Methods [hide private]
    Repository Creation

Inherited from git.repository.GitRepository: clone, create

Static Methods [hide private]
 
_build_legacy_tag(format, version)
Legacy tags (prior to 0.5.5) dropped epochs and didn't honor the '~'
 
version_to_tag(format, version)
Generate a tag from a given format and a version
 
_sanitize_version(version)
sanitize a version so git accepts it as a tag
 
tag_to_version(tag, format)
Extract the version from a tag

Inherited from git.repository.GitRepository: strip_sha1

Instance Variables [hide private]

Inherited from git.repository.GitRepository (private): _bare, _path

Properties [hide private]
  pristine_tar_branch
The name of the pristine-tar branch, whether it already exists or not.

Inherited from git.repository.GitRepository: bare, branch, git_dir, head, path, tags

Inherited from object: __class__

Method Details [hide private]

__init__(self, path)
(Constructor)

 

x.__init__(...) initializes x; see help(type(x)) for signature

Raises:
Overrides: object.__init__
(inherited documentation)

find_version(self, format, 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.

For legacy tags don't only check the tag itself but also the commit message, since the former wasn't injective until release 0.5.5. You only need to use this function if you also need to check for legacy tags.

Parameters:
  • format (str) - tag pattern
  • version (str) - debian version number
Returns: str
sha1 of the commit the tag references to

debian_version_from_upstream(self, upstream_tag_format, upstream_branch, commit='HEAD', epoch=None, debian_release=True)

 

Build the Debian version that a package based on upstream commit commit would carry taking into account a possible epoch.

Parameters:
  • upstream_tag_format (str) - the tag format on the upstream branch
  • upstream_branch (str) - the upstream branch
  • commit - the commit to search for the latest upstream version
  • epoch - an epoch to use
  • debian_release - If set to False don't append a Debian release number to the version number
Returns:
a new debian version
Raises:

_build_legacy_tag(format, version)
Static Method

 

Legacy tags (prior to 0.5.5) dropped epochs and didn't honor the '~'

>>> DebianGitRepository._build_legacy_tag('upstream/%(version)s', '1:2.0~3')
'upstream/2.0.3'

version_to_tag(format, version)
Static Method

 

Generate a tag from a given format and a version

%(version)s provides a clean version that works as a git tag.

%(hversion)s provides the same thing, but with '.' replaced with '-'. hversion is useful for upstreams with tagging policies that prohibit . characters.

>>> DebianGitRepository.version_to_tag("debian/%(version)s", "0:0~0")
'debian/0%0_0'
>>> DebianGitRepository.version_to_tag("libfoo-%(hversion)s", "1.8.1")
'libfoo-1-8-1'

_sanitize_version(version)
Static Method

 

sanitize a version so git accepts it as a tag

>>> DebianGitRepository._sanitize_version("0.0.0")
'0.0.0'
>>> DebianGitRepository._sanitize_version("0.0~0")
'0.0_0'
>>> DebianGitRepository._sanitize_version("0:0.0")
'0%0.0'
>>> DebianGitRepository._sanitize_version("0%0~0")
'0%0_0'

tag_to_version(tag, format)
Static Method

 

Extract the version from a tag

>>> DebianGitRepository.tag_to_version("upstream/1%2_3-4", "upstream/%(version)s")
'1:2~3-4'
>>> DebianGitRepository.tag_to_version("foo/2.3.4", "foo/%(version)s")
'2.3.4'
>>> DebianGitRepository.tag_to_version("foo/2.3.4", "upstream/%(version)s")

has_pristine_tar_branch(self)

 

Whether the repo has a pristine-tar branch.

Returns: Bool
True if the repo has pristine-tar commits already, False otherwise

create_pristinetar_commits(self, upstream_tree, tarball, component_tarballs)

 

Create pristine-tar commits for a package with main tarball tarball and (optionl) component tarballs based on upstream_tree

Parameters:
  • tarball - path to main tarball
  • component_tarballs - list of tuples of component name and path to additional tarball
  • upstream_tree - the treeish in the git repo to create the commits against

Property Details [hide private]

pristine_tar_branch

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

Get Method:
unreachable.pristine_tar_branch(self) - The name of the pristine-tar branch, whether it already exists or not.