Replace GitTag by GitRepository.create_tag()
authorGuido Günther <agx@sigxcpu.org>
Mon, 24 Oct 2011 12:12:59 +0000 (14:12 +0200)
committerGuido Günther <agx@sigxcpu.org>
Wed, 26 Oct 2011 07:44:24 +0000 (09:44 +0200)
gbp/command_wrappers.py
gbp/git.py
git-buildpackage
git-import-dsc
git-import-orig

index 33d6823..8d942b8 100644 (file)
@@ -230,29 +230,6 @@ class GitCommand(Command):
         self.run_error = "Couldn't run git %s" % cmd
 
 
-# FIXME: move to gbp.git.create_tag
-class GitTag(GitCommand):
-    """Wrap git tag"""
-    def __init__(self, sign_tag=False, keyid=None):
-        GitCommand.__init__(self,'tag')
-        self.sign_tag = sign_tag
-        self.keyid = keyid
-
-    def __call__(self, version, msg="Tagging %(version)s", commit=None):
-        self.run_error = 'Couldn\'t tag "%s"' % (version,)
-        if self.sign_tag:
-            if self.keyid:
-                sign_opts = [ '-u', self.keyid ]
-            else:
-                sign_opts = [ '-s' ]
-        else:
-            sign_opts = []
-        cmd = sign_opts + [ '-m', msg % locals(), version]
-        if commit:
-            cmd += [ commit ]
-        GitCommand.__call__(self, cmd)
-
-
 def copy_from(orig_dir, filters=[]):
     """
     copy a source tree over via tar
index 7566635..34d8140 100644 (file)
@@ -274,6 +274,30 @@ class GitRepository(object):
         self._git_command("tag", [ new, old ])
         self.remove_tag(old)
 
+    def create_tag(self, name, msg=None, commit=None, sign=False, keyid=None):
+        """
+        Create a new tag.
+
+        @param name: the tag's name
+        @type name: string
+        @param msg: The tag message.
+        @type msg: string
+        @param commit: the commit or object to create the tag at, default
+            is I{HEAD}
+        @type commit: string
+        @param sign: Whether to sing the tag
+        @type sign: bool
+        @param keyid: the GPG keyid used to sign the tag
+        @type keyid: string
+        """
+        args = []
+        args += [ '-m', msg ] if msg else []
+        if sign:
+            args += [ '-u', keyid ] if keyid else [ '-s' ]
+        args += [ name ]
+        args += [ commit ] if commit else []
+        self._git_command("tag", args)
+
     def get_branch(self):
         """on what branch is the current working copy"""
         for line in self.__git_getoutput('branch', [ '--no-color' ])[0]:
index 7b5dca3..beed984 100755 (executable)
@@ -28,7 +28,7 @@ import tempfile
 import shutil
 import gbp.deb as du
 from gbp.git import (GitRepositoryError, GitRepository, build_tag)
-from gbp.command_wrappers import (GitTag, Command,
+from gbp.command_wrappers import (Command,
                                   RunAtCommand, CommandExecFailed, PristineTar,
                                   RemoveTree, CatenateTarArchive)
 from gbp.config import (GbpOptionParser, GbpOptionGroup)
@@ -539,8 +539,8 @@ def main(argv):
             tag = build_tag(options.debian_tag, version)
             if options.retag and repo.has_tag(tag):
                 repo.remove_tag(tag)
-            GitTag(options.sign_tags, options.keyid)(tag,
-                   msg="Debian release %s" % version)
+            repo.create_tag(name=tag, msg="Debian release %s" % version,
+                            sign=options.sign_tags, keyid=options.keyid)
             if options.posttag:
                 sha = repo.rev_parse("%s^{}" % tag)
                 Command(options.posttag, shell=True,
index ac19757..782c9ea 100755 (executable)
@@ -83,8 +83,6 @@ def apply_deb_tgz(deb_tgz):
 
 def apply_debian_patch(repo, unpack_dir, src, options, parents):
     """apply the debian patch and tag appropriately"""
-    gitTag = gbpc.GitTag(options.sign_tags, options.keyid)
-
     try:
         os.chdir(unpack_dir)
 
@@ -111,9 +109,11 @@ def apply_debian_patch(repo, unpack_dir, src, options, parents):
                                  committer=dict(name=[None, author][options.author_committer],
                                                 email=[None, email][options.author_committer],
                                                 date=[None, date][options.author_committer_date]))
-
-        gitTag(build_tag(options.debian_tag, src.version),
-               msg="Debian release %s" % src.version, commit=commit)
+        repo.create_tag(build_tag(options.debian_tag, src.version),
+                        msg="Debian release %s" % src.version,
+                        commit=commit,
+                        sign=options.sign_tags,
+                        keyid=options.keyid)
     except gbpc.CommandExecFailed:
         gbp.log.err("Failed to import Debian package")
         raise GbpError
@@ -211,8 +211,6 @@ def main(argv):
 
     options, args = parse_args(argv)
 
-    gitTag = gbpc.GitTag(options.sign_tags, options.keyid)
-
     try:
         if len(args) != 1:
             gbp.log.err("Need to give exactly one package to import. Try --help.")
@@ -284,8 +282,11 @@ def main(argv):
                 commit = repo.commit_dir(upstream.unpacked,
                                          "Imported %s" % msg,
                                          branch)
-                gitTag(version=tag, msg=msg, commit=commit)
-
+                repo.create_tag(name=tag,
+                                msg=msg,
+                                commit=commit,
+                                sign=options.sign_tags,
+                                keyid=options.keyid)
                 if not src.native:
                     if is_empty:
                         repo.create_branch(options.upstream_branch, commit)
index d9bc077..0c11371 100755 (executable)
@@ -389,9 +389,11 @@ def main(argv):
                     gbp.log.warn("'%s' not an archive, skipping pristine-tar" % source.path)
 
             tag = build_tag(options.upstream_tag, version)
-            gbpc.GitTag(options.sign_tags, options.keyid)(tag,
-                                                          msg="Upstream version %s" % version,
-                                                          commit=commit)
+            repo.create_tag(name=tag,
+                            msg="Upstream version %s" % version,
+                            commit=commit,
+                            sign=options.sign_tags,
+                            keyid=options.keyid)
             if is_empty:
                 repo.create_branch(options.upstream_branch, rev=commit)
                 repo.force_head(options.upstream_branch, hard=True)