217 # is descending and the prune args are all within that range |
217 # is descending and the prune args are all within that range |
218 for rev in opts.get('prune', ()): |
218 for rev in opts.get('prune', ()): |
219 rev = repo.changelog.rev(repo.lookup(rev)) |
219 rev = repo.changelog.rev(repo.lookup(rev)) |
220 ff = followfilter() |
220 ff = followfilter() |
221 stop = min(revs[0], revs[-1]) |
221 stop = min(revs[0], revs[-1]) |
222 for x in range(rev, stop-1, -1): |
222 for x in xrange(rev, stop-1, -1): |
223 if ff.match(x) and wanted.has_key(x): |
223 if ff.match(x) and wanted.has_key(x): |
224 del wanted[x] |
224 del wanted[x] |
225 |
225 |
226 def iterate(): |
226 def iterate(): |
227 if follow and not files: |
227 if follow and not files: |
1243 def debugindex(ui, file_): |
1243 def debugindex(ui, file_): |
1244 """dump the contents of an index file""" |
1244 """dump the contents of an index file""" |
1245 r = revlog.revlog(util.opener(os.getcwd(), audit=False), file_, "", 0) |
1245 r = revlog.revlog(util.opener(os.getcwd(), audit=False), file_, "", 0) |
1246 ui.write(" rev offset length base linkrev" + |
1246 ui.write(" rev offset length base linkrev" + |
1247 " nodeid p1 p2\n") |
1247 " nodeid p1 p2\n") |
1248 for i in range(r.count()): |
1248 for i in xrange(r.count()): |
1249 node = r.node(i) |
1249 node = r.node(i) |
1250 pp = r.parents(node) |
1250 pp = r.parents(node) |
1251 ui.write("% 6d % 9d % 7d % 6d % 7d %s %s %s\n" % ( |
1251 ui.write("% 6d % 9d % 7d % 6d % 7d %s %s %s\n" % ( |
1252 i, r.start(i), r.length(i), r.base(i), r.linkrev(node), |
1252 i, r.start(i), r.length(i), r.base(i), r.linkrev(node), |
1253 short(node), short(pp[0]), short(pp[1]))) |
1253 short(node), short(pp[0]), short(pp[1]))) |
1254 |
1254 |
1255 def debugindexdot(ui, file_): |
1255 def debugindexdot(ui, file_): |
1256 """dump an index DAG as a .dot file""" |
1256 """dump an index DAG as a .dot file""" |
1257 r = revlog.revlog(util.opener(os.getcwd(), audit=False), file_, "", 0) |
1257 r = revlog.revlog(util.opener(os.getcwd(), audit=False), file_, "", 0) |
1258 ui.write("digraph G {\n") |
1258 ui.write("digraph G {\n") |
1259 for i in range(r.count()): |
1259 for i in xrange(r.count()): |
1260 node = r.node(i) |
1260 node = r.node(i) |
1261 pp = r.parents(node) |
1261 pp = r.parents(node) |
1262 ui.write("\t%d -> %d\n" % (r.rev(pp[0]), i)) |
1262 ui.write("\t%d -> %d\n" % (r.rev(pp[0]), i)) |
1263 if pp[1] != nullid: |
1263 if pp[1] != nullid: |
1264 ui.write("\t%d -> %d\n" % (r.rev(pp[1]), i)) |
1264 ui.write("\t%d -> %d\n" % (r.rev(pp[1]), i)) |
1441 |
1441 |
1442 def difflinestates(a, b): |
1442 def difflinestates(a, b): |
1443 sm = difflib.SequenceMatcher(None, a, b) |
1443 sm = difflib.SequenceMatcher(None, a, b) |
1444 for tag, alo, ahi, blo, bhi in sm.get_opcodes(): |
1444 for tag, alo, ahi, blo, bhi in sm.get_opcodes(): |
1445 if tag == 'insert': |
1445 if tag == 'insert': |
1446 for i in range(blo, bhi): |
1446 for i in xrange(blo, bhi): |
1447 yield ('+', b[i]) |
1447 yield ('+', b[i]) |
1448 elif tag == 'delete': |
1448 elif tag == 'delete': |
1449 for i in range(alo, ahi): |
1449 for i in xrange(alo, ahi): |
1450 yield ('-', a[i]) |
1450 yield ('-', a[i]) |
1451 elif tag == 'replace': |
1451 elif tag == 'replace': |
1452 for i in range(alo, ahi): |
1452 for i in xrange(alo, ahi): |
1453 yield ('-', a[i]) |
1453 yield ('-', a[i]) |
1454 for i in range(blo, bhi): |
1454 for i in xrange(blo, bhi): |
1455 yield ('+', b[i]) |
1455 yield ('+', b[i]) |
1456 |
1456 |
1457 prev = {} |
1457 prev = {} |
1458 ucache = {} |
1458 ucache = {} |
1459 def display(fn, rev, states, prevstates): |
1459 def display(fn, rev, states, prevstates): |