git-buildpackage: Add upstream-tree option
authorRicardo Salveti de Araujo <ricardo.salveti@canonical.com>
Wed, 13 Apr 2011 06:33:14 +0000 (03:33 -0300)
committerGuido Günther <agx@sigxcpu.org>
Sat, 23 Jul 2011 13:51:21 +0000 (15:51 +0200)
to specify where the upstream tarball should be created from. The
default is to create the upstream tarball from the exact tag and fail
otherwise. To create the upstream tarball from the tip of the upstream
branch use 'branch'.

Based on a patch by Ricardo Salveti de Araujo

docs/manpages/git-buildpackage.sgml
gbp/config.py
git-buildpackage

index 78c7aca..f79ad6a 100644 (file)
@@ -41,6 +41,7 @@
       <arg><option>--git-debian-tag=</option><replaceable>tag-format</replaceable></arg>
       <arg><option>--git-force-create</option></arg>
       <arg><option>--git-no-create-orig</option></arg>
+      <arg><option>--git-upstream-tree=</option><replaceable>[tag|branch]</replaceable></arg>
       <arg><option>--git-tarball-dir=</option><replaceable>directory</replaceable></arg>
       <arg><option>--git-compression=</option><replaceable>type</replaceable></arg>
       <arg><option>--git-compression-level=</option><replaceable>level</replaceable></arg>
         </listitem>
       </varlistentry>
       <varlistentry>
+        <term><option>--git-upstream-tree=</option><replaceable>[tag|branch]</replaceable>
+        </term>
+        <listitem>
+         <para>How to find the upstream sources used to generate the tarball.
+         <replaceable>tag</replaceable> looks at a tag corresponding to the
+         version in the changelog. <replaceable>branch</replaceable> looks at
+         the upstream branch given via the <option>--git-upstream-branch</option>
+         option. This doesn't have any effect if <option>--git-pristine-tar</option>
+         is being used.
+         </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
         <term><option>--git-tarball-dir=</option><replaceable>directory</replaceable>
         </term>
         <listitem>
index d4ed4b4..be20784 100644 (file)
@@ -59,6 +59,7 @@ class GbpOptionParser(OptionParser):
                  'cleaner'         : 'debuild -d clean',
                  'debian-branch'   : 'master',
                  'upstream-branch' : 'upstream',
+                 'upstream-tree'   : 'tag',
                  'pristine-tar'    : 'False',
                  'filter-pristine-tar' : 'False',
                  'sign-tags'       : 'False',
@@ -114,6 +115,8 @@ class GbpOptionParser(OptionParser):
                   "branch the Debian package is being developed on, default is '%(debian-branch)s'",
              'upstream-branch':
                   "upstream branch, default is '%(upstream-branch)s'",
+             'upstream-tree':
+                  "where to generate the upstream tarball from (tag or branch), default is '%(upstream-tree)s'",
              'debian-tag':
                   "format string for debian tags, default is '%(debian-tag)s'",
              'upstream-tag':
index 31fc6ce..676129d 100755 (executable)
@@ -1,7 +1,7 @@
 #!/usr/bin/python -u
 # vim: set fileencoding=utf-8 :
 #
-# (C) 2006-2010 Guido Guenther <agx@sigxcpu.org>
+# (C) 2006-2011 Guido Guenther <agx@sigxcpu.org>
 #    This program is free software; you can redistribute it and/or modify
 #    it under the terms of the GNU General Public License as published by
 #    the Free Software Foundation; either version 2 of the License, or
@@ -209,14 +209,12 @@ def pristine_tar_build_orig(repo, cp, output_dir, options):
 
 def git_archive_build_orig(repo, cp, output_dir, options):
     """build orig using git-archive"""
-    # --upstream-branch was given on the command line, so use this:
-    if options.upstream_branch != GbpOptionParser.defaults['upstream-branch']:
+    if options.upstream_tree == 'tag':
+        upstream_tree = build_tag(options.upstream_tag, cp['Upstream-Version'])
+    elif options.upstream_tree == 'branch':
         upstream_tree = options.upstream_branch
     else:
-        upstream_tree = build_tag(options.upstream_tag, cp['Upstream-Version'])
-        # fall back to the upstream-branch tip if the tag doesn't exist
-        if not repo.has_treeish(upstream_tree):
-            upstream_tree = GbpOptionParser.defaults['upstream-branch']
+        raise GbpError, "Unknown value %s" % options.upstream_tree
     gbp.log.info("%s does not exist, creating from '%s'" % (du.orig_file(cp,
                                                             options.comp_type),
                                                             upstream_tree))
@@ -361,6 +359,7 @@ def parse_args(argv, prefix):
     tag_group.add_config_file_option(option_name="keyid", dest="keyid")
     tag_group.add_config_file_option(option_name="debian-tag", dest="debian_tag")
     tag_group.add_config_file_option(option_name="upstream-tag", dest="upstream_tag")
+    orig_group.add_config_file_option(option_name="upstream-tree", dest="upstream_tree")
     orig_group.add_boolean_config_file_option(option_name="pristine-tar", dest="pristine_tar")
     orig_group.add_config_file_option(option_name="force-create", dest="force_create",
                       help="force creation of orig.tar.gz", action="store_true")