##// END OF EJS Templates
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev...
Brendan Cully -
r3183:0e6b58c7 default
parent child Browse files
Show More
@@ -1071,25 +1071,38 b' class queue:'
1071 self.explain_pushable(i)
1071 self.explain_pushable(i)
1072 return unapplied
1072 return unapplied
1073
1073
1074 def qseries(self, repo, missing=None, summary=False):
1074 def qseries(self, repo, missing=None, start=0, length=0, status=None,
1075 start = self.series_end(all_patches=True)
1075 summary=False):
1076 def displayname(patchname):
1077 if summary:
1078 msg = self.readheaders(patchname)[0]
1079 msg = msg and ': ' + msg[0] or ': '
1080 else:
1081 msg = ''
1082 return '%s%s' % (patchname, msg)
1083
1084 def pname(i):
1085 if status == 'A':
1086 return self.applied[i].name
1087 else:
1088 return self.series[i]
1089
1090 unapplied = self.series_end(all_patches=True)
1091 if not length:
1092 length = len(self.series) - start
1076 if not missing:
1093 if not missing:
1077 for i in range(len(self.series)):
1094 for i in range(start, start+length):
1078 patch = self.series[i]
1095 pfx = ''
1096 patch = pname(i)
1079 if self.ui.verbose:
1097 if self.ui.verbose:
1080 if i < start:
1098 if i < unapplied:
1081 status = 'A'
1099 status = 'A'
1082 elif self.pushable(i)[0]:
1100 elif self.pushable(i)[0]:
1083 status = 'U'
1101 status = 'U'
1084 else:
1102 else:
1085 status = 'G'
1103 status = 'G'
1086 self.ui.write('%d %s ' % (i, status))
1104 pfx = '%d %s ' % (i, status)
1087 if summary:
1105 self.ui.write('%s%s\n' % (pfx, displayname(patch)))
1088 msg = self.readheaders(patch)[0]
1089 msg = msg and ': ' + msg[0] or ': '
1090 else:
1091 msg = ''
1092 self.ui.write('%s%s\n' % (patch, msg))
1093 else:
1106 else:
1094 msng_list = []
1107 msng_list = []
1095 for root, dirs, files in os.walk(self.path):
1108 for root, dirs, files in os.walk(self.path):
@@ -1102,9 +1115,8 b' class queue:'
1102 msng_list.append(fl)
1115 msng_list.append(fl)
1103 msng_list.sort()
1116 msng_list.sort()
1104 for x in msng_list:
1117 for x in msng_list:
1105 if self.ui.verbose:
1118 pfx = self.ui.verbose and ('D ') or ''
1106 self.ui.write("D ")
1119 self.ui.write("%s%s\n" % (pfx, displayname(x)))
1107 self.ui.write("%s\n" % x)
1108
1120
1109 def issaveline(self, l):
1121 def issaveline(self, l):
1110 if l.name == '.hg.patches.save.line':
1122 if l.name == '.hg.patches.save.line':
@@ -1227,17 +1239,6 b' class queue:'
1227 return next(end + 1)
1239 return next(end + 1)
1228 return next(end)
1240 return next(end)
1229
1241
1230 def qapplied(self, repo, patch=None):
1231 if patch and patch not in self.series:
1232 raise util.Abort(_("patch %s is not in series file") % patch)
1233 if not patch:
1234 end = len(self.applied)
1235 else:
1236 end = self.series.index(patch) + 1
1237 for x in xrange(end):
1238 p = self.appliedname(x)
1239 self.ui.write("%s\n" % p)
1240
1241 def appliedname(self, index):
1242 def appliedname(self, index):
1242 pname = self.applied[index].name
1243 pname = self.applied[index].name
1243 if not self.ui.verbose:
1244 if not self.ui.verbose:
@@ -1246,36 +1247,6 b' class queue:'
1246 p = str(self.series.index(pname)) + " " + pname
1247 p = str(self.series.index(pname)) + " " + pname
1247 return p
1248 return p
1248
1249
1249 def top(self, repo):
1250 if len(self.applied):
1251 p = self.appliedname(-1)
1252 self.ui.write(p + '\n')
1253 else:
1254 self.ui.write("No patches applied\n")
1255 return 1
1256
1257 def next(self, repo):
1258 end = self.series_end()
1259 if end == len(self.series):
1260 self.ui.write("All patches applied\n")
1261 return 1
1262 else:
1263 p = self.series[end]
1264 if self.ui.verbose:
1265 self.ui.write("%d " % self.series.index(p))
1266 self.ui.write(p + '\n')
1267
1268 def prev(self, repo):
1269 if len(self.applied) > 1:
1270 p = self.appliedname(-2)
1271 self.ui.write(p + '\n')
1272 elif len(self.applied) == 1:
1273 self.ui.write("Only one patch applied\n")
1274 return 1
1275 else:
1276 self.ui.write("No patches applied\n")
1277 return 1
1278
1279 def qimport(self, repo, files, patchname=None, rev=None, existing=None,
1250 def qimport(self, repo, files, patchname=None, rev=None, existing=None,
1280 force=None):
1251 force=None):
1281 def checkseries(patchname):
1252 def checkseries(patchname):
@@ -1396,15 +1367,25 b' def delete(ui, repo, patch, *patches, **'
1396
1367
1397 def applied(ui, repo, patch=None, **opts):
1368 def applied(ui, repo, patch=None, **opts):
1398 """print the patches already applied"""
1369 """print the patches already applied"""
1399 repo.mq.qapplied(repo, patch)
1370 q = repo.mq
1400 return 0
1371 if patch:
1372 if patch not in q.series:
1373 raise util.Abort(_("patch %s is not in series file") % patch)
1374 end = q.series.index(patch) + 1
1375 else:
1376 end = len(q.applied)
1377 return q.qseries(repo, length=end, status='A', summary=opts.get('summary'))
1401
1378
1402 def unapplied(ui, repo, patch=None, **opts):
1379 def unapplied(ui, repo, patch=None, **opts):
1403 """print the patches not yet applied"""
1380 """print the patches not yet applied"""
1404 for i, p in repo.mq.unapplied(repo, patch):
1381 q = repo.mq
1405 if ui.verbose:
1382 if patch:
1406 ui.write("%d " % i)
1383 if patch not in q.series:
1407 ui.write("%s\n" % p)
1384 raise util.Abort(_("patch %s is not in series file") % patch)
1385 start = q.series.index(patch) + 1
1386 else:
1387 start = q.series_end()
1388 q.qseries(repo, start=start, summary=opts.get('summary'))
1408
1389
1409 def qimport(ui, repo, *filename, **opts):
1390 def qimport(ui, repo, *filename, **opts):
1410 """import a patch
1391 """import a patch
@@ -1503,15 +1484,36 b' def series(ui, repo, **opts):'
1503
1484
1504 def top(ui, repo, **opts):
1485 def top(ui, repo, **opts):
1505 """print the name of the current patch"""
1486 """print the name of the current patch"""
1506 return repo.mq.top(repo)
1487 q = repo.mq
1488 t = len(q.applied)
1489 if t:
1490 return q.qseries(repo, start=t-1, length=1, status='A',
1491 summary=opts.get('summary'))
1492 else:
1493 ui.write("No patches applied\n")
1494 return 1
1507
1495
1508 def next(ui, repo, **opts):
1496 def next(ui, repo, **opts):
1509 """print the name of the next patch"""
1497 """print the name of the next patch"""
1510 return repo.mq.next(repo)
1498 q = repo.mq
1499 end = q.series_end()
1500 if end == len(q.series):
1501 ui.write("All patches applied\n")
1502 return 1
1503 return q.qseries(repo, start=end, length=1, summary=opts.get('summary'))
1511
1504
1512 def prev(ui, repo, **opts):
1505 def prev(ui, repo, **opts):
1513 """print the name of the previous patch"""
1506 """print the name of the previous patch"""
1514 return repo.mq.prev(repo)
1507 q = repo.mq
1508 l = len(q.applied)
1509 if l == 1:
1510 ui.write("Only one patch applied\n")
1511 return 1
1512 if not l:
1513 ui.write("No patches applied\n")
1514 return 1
1515 return q.qseries(repo, start=l-2, length=1, status='A',
1516 summary=opts.get('summary'))
1515
1517
1516 def new(ui, repo, patch, **opts):
1518 def new(ui, repo, patch, **opts):
1517 """create a new patch
1519 """create a new patch
@@ -1988,8 +1990,10 b' def reposetup(ui, repo):'
1988 repo.__class__ = mqrepo
1990 repo.__class__ = mqrepo
1989 repo.mq = queue(ui, repo.join(""))
1991 repo.mq = queue(ui, repo.join(""))
1990
1992
1993 seriesopts = [('s', 'summary', None, _('print first line of patch header'))]
1994
1991 cmdtable = {
1995 cmdtable = {
1992 "qapplied": (applied, [], 'hg qapplied [PATCH]'),
1996 "qapplied": (applied, [] + seriesopts, 'hg qapplied [-s] [PATCH]'),
1993 "qclone": (clone,
1997 "qclone": (clone,
1994 [('', 'pull', None, _('use pull protocol to copy metadata')),
1998 [('', 'pull', None, _('use pull protocol to copy metadata')),
1995 ('U', 'noupdate', None, _('do not update the new working directories')),
1999 ('U', 'noupdate', None, _('do not update the new working directories')),
@@ -2043,8 +2047,8 b' cmdtable = {'
2043 ('l', 'logfile', '', _('read the commit message from <file>')),
2047 ('l', 'logfile', '', _('read the commit message from <file>')),
2044 ('f', 'force', None, _('import uncommitted changes into patch'))],
2048 ('f', 'force', None, _('import uncommitted changes into patch'))],
2045 'hg qnew [-e] [-m TEXT] [-l FILE] [-f] PATCH'),
2049 'hg qnew [-e] [-m TEXT] [-l FILE] [-f] PATCH'),
2046 "qnext": (next, [], 'hg qnext'),
2050 "qnext": (next, [] + seriesopts, 'hg qnext [-s]'),
2047 "qprev": (prev, [], 'hg qprev'),
2051 "qprev": (prev, [] + seriesopts, 'hg qprev [-s]'),
2048 "^qpop":
2052 "^qpop":
2049 (pop,
2053 (pop,
2050 [('a', 'all', None, 'pop all patches'),
2054 [('a', 'all', None, 'pop all patches'),
@@ -2094,8 +2098,7 b' cmdtable = {'
2094 'hg qselect [OPTION...] [GUARD...]'),
2098 'hg qselect [OPTION...] [GUARD...]'),
2095 "qseries":
2099 "qseries":
2096 (series,
2100 (series,
2097 [('m', 'missing', None, 'print patches not in series'),
2101 [('m', 'missing', None, 'print patches not in series')] + seriesopts,
2098 ('s', 'summary', None, _('print first line of patch header'))],
2099 'hg qseries [-ms]'),
2102 'hg qseries [-ms]'),
2100 "^strip":
2103 "^strip":
2101 (strip,
2104 (strip,
@@ -2103,6 +2106,6 b' cmdtable = {'
2103 ('b', 'backup', None, 'bundle unrelated changesets'),
2106 ('b', 'backup', None, 'bundle unrelated changesets'),
2104 ('n', 'nobackup', None, 'no backups')],
2107 ('n', 'nobackup', None, 'no backups')],
2105 'hg strip [-f] [-b] [-n] REV'),
2108 'hg strip [-f] [-b] [-n] REV'),
2106 "qtop": (top, [], 'hg qtop'),
2109 "qtop": (top, [] + seriesopts, 'hg qtop [-s]'),
2107 "qunapplied": (unapplied, [], 'hg qunapplied [PATCH]'),
2110 "qunapplied": (unapplied, [] + seriesopts, 'hg qunapplied [-s] [PATCH]'),
2108 }
2111 }
General Comments 0
You need to be logged in to leave comments. Login now