add --commit option for gbs build, remotebuild, and export, #83
authorZhang Qiang <qiang.z.zhang@intel.com>
Sat, 7 Jul 2012 06:01:54 +0000 (14:01 +0800)
committerZhang Qiang <qiang.z.zhang@intel.com>
Sat, 7 Jul 2012 06:08:33 +0000 (14:08 +0800)
gitbuildsys/cmd_build.py
gitbuildsys/cmd_export.py
gitbuildsys/cmd_remotebuild.py
tools/gbs

index b0f667b..438fb8e 100644 (file)
@@ -238,6 +238,8 @@ def do(opts, args):
         repo = RpmGitRepository(workdir)
         if repo.get_branch() is None:
             msger.error('currently not on a branch')
+        if opts.commit:
+            repo.rev_parse(opts.commit)
     except GitRepositoryError, err:
         msger.error(str(err))
 
@@ -386,6 +388,7 @@ def do(opts, args):
     if spec.orig_file:
         with utils.Workdir(workdir):
             relative_spec = specfile.replace('%s/' % workdir, '')
+            commit = opts.commit or 'HEAD'
             msger.info('export tar ball and packaging files ... ')
             try:
                 if gbp_build(["argv[0] placeholder", "--git-export-only",
@@ -393,7 +396,7 @@ def do(opts, args):
                               "--git-export-dir=%s" % export_dir,
                               "--git-packaging-dir=packaging",
                               "--git-specfile=%s" % relative_spec,
-                              "--git-export=%s" % 'HEAD']):
+                              "--git-export=%s" % commit]):
                     msger.error("Failed to get packaging info from git tree")
             except GitRepositoryError, excobj:
                 msger.error("Repository error: %s" % excobj)
index 65bd97f..81c25db 100644 (file)
@@ -61,6 +61,8 @@ def do(opts, args):
         repo = RpmGitRepository(workdir)
         if repo.get_branch() is None:
             msger.error('currently not on a branch')
+        if opts.commit:
+            repo.rev_parse(opts.commit)
     except GitRepositoryError, err:
         msger.error(str(err))
 
@@ -93,6 +95,7 @@ def do(opts, args):
     msger.info('generate tar ball: %s' % tarball)
 
     with utils.Workdir(workdir):
+        commit = opts.commit or 'HEAD'
         relative_spec = specfile.replace('%s/' % workdir, '')
         try:
             if gbp_build(["argv[0] placeholder", "--git-export-only",
@@ -100,7 +103,7 @@ def do(opts, args):
                           "--git-export-dir=%s" % outdir,
                           "--git-packaging-dir=packaging",
                           "--git-specfile=%s" % relative_spec,
-                          "--git-export=%s" % 'HEAD']):
+                          "--git-export=%s" % commit]):
                 msger.error("Failed to get packaging info from git tree")
         except GitRepositoryError, excobj:
             msger.error("Repository error: %s" % excobj)
index 968cfb9..f0bb505 100644 (file)
@@ -76,6 +76,8 @@ def do(opts, args):
         repo = repository.GitRepository(workdir)
         if repo.get_branch() is None:
             msger.error('currently not on a branch')
+        if opts.commit:
+            repo.rev_parse(opts.commit)
     except repository.GitRepositoryError, err:
         msger.error(str(err))
 
index 94cfb6a..6191573 100755 (executable)
--- a/tools/gbs
+++ b/tools/gbs
@@ -124,6 +124,10 @@ class Gbs(cmdln.Cmdln):
                   default=None,
                   dest='spec',
                   help='Specify a spec file to use')
+    @cmdln.option('-c', '--commit',
+                  default=None,
+                  dest='commit',
+                  help='Specify a commit ID to export')
     def do_export(self, _subcmd, opts, *args):
         """${cmd_name}: export files and prepare for build
 
@@ -183,6 +187,10 @@ class Gbs(cmdln.Cmdln):
                   help='Do incremental build, which needs support of spec file,'
                        ' and tar ball unpack stage should be enabled with the '
                        'condition of RPM macro RSYNCDONE')
+    @cmdln.option('-c', '--commit',
+                  default=None,
+                  dest='commit',
+                  help='Specify a commit ID to build')
     @cmdln.option('--spec',
                   default=None,
                   dest='spec',