gravatar
alpar (Alpar Juttner)
alpar@cs.elte.hu
chg-len.py uses the Mercurial API directly This makes chg-len.py much faster.
0 1 0
default
1 file changed with 16 insertions and 27 deletions:
↑ Collapse diff ↑
Ignore white space 6 line context
1 1
#! /usr/bin/env python
2 2

	
3 3
import sys
4
import os
4

	
5
from mercurial import ui, hg
5 6

	
6 7
if len(sys.argv)>1 and sys.argv[1] in ["-h","--help"]:
7 8
    print """
... ...
@@ -9,32 +10,20 @@
9 10
in the revision graph from revison 0 to the current one.
10 11
"""
11 12
    exit(0)
12
plist = os.popen("HGRCPATH='' hg parents --template='{rev}\n'").readlines()
13
if len(plist)>1:
14
    print "You are in the process of merging"
15
    exit(1)
16
PAR = int(plist[0])
17 13

	
18
f = os.popen("HGRCPATH='' hg log -r 0:tip --template='{rev} {parents}\n'").\
19
    readlines()
20
REV = -1
21
lengths=[]
22
for l in f:
23
    REV+=1
24
    s = l.split()
25
    rev = int(s[0])
26
    if REV != rev:
27
        print "Something is seriously wrong"
28
        exit(1)
29
    if len(s) == 1:
30
        par1 = par2 = rev - 1
31
    elif len(s) == 2:
32
        par1 = par2 = int(s[1].split(":")[0])
14
u = ui.ui()
15
r = hg.repository(u, ".")
16
N = r.changectx(".").rev()
17
lengths=[0]*(N+1)
18
for i in range(N+1):
19
    p=r.changectx(i).parents()
20
    if p[0]:
21
        p0=lengths[p[0].rev()]
33 22
    else:
34
        par1 = int(s[1].split(":")[0])
35
        par2 = int(s[2].split(":")[0])
36
    if rev == 0:
37
        lengths.append(0)
23
        p0=-1
24
    if len(p)>1 and p[1]:
25
        p1=lengths[p[1].rev()]
38 26
    else:
39
        lengths.append(max(lengths[par1],lengths[par2])+1)
40
print lengths[PAR]
27
        p1=-1
28
    lengths[i]=max(p0,p1)+1
29
print lengths[N]
0 comments (0 inline)