allow setting the bug-closing meta tag to look for
authorGuido Guenther <agx@sigxcpu.org>
Fri, 15 Aug 2008 10:33:48 +0000 (12:33 +0200)
committerGuido Guenther <agx@sigxcpu.org>
Fri, 15 Aug 2008 12:28:21 +0000 (14:28 +0200)
this way we can generate bug-closing entries for different BTSs such as
Debian or Launchpad.

gbp/config.py
git-dch

index b4d7d2e810b1e835f1223b842f7c7705630aa440..c915c99cebb1c56b40b70a4e275fffed859d005e 100644 (file)
@@ -41,6 +41,7 @@ class GbpOptionParser(OptionParser):
                  'tarball-dir'     : '',
                  'ignore-new'      : 'False',
                  'meta'            : 'False',
+                 'meta-closes'     : 'Closes|LP',
                  'id-length'       : '0',
                  'no-dch'          : 'False',
              }
diff --git a/git-dch b/git-dch
index d0dad92b11784ce7643fddce8be34f8586e7cdda..ea732eb5f41c2407145ac7028b3cf48947e3d418 100755 (executable)
--- a/git-dch
+++ b/git-dch
@@ -154,12 +154,15 @@ def get_author(commit):
             return m.group('author'), m.group('email')
 
 
+
 def parse_commit(repo, commitid, options):
     """parse a commit and return message and author"""
     msg = ''
     thanks = ''
     closes = ''
-    bugs = []
+    bugs = {}
+    bts_closes = re.compile(r'(?P<bts>%s):\s+#[0-9]+' % options.meta_closes)
+    bts_bug = re.compile(r'#[0-9]+')
 
     commit = repo.show(commitid)
     author, email = get_author(commit)
@@ -168,8 +171,13 @@ def parse_commit(repo, commitid, options):
     for line in commit:
         if line.startswith('    '): # commit body
             line = line[4:]
-            if line.startswith('Closes: '):
-                bugs += [ line.split(' ', 1)[1].strip() ]
+            m = bts_closes.match(line)
+            if m:
+                nums = bts_bug.findall(line)
+                try:
+                    bugs[m.group('bts')] += nums
+                except KeyError:
+                    bugs[m.group('bts')] = nums
             elif line.startswith('Thanks: '):
                 thanks = line.split(' ', 1)[1].strip()
             else: # normal commit message
@@ -181,10 +189,10 @@ def parse_commit(repo, commitid, options):
         elif line.startswith('diff '):
             break
     if options.meta:
-        if bugs:
-            closes = '(Closes: %s)' % ', '.join(bugs)
+        for bts in bugs:
+            closes += '(%s: %s) ' % (bts, ', '.join(bugs[bts]))
         if thanks:
-            thanks = ' - thanks to %s' % thanks
+            thanks = '- thanks to %s' % thanks
         msg += closes + thanks
     if options.idlen:
         msg = "[%s] " % commitid[0:options.idlen] + msg
@@ -243,6 +251,8 @@ def main(argv):
                       help="mark as snapshot build")
     commit_group.add_config_file_option(option_name="meta", dest="meta",
                       help="parse meta tags in commit messages, default is '%(meta)s'", action="store_true")
+    commit_group.add_config_file_option(option_name="meta-closes", dest="meta_closes",
+                      help="Meta tags for the bts close commands, default is '%(meta-closes)s'")
     commit_group.add_option("--full", action="store_false", dest="short", default=True,
                       help="include the full commit message instead of only the first line")
     commit_group.add_config_file_option(option_name="id-length", dest="idlen",