1
0
mirror of https://github.com/openSUSE/osc.git synced 2025-08-22 22:48:51 +02:00

fix commit of files in meta mode

This commit is contained in:
2010-05-25 13:59:46 +02:00
parent 58c6b62f3c
commit 2ae9a9453a
2 changed files with 33 additions and 23 deletions

View File

@@ -2986,9 +2986,9 @@ Please submit there instead, or use --nodevelproject to force direct submission.
if opts.expand_link and p.islink() and not p.isexpanded(): if opts.expand_link and p.islink() and not p.isexpanded():
if p.haslinkerror(): if p.haslinkerror():
try: try:
rev = show_upstream_xsrcmd5(p.apiurl, p.prjname, p.name, revision=p.rev) rev = p.show_upstream_xsrcmd5()
except: except:
rev = show_upstream_xsrcmd5(p.apiurl, p.prjname, p.name, revision=p.rev, linkrev="base") rev = p.show_upstream_xsrcmd5(linkrev="base")
p.mark_frozen() p.mark_frozen()
else: else:
p.update(rev, service_files, opts.limit_size) p.update(rev, service_files, opts.limit_size)
@@ -4132,6 +4132,8 @@ Please submit there instead, or use --nodevelproject to force direct submission.
help='generate output in CSV (separated by |)') help='generate output in CSV (separated by |)')
@cmdln.option('', '--xml', action='store_true', @cmdln.option('', '--xml', action='store_true',
help='generate output in XML') help='generate output in XML')
@cmdln.option('-m', '--meta', action='store_true',
help='checkout out meta data instead of sources' )
def do_log(self, subcmd, opts, *args): def do_log(self, subcmd, opts, *args):
"""${cmd_name}: Shows the commit log of a package """${cmd_name}: Shows the commit log of a package
@@ -4144,6 +4146,7 @@ Please submit there instead, or use --nodevelproject to force direct submission.
args = slash_split(args) args = slash_split(args)
apiurl = self.get_api_url() apiurl = self.get_api_url()
meta = None
if len(args) == 0: if len(args) == 0:
wd = os.curdir wd = os.curdir
@@ -4157,8 +4160,11 @@ Please submit there instead, or use --nodevelproject to force direct submission.
project = args[0] project = args[0]
package = args[1] package = args[1]
if opts.meta:
meta = 1
rev, dummy = parseRevisionOption(opts.revision) rev, dummy = parseRevisionOption(opts.revision)
if rev and not checkRevision(project, package, rev, apiurl): if rev and not checkRevision(project, package, rev, apiurl, meta):
print >>sys.stderr, 'Revision \'%s\' does not exist' % rev print >>sys.stderr, 'Revision \'%s\' does not exist' % rev
sys.exit(1) sys.exit(1)
@@ -4168,7 +4174,7 @@ Please submit there instead, or use --nodevelproject to force direct submission.
if opts.xml: if opts.xml:
format = 'xml' format = 'xml'
log = '\n'.join(get_commitlog(apiurl, project, package, rev, format)) log = '\n'.join(get_commitlog(apiurl, project, package, rev, format, meta))
run_pager(log) run_pager(log)
@cmdln.option('-f', '--failed', action='store_true', @cmdln.option('-f', '--failed', action='store_true',

View File

@@ -920,7 +920,7 @@ class Package:
mode = os.stat(fn) mode = os.stat(fn)
if S_ISREG(mode[ST_MODE]): if S_ISREG(mode[ST_MODE]):
if verbose_validation: if verbose_validation:
print "run", fn print "osc runs source service:", fn
p = subprocess.Popen([fn, "--verbose"], close_fds=True) p = subprocess.Popen([fn, "--verbose"], close_fds=True)
else: else:
p = subprocess.Popen([fn], close_fds=True) p = subprocess.Popen([fn], close_fds=True)
@@ -1393,21 +1393,21 @@ rev: %s
def latest_rev(self): def latest_rev(self):
if self.islinkrepair(): if self.islinkrepair():
upstream_rev = show_upstream_xsrcmd5(self.apiurl, self.prjname, self.name, linkrepair=1) upstream_rev = show_upstream_xsrcmd5(self.apiurl, self.prjname, self.name, linkrepair=1, meta=self.meta)
elif self.islink() and self.isexpanded(): elif self.islink() and self.isexpanded():
if self.isfrozen() or self.ispulled(): if self.isfrozen() or self.ispulled():
upstream_rev = show_upstream_xsrcmd5(self.apiurl, self.prjname, self.name, linkrev=self.linkinfo.srcmd5) upstream_rev = show_upstream_xsrcmd5(self.apiurl, self.prjname, self.name, linkrev=self.linkinfo.srcmd5, meta=self.meta)
else: else:
try: try:
upstream_rev = show_upstream_xsrcmd5(self.apiurl, self.prjname, self.name) upstream_rev = show_upstream_xsrcmd5(self.apiurl, self.prjname, self.name, meta=self.meta)
except: except:
try: try:
upstream_rev = show_upstream_xsrcmd5(self.apiurl, self.prjname, self.name, linkrev=self.linkinfo.srcmd5) upstream_rev = show_upstream_xsrcmd5(self.apiurl, self.prjname, self.name, linkrev=self.linkinfo.srcmd5, meta=self.meta)
except: except:
upstream_rev = show_upstream_xsrcmd5(self.apiurl, self.prjname, self.name, linkrev="base") upstream_rev = show_upstream_xsrcmd5(self.apiurl, self.prjname, self.name, linkrev="base", meta=self.meta)
self.mark_frozen() self.mark_frozen()
else: else:
upstream_rev = show_upstream_rev(self.apiurl, self.prjname, self.name) upstream_rev = show_upstream_rev(self.apiurl, self.prjname, self.name, meta=self.meta)
return upstream_rev return upstream_rev
def update(self, rev = None, service_files = False, limit_size = None): def update(self, rev = None, service_files = False, limit_size = None):
@@ -2505,7 +2505,6 @@ def show_files_meta(apiurl, prj, pac, revision=None, expand=False, linkrev=None,
if linkrepair: if linkrepair:
query['emptylink'] = 1 query['emptylink'] = 1
f = http_GET(makeurl(apiurl, ['source', prj, pac], query=query)) f = http_GET(makeurl(apiurl, ['source', prj, pac], query=query))
# look for "too large" files according to size limit and mark them # look for "too large" files according to size limit and mark them
root = ET.fromstring(''.join(f.readlines())) root = ET.fromstring(''.join(f.readlines()))
for e in root.findall('entry'): for e in root.findall('entry'):
@@ -2515,13 +2514,13 @@ def show_files_meta(apiurl, prj, pac, revision=None, expand=False, linkrev=None,
return ET.tostring(root) return ET.tostring(root)
def show_upstream_srcmd5(apiurl, prj, pac, expand=False, revision=None): def show_upstream_srcmd5(apiurl, prj, pac, expand=False, revision=None, meta=None):
m = show_files_meta(apiurl, prj, pac, expand=expand, revision=revision) m = show_files_meta(apiurl, prj, pac, expand=expand, revision=revision, meta=meta)
return ET.fromstring(''.join(m)).get('srcmd5') return ET.fromstring(''.join(m)).get('srcmd5')
def show_upstream_xsrcmd5(apiurl, prj, pac, revision=None, linkrev=None, linkrepair=False): def show_upstream_xsrcmd5(apiurl, prj, pac, revision=None, linkrev=None, linkrepair=False, meta=None):
m = show_files_meta(apiurl, prj, pac, revision=revision, linkrev=linkrev, linkrepair=linkrepair) m = show_files_meta(apiurl, prj, pac, revision=revision, linkrev=linkrev, linkrepair=linkrepair, meta=meta)
try: try:
# only source link packages have a <linkinfo> element. # only source link packages have a <linkinfo> element.
li_node = ET.fromstring(''.join(m)).find('linkinfo') li_node = ET.fromstring(''.join(m)).find('linkinfo')
@@ -2536,8 +2535,8 @@ def show_upstream_xsrcmd5(apiurl, prj, pac, revision=None, linkrev=None, linkrep
return li.xsrcmd5 return li.xsrcmd5
def show_upstream_rev(apiurl, prj, pac): def show_upstream_rev(apiurl, prj, pac, meta=None):
m = show_files_meta(apiurl, prj, pac) m = show_files_meta(apiurl, prj, pac, meta=meta)
return ET.fromstring(''.join(m)).get('rev') return ET.fromstring(''.join(m)).get('rev')
@@ -3235,7 +3234,7 @@ def checkout_package(apiurl, project, package,
# before we create directories and stuff, check if the package actually # before we create directories and stuff, check if the package actually
# exists # exists
show_package_meta(apiurl, project, package) show_package_meta(apiurl, project, package, meta)
isfrozen = 0 isfrozen = 0
if expand_link: if expand_link:
@@ -3243,9 +3242,9 @@ def checkout_package(apiurl, project, package,
# if it is a link we use the xsrcmd5 as the revision to be # if it is a link we use the xsrcmd5 as the revision to be
# checked out # checked out
try: try:
x = show_upstream_xsrcmd5(apiurl, project, package, revision=revision) x = show_upstream_xsrcmd5(apiurl, project, package, revision=revision, meta=meta)
except: except:
x = show_upstream_xsrcmd5(apiurl, project, package, revision=revision, linkrev='base') x = show_upstream_xsrcmd5(apiurl, project, package, revision=revision, meta=meta, linkrev='base')
if x: if x:
isfrozen = 1 isfrozen = 1
if x: if x:
@@ -4032,9 +4031,14 @@ def print_jobhistory(apiurl, prj, current_package, repository, arch, format = 't
print '%s %-50s %-16s %-16s %-16s %-16s' % (endtime, package[0:49], reason[0:15], code[0:15], waitbuild, worker) print '%s %-50s %-16s %-16s %-16s %-16s' % (endtime, package[0:49], reason[0:15], code[0:15], waitbuild, worker)
def get_commitlog(apiurl, prj, package, revision, format = 'text'): def get_commitlog(apiurl, prj, package, revision, format = 'text', meta = None):
import time, locale import time, locale
u = makeurl(apiurl, ['source', prj, package, '_history'])
query = {}
if meta:
query['meta'] = 1
u = makeurl(apiurl, ['source', prj, package, '_history'], query)
f = http_GET(u) f = http_GET(u)
root = ET.parse(f).getroot() root = ET.parse(f).getroot()