Use name and email from git
authorRobie Basak <rb-oss-1@justgohome.co.uk>
Mon, 29 Dec 2008 16:03:04 +0000 (16:03 +0000)
committerGuido Guenther <agx@sigxcpu.org>
Mon, 29 Dec 2008 18:11:46 +0000 (19:11 +0100)
Closes: #509867
docs/manpages/git-dch.sgml
gbp/config.py
gbp/git_utils.py
git-dch

index be23906bc494cb949faabf2cacdcf0b685d1e6ca..91a97b6ab5b430522b3ed41fe671e3ca8b6d3e3c 100644 (file)
@@ -33,6 +33,7 @@
       <arg><option>--meta-closes=bug-close-tags</option></arg>
       <arg><option>--snapshot-number=</option><replaceable>expression</replaceable></arg>
       <arg><option>--git-log=</option><replaceable>git-log-options</replaceable></arg>
+      <arg><option>--git-author</option></arg>
       <arg choice="plain"><replaceable>[path1 path2]</replaceable></arg>
     </cmdsynopsis>
   </refsynopsisdiv>
          all.</para>
         </listitem>
       </varlistentry>
+      <varlistentry>
+        <term><option>--git-author</option>
+        </term>
+        <listitem>
+          <para>Use user.name and user.email from <application>git-config</application>(1) for changelog trailer</para>
+        </listitem>
+      </varlistentry>
     </variablelist>
   </refsect1>
   <refsect1>
index cb524df8e85646c01373167179d65793a08319cd..0f167e2a05a4ce0bd19b6abe2c5e887fda1e41d6 100644 (file)
@@ -46,6 +46,7 @@ class GbpOptionParser(OptionParser):
                  'meta-closes'     : 'Closes|LP',
                  'id-length'       : '0',
                  'no-dch'          : 'False',
+                 'git-author'      : 'False',
              }
     help = {
              'debian-branch':
@@ -66,6 +67,8 @@ class GbpOptionParser(OptionParser):
                   "use pristine-tar to create .orig.tar.gz, default is '%(pristine-tar)s'",
              'filter':
                   "files to filter out during import (can be given multiple times)",
+             'git-author':
+                  "use name and email from git-config for changelog trailer, default is '%(git-author)s'"
            }
     config_files = [ '/etc/git-buildpackage/gbp.conf',
                      os.path.expanduser('~/.gbp.conf'),
index da8884e2b7772b7338cd3035308d08d27f6aafe4..ce4ebed92908988b19c99b7194f94b3820f81dd5 100644 (file)
@@ -153,6 +153,12 @@ class GitRepository(object):
             GitRm(verbose=verbose)(files)
         return not self.is_clean()[0]
 
+    def get_config(self, name):
+        """Gets the config value associated with name"""
+        self.__check_path()
+        value, ret = self.__git_getoutput('config', [ name ])
+        if ret: raise KeyError
+        return value[0][:-1] # first line with \n ending removed
 
 def create_repo(path):
     """create a repository at path"""
diff --git a/git-dch b/git-dch
index 3ca423dfb409b26eb555c61b005dda5a053d1322..b426a60d2d6f401b1cb3cdedd6fae11f2d768e86 100755 (executable)
--- a/git-dch
+++ b/git-dch
@@ -82,11 +82,19 @@ def add_changelog_section(msg, distribution, author=None, email=None, version=No
     spawn_dch(msg=msg, newversion= True, version=version, author=author, email=email, distribution=distribution)
 
 
-def fixup_trailer():
+def fixup_trailer(repo, git_author=False):
     """fixup the changelog trailer's comitter and email address - it might
     otherwise point to the last git committer instead of the person creating
     the changelog"""
-    spawn_dch(msg='')
+    author = email = None
+    if git_author:
+        try: author = repo.get_config('user.name')
+        except KeyError: pass
+
+        try: email = repo.get_config('user.email')
+        except KeyError: pass
+
+    spawn_dch(msg='', author=author, email=email)
 
 
 def head_commit():
@@ -279,6 +287,7 @@ def main(argv):
                       help="mark as snapshot build")
     version_group.add_option("-N", "--new-version", dest="new_version",
                       help="use this as base for the new version number")
+    version_group.add_config_file_option(option_name="git-author", dest="git_author", action="store_true")
     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",
@@ -355,7 +364,7 @@ def main(argv):
 
         if commits:
             shortlog_to_dch(repo, commits, options)
-            fixup_trailer()
+            fixup_trailer(repo, git_author=options.git_author)
         elif not first_commit:
             print "No changes detected from %s to %s." % (since, until)