super(RpmGitRepository, self).__init__(path)
self.pristine_tar = PristineTar(self)
- def find_version(self, format, version, vendor="vendor"):
+ 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
@param format: tag pattern
@type format: C{str}
- @param version: rpm version components ('epoch', 'upstreamversion', 'release',...)
- @type version: C{dict} of C{str}
- @param vendor: distribution vendor
- @type vendor: C{str}
+ @param str_fields: arguments for format string ('upstreamversion', 'release', 'vendor'...)
+ @type str_fields: C{dict} of C{str}
@return: sha1 of the commit the tag references to
"""
- tag = self.version_to_tag(format, version, vendor)
+ tag = self. version_to_tag(format, str_fields)
if self.has_tag(tag): # new tags are injective
# dereference to a commit object
return self.rev_parse("%s^0" % tag)
return None
@staticmethod
- def version_to_tag(format, version, vendor="vendor"):
+ def version_to_tag(format, str_fields):
"""
Generate a tag from a given format and a version
@param format: tag pattern
@type format: C{str}
- @param version: rpm version components ('epoch', 'upstreamversion', 'release',...)
- @type version: C{dict} of C{str}
- @param vendor: distribution vendor
- @type vendor: C{str}
+ @param str_fields: arguments for format string ('upstreamversion', 'release', 'vendor'...)
+ @type str_fields: C{dict} of C{str}
@return: 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'), "myvendor")
+ >>> RpmGitRepository.version_to_tag("%(vendor)s/v%(version)s", dict(upstreamversion='1.0', release='2', vendor="myvendor"))
'myvendor/v1.0-2'
"""
- version_tag = format % dict(version,
- version=RpmPkgPolicy.compose_full_version(version),
- vendor=vendor)
+ version_tag = format % dict(str_fields,
+ version=RpmPkgPolicy.compose_full_version(str_fields))
return RpmGitRepository._sanitize_tag(version_tag)
@staticmethod
def get_upstream_tree(repo, spec, options):
"""Determine the upstream tree from the given options"""
if options.upstream_tree.upper() == 'TAG':
- upstream_tree = repo.version_to_tag(options.upstream_tag, dict(upstreamversion=spec.upstreamversion), "Upstream")
+ tag_str_fields = dict(upstreamversion=spec.upstreamversion, vendor="Upstream")
+ upstream_tree = repo.version_to_tag(options.upstream_tag, tag_str_fields)
elif options.upstream_tree.upper() == 'BRANCH':
if not repo.has_branch(options.upstream_branch):
raise GbpError("%s is not a valid branch" % options.upstream_branch)
# Tag (note: tags the exported version)
if options.tag or options.tag_only:
gbp.log.info("Tagging %s" % rpm.RpmPkgPolicy.compose_full_version(spec.version))
- tag = repo.version_to_tag(options.packaging_tag, spec.version, options.vendor)
+ tag_str_fields = dict(spec.version, vendor=options.vendor)
+ tag = repo.version_to_tag(options.packaging_tag, tag_str_fields)
if options.retag and repo.has_tag(tag):
repo.delete_tag(tag)
repo.create_tag(name=tag, msg="%s release %s" % (options.vendor,
gbp.log.info("Pristine-tar: commiting %s" % pristine_orig)
repo.pristine_tar.commit(pristine_orig, options.upstream_branch)
- tag = repo.version_to_tag(options.upstream_tag, dict(upstreamversion=version), "Upstream")
+ tag_str_fields = dict(upstreamversion=version, vendor="Upstream")
+ tag = repo.version_to_tag(options.upstream_tag, tag_str_fields)
repo.create_tag(name=tag,
msg="Upstream version %s" % version,
commit=commit,
return committer
-def move_tag_stamp(repo, format, version, vendor):
+def move_tag_stamp(repo, format, tag_str_fields):
"Move tag out of the way appending the current timestamp"
- old = repo.version_to_tag(format, version, vendor)
+ old = repo.version_to_tag(format, tag_str_fields)
new = repo.version_to_tag('%s~%d' % (format, int(time.time())),
- version, vendor)
+ tag_str_fields)
repo.move_tag(old, new)
upstream = None
format = [(options.upstream_tag, "Upstream"), (options.packaging_tag, options.vendor)][options.native]
- tag = repo.version_to_tag(format[0], dict(upstreamversion=upstream_version), options.vendor)
+ tag_str_fields = dict(pkgver, vendor=options.vendor)
+ tag = repo.version_to_tag(format[0], tag_str_fields)
- if repo.find_version(options.packaging_tag, pkgver, options.vendor):
+ if repo.find_version(options.packaging_tag, tag_str_fields):
gbp.log.warn("Version %s already imported." % RpmPkgPolicy.compose_full_version(pkgver))
if options.allow_same_version:
gbp.log.info("Moving tag of version '%s' since import forced" % RpmPkgPolicy.compose_full_version(pkgver))
- move_tag_stamp(repo, options.packaging_tag, pkgver, options.vendor)
+ move_tag_stamp(repo, options.packaging_tag, tag_str_fields)
else:
raise SkipImport
# Import upstream sources
if upstream:
- upstream_commit = repo.find_version(format[0], dict(upstreamversion=upstream_version), options.vendor)
+ upstream_commit = repo.find_version(format[0], tag_str_fields)
if not upstream_commit:
gbp.log.info("Tag %s not found, importing %s tarball" % (tag, format[1]))
"\nAlso check the --create-missing-branches option.")
raise GbpError
- tag = repo.version_to_tag(options.packaging_tag, pkgver, options.vendor)
+ tag_str_fields = dict(pkgver, vendor=options.vendor)
+ tag = repo.version_to_tag(options.packaging_tag, tag_str_fields)
msg = "%s release %s" % (options.vendor, RpmPkgPolicy.compose_full_version(pkgver))
if options.orphan_packaging or not upstream:
raise GbpError, "Can't parse spec"
# Find upstream version
- upstream_commit = repo.find_version(options.upstream_tag, dict(upstreamversion=spec.upstreamversion), "Upstream")
+ tag_str_fields = dict(upstreamversion=spec.upstreamversion, vendor="Upstream")
+ upstream_commit = repo.find_version(options.upstream_tag, tag_str_fields)
if not upstream_commit:
raise GbpError, ("Couldn't find upstream version %s. Don't know on what base to import." % spec.upstreamversion)
raise GbpError, "Can't parse spec"
# Find upstream version
- commit = repo.find_version(options.upstream_tag, dict(upstreamversion=spec.upstreamversion), "Upstream")
+ tag_str_fields = dict(upstreamversion=spec.upstreamversion, vendor="Upstream")
+ commit = repo.find_version(options.upstream_tag, tag_str_fields)
if commit:
commits=[commit]
else:
raise GbpError, "Can't parse spec"
# Find upstream version
- upstream_commit = repo.find_version(options.upstream_tag, dict(upstreamversion=spec.upstreamversion), "Upstream")
+ tag_str_fields = dict(upstreamversion=spec.upstreamversion, vendor="Upstream")
+ upstream_commit = repo.find_version(options.upstream_tag, tag_str_fields)
if not upstream_commit:
raise GbpError, ("Couldn't find upstream version %s. Don't know on what base to import." % spec.upstreamversion)