equal
deleted
inserted
replaced
50 |
50 |
51 from __future__ import absolute_import |
51 from __future__ import absolute_import |
52 |
52 |
53 from .node import nullrev |
53 from .node import nullrev |
54 from . import ( |
54 from . import ( |
|
55 pycompat, |
55 util, |
56 util, |
56 ) |
57 ) |
57 |
58 |
58 _size = 448 # 70 chars b85-encoded |
59 _size = 448 # 70 chars b85-encoded |
59 _bytes = _size / 8 |
60 _bytes = _size / 8 |
70 v = v * 256 + ord(b) |
71 v = v * 256 + ord(b) |
71 return v |
72 return v |
72 |
73 |
73 def _str(v, l): |
74 def _str(v, l): |
74 bs = "" |
75 bs = "" |
75 for p in xrange(l): |
76 for p in pycompat.xrange(l): |
76 bs = chr(v & 255) + bs |
77 bs = chr(v & 255) + bs |
77 v >>= 8 |
78 v >>= 8 |
78 return bs |
79 return bs |
79 |
80 |
80 def _split(b): |
81 def _split(b): |
89 while x: |
90 while x: |
90 if x & 1: |
91 if x & 1: |
91 c += 1 |
92 c += 1 |
92 x >>= 1 |
93 x >>= 1 |
93 return c |
94 return c |
94 _htab = [_hweight(x) for x in xrange(256)] |
95 _htab = [_hweight(x) for x in pycompat.xrange(256)] |
95 |
96 |
96 def _hamming(a, b): |
97 def _hamming(a, b): |
97 '''find the hamming distance between two longs''' |
98 '''find the hamming distance between two longs''' |
98 d = a ^ b |
99 d = a ^ b |
99 c = 0 |
100 c = 0 |
150 if not util.safehasattr(r, "_pveccache"): |
151 if not util.safehasattr(r, "_pveccache"): |
151 r._pveccache = {} |
152 r._pveccache = {} |
152 pvc = r._pveccache |
153 pvc = r._pveccache |
153 if ctx.rev() not in pvc: |
154 if ctx.rev() not in pvc: |
154 cl = r.changelog |
155 cl = r.changelog |
155 for n in xrange(ctx.rev() + 1): |
156 for n in pycompat.xrange(ctx.rev() + 1): |
156 if n not in pvc: |
157 if n not in pvc: |
157 node = cl.node(n) |
158 node = cl.node(n) |
158 p1, p2 = cl.parentrevs(n) |
159 p1, p2 = cl.parentrevs(n) |
159 if p1 == nullrev: |
160 if p1 == nullrev: |
160 # start with a 'random' vector at root |
161 # start with a 'random' vector at root |