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 78c7aca78d973d50112e182ae002b04bb1e60519..f79ad6a29d4916785f58c0666a843d8c67c514c4 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>
           copy as is.</para>
         </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>
index d4ed4b49c870d92a0a9de08dbd92f42c7b470aad..be20784f4c2c21cdfdb4628dd3364c26f9fc0fb4 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 31fc6ce5d16aab26d70a305cdd2c4cbcfce8e75a..676129da5604d2f50abd8c28f0cf06a85765f8a3 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")