##// END OF EJS Templates
merge with crew-stable
Thomas Arendsen Hein -
r4181:ac9e891f merge default
parent child Browse files
Show More
@@ -15,6 +15,7 b' import os, revlog, time, util'
15 class localrepository(repo.repository):
15 class localrepository(repo.repository):
16 capabilities = ('lookup', 'changegroupsubset')
16 capabilities = ('lookup', 'changegroupsubset')
17 supported = ('revlogv1', 'store')
17 supported = ('revlogv1', 'store')
18 branchcache_features = ('unnamed',)
18
19
19 def __del__(self):
20 def __del__(self):
20 self.transhandle = None
21 self.transhandle = None
@@ -397,7 +398,23 b' class localrepository(repo.repository):'
397 f = self.opener("branches.cache")
398 f = self.opener("branches.cache")
398 lines = f.read().split('\n')
399 lines = f.read().split('\n')
399 f.close()
400 f.close()
400 last, lrev = lines.pop(0).rstrip().split(" ", 1)
401 features = lines.pop(0).strip()
402 if not features.startswith('features: '):
403 raise ValueError(_('branch cache: no features specified'))
404 features = features.split(' ', 1)[1].split()
405 missing_features = []
406 for feature in self.branchcache_features:
407 try:
408 features.remove(feature)
409 except ValueError, inst:
410 missing_features.append(feature)
411 if missing_features:
412 raise ValueError(_('branch cache: missing features: %s')
413 % ', '.join(missing_features))
414 if features:
415 raise ValueError(_('branch cache: unknown features: %s')
416 % ', '.join(features))
417 last, lrev = lines.pop(0).split(" ", 1)
401 last, lrev = bin(last), int(lrev)
418 last, lrev = bin(last), int(lrev)
402 if not (lrev < self.changelog.count() and
419 if not (lrev < self.changelog.count() and
403 self.changelog.node(lrev) == last): # sanity check
420 self.changelog.node(lrev) == last): # sanity check
@@ -405,8 +422,8 b' class localrepository(repo.repository):'
405 raise ValueError('Invalid branch cache: unknown tip')
422 raise ValueError('Invalid branch cache: unknown tip')
406 for l in lines:
423 for l in lines:
407 if not l: continue
424 if not l: continue
408 node, label = l.rstrip().split(" ", 1)
425 node, label = l.split(" ", 1)
409 partial[label] = bin(node)
426 partial[label.strip()] = bin(node)
410 except (KeyboardInterrupt, util.SignalInterrupt):
427 except (KeyboardInterrupt, util.SignalInterrupt):
411 raise
428 raise
412 except Exception, inst:
429 except Exception, inst:
@@ -418,6 +435,7 b' class localrepository(repo.repository):'
418 def _writebranchcache(self, branches, tip, tiprev):
435 def _writebranchcache(self, branches, tip, tiprev):
419 try:
436 try:
420 f = self.opener("branches.cache", "w")
437 f = self.opener("branches.cache", "w")
438 f.write(" features: %s\n" % ' '.join(self.branchcache_features))
421 f.write("%s %s\n" % (hex(tip), tiprev))
439 f.write("%s %s\n" % (hex(tip), tiprev))
422 for label, node in branches.iteritems():
440 for label, node in branches.iteritems():
423 f.write("%s %s\n" % (hex(node), label))
441 f.write("%s %s\n" % (hex(node), label))
@@ -428,8 +446,7 b' class localrepository(repo.repository):'
428 for r in xrange(start, end):
446 for r in xrange(start, end):
429 c = self.changectx(r)
447 c = self.changectx(r)
430 b = c.branch()
448 b = c.branch()
431 if b:
449 partial[b] = c.node()
432 partial[b] = c.node()
433
450
434 def lookup(self, key):
451 def lookup(self, key):
435 if key == '.':
452 if key == '.':
@@ -1,6 +1,7 b''
1 #!/bin/sh
1 #!/bin/sh
2
2
3 hg init
3 hg init
4 hg branch dummy # needed so -r "" doesn't point to the unnamed/default branch
4 touch a
5 touch a
5 hg add a
6 hg add a
6 hg ci -m "a" -d "1000000 0"
7 hg ci -m "a" -d "1000000 0"
@@ -1,19 +1,19 b''
1 diff -r acd8075edac9 b
1 diff -r 4da5fa99f904 b
2 --- /dev/null
2 --- /dev/null
3 +++ b/b
3 +++ b/b
4 @@ -0,0 +1,1 @@
4 @@ -0,0 +1,1 @@
5 +123
5 +123
6 diff -r acd8075edac9 b
6 diff -r 4da5fa99f904 b
7 --- /dev/null
7 --- /dev/null
8 +++ b/b
8 +++ b/b
9 @@ -0,0 +1,1 @@
9 @@ -0,0 +1,1 @@
10 +123
10 +123
11 diff -r acd8075edac9 a
11 diff -r 4da5fa99f904 a
12 --- a/a
12 --- a/a
13 +++ b/a
13 +++ b/a
14 @@ -0,0 +1,1 @@
14 @@ -0,0 +1,1 @@
15 +foo
15 +foo
16 diff -r acd8075edac9 b
16 diff -r 4da5fa99f904 b
17 --- /dev/null
17 --- /dev/null
18 +++ b/b
18 +++ b/b
19 @@ -0,0 +1,1 @@
19 @@ -0,0 +1,1 @@
@@ -126,10 +126,13 b' tip 5:db5'
126 é 3:770b9b11621d
126 é 3:770b9b11621d
127 % ascii
127 % ascii
128 ? 5:db5520b4645f
128 ? 5:db5520b4645f
129 4:9cff3c980b58
129 % latin-1
130 % latin-1
130 � 5:db5520b4645f
131 � 5:db5520b4645f
132 4:9cff3c980b58
131 % utf-8
133 % utf-8
132 é 5:db5520b4645f
134 é 5:db5520b4645f
135 4:9cff3c980b58
133 % utf-8
136 % utf-8
134 changeset: 5:db5520b4645f
137 changeset: 5:db5520b4645f
135 branch: é
138 branch: é
@@ -47,6 +47,7 b' hg log -pv d'
47 # log --follow tests
47 # log --follow tests
48 hg init ../follow
48 hg init ../follow
49 cd ../follow
49 cd ../follow
50 hg branch dummy # needed so -r "" doesn't point to the unnamed/default branch
50 echo base > base
51 echo base > base
51 hg ci -Ambase -d '1 0'
52 hg ci -Ambase -d '1 0'
52
53
@@ -105,19 +105,22 b' adding base'
105 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
105 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
106 adding b1
106 adding b1
107 % log -f
107 % log -f
108 changeset: 3:e62f78d544b4
108 changeset: 3:07a62f044f0d
109 branch: dummy
109 tag: tip
110 tag: tip
110 parent: 1:3d5bf5654eda
111 parent: 1:fb3d4e35b279
111 user: test
112 user: test
112 date: Thu Jan 01 00:00:01 1970 +0000
113 date: Thu Jan 01 00:00:01 1970 +0000
113 summary: b1
114 summary: b1
114
115
115 changeset: 1:3d5bf5654eda
116 changeset: 1:fb3d4e35b279
117 branch: dummy
116 user: test
118 user: test
117 date: Thu Jan 01 00:00:01 1970 +0000
119 date: Thu Jan 01 00:00:01 1970 +0000
118 summary: r1
120 summary: r1
119
121
120 changeset: 0:67e992f2c4f3
122 changeset: 0:ea445bfed6b9
123 branch: dummy
121 user: test
124 user: test
122 date: Thu Jan 01 00:00:01 1970 +0000
125 date: Thu Jan 01 00:00:01 1970 +0000
123 summary: base
126 summary: base
@@ -125,18 +128,21 b' summary: base'
125 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
128 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
126 adding b2
129 adding b2
127 % log -f -r 1:tip
130 % log -f -r 1:tip
128 changeset: 1:3d5bf5654eda
131 changeset: 1:fb3d4e35b279
132 branch: dummy
129 user: test
133 user: test
130 date: Thu Jan 01 00:00:01 1970 +0000
134 date: Thu Jan 01 00:00:01 1970 +0000
131 summary: r1
135 summary: r1
132
136
133 changeset: 2:60c670bf5b30
137 changeset: 2:e8882cbc828c
138 branch: dummy
134 user: test
139 user: test
135 date: Thu Jan 01 00:00:01 1970 +0000
140 date: Thu Jan 01 00:00:01 1970 +0000
136 summary: r2
141 summary: r2
137
142
138 changeset: 3:e62f78d544b4
143 changeset: 3:07a62f044f0d
139 parent: 1:3d5bf5654eda
144 branch: dummy
145 parent: 1:fb3d4e35b279
140 user: test
146 user: test
141 date: Thu Jan 01 00:00:01 1970 +0000
147 date: Thu Jan 01 00:00:01 1970 +0000
142 summary: b1
148 summary: b1
@@ -145,57 +151,66 b' 2 files updated, 0 files merged, 1 files'
145 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
151 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
146 (branch merge, don't forget to commit)
152 (branch merge, don't forget to commit)
147 % log --follow-first
153 % log --follow-first
148 changeset: 6:2404bbcab562
154 changeset: 6:0f621dafa603
155 branch: dummy
149 tag: tip
156 tag: tip
150 user: test
157 user: test
151 date: Thu Jan 01 00:00:01 1970 +0000
158 date: Thu Jan 01 00:00:01 1970 +0000
152 summary: b1.1
159 summary: b1.1
153
160
154 changeset: 5:302e9dd6890d
161 changeset: 5:0cf53fb6dfd5
155 parent: 3:e62f78d544b4
162 branch: dummy
156 parent: 4:ddb82e70d1a1
163 parent: 3:07a62f044f0d
164 parent: 4:b76598590bc3
157 user: test
165 user: test
158 date: Thu Jan 01 00:00:01 1970 +0000
166 date: Thu Jan 01 00:00:01 1970 +0000
159 summary: m12
167 summary: m12
160
168
161 changeset: 3:e62f78d544b4
169 changeset: 3:07a62f044f0d
162 parent: 1:3d5bf5654eda
170 branch: dummy
171 parent: 1:fb3d4e35b279
163 user: test
172 user: test
164 date: Thu Jan 01 00:00:01 1970 +0000
173 date: Thu Jan 01 00:00:01 1970 +0000
165 summary: b1
174 summary: b1
166
175
167 changeset: 1:3d5bf5654eda
176 changeset: 1:fb3d4e35b279
177 branch: dummy
168 user: test
178 user: test
169 date: Thu Jan 01 00:00:01 1970 +0000
179 date: Thu Jan 01 00:00:01 1970 +0000
170 summary: r1
180 summary: r1
171
181
172 changeset: 0:67e992f2c4f3
182 changeset: 0:ea445bfed6b9
183 branch: dummy
173 user: test
184 user: test
174 date: Thu Jan 01 00:00:01 1970 +0000
185 date: Thu Jan 01 00:00:01 1970 +0000
175 summary: base
186 summary: base
176
187
177 % log -P 2
188 % log -P 2
178 changeset: 6:2404bbcab562
189 changeset: 6:0f621dafa603
190 branch: dummy
179 tag: tip
191 tag: tip
180 user: test
192 user: test
181 date: Thu Jan 01 00:00:01 1970 +0000
193 date: Thu Jan 01 00:00:01 1970 +0000
182 summary: b1.1
194 summary: b1.1
183
195
184 changeset: 5:302e9dd6890d
196 changeset: 5:0cf53fb6dfd5
185 parent: 3:e62f78d544b4
197 branch: dummy
186 parent: 4:ddb82e70d1a1
198 parent: 3:07a62f044f0d
199 parent: 4:b76598590bc3
187 user: test
200 user: test
188 date: Thu Jan 01 00:00:01 1970 +0000
201 date: Thu Jan 01 00:00:01 1970 +0000
189 summary: m12
202 summary: m12
190
203
191 changeset: 4:ddb82e70d1a1
204 changeset: 4:b76598590bc3
192 parent: 0:67e992f2c4f3
205 branch: dummy
206 parent: 0:ea445bfed6b9
193 user: test
207 user: test
194 date: Thu Jan 01 00:00:01 1970 +0000
208 date: Thu Jan 01 00:00:01 1970 +0000
195 summary: b2
209 summary: b2
196
210
197 changeset: 3:e62f78d544b4
211 changeset: 3:07a62f044f0d
198 parent: 1:3d5bf5654eda
212 branch: dummy
213 parent: 1:fb3d4e35b279
199 user: test
214 user: test
200 date: Thu Jan 01 00:00:01 1970 +0000
215 date: Thu Jan 01 00:00:01 1970 +0000
201 summary: b1
216 summary: b1
@@ -7,6 +7,7 b' No .hg/branches.cache'
7 # some regular revisions
7 # some regular revisions
8 Patch queue now empty
8 Patch queue now empty
9 tip: 1
9 tip: 1
10 features: unnamed
10 3f910abad313ff802d3a23a7529433872df9b3ae 1
11 3f910abad313ff802d3a23a7529433872df9b3ae 1
11 3f910abad313ff802d3a23a7529433872df9b3ae bar
12 3f910abad313ff802d3a23a7529433872df9b3ae bar
12 9539f35bdc80732cc9a3f84e46508f1ed1ec8cff foo
13 9539f35bdc80732cc9a3f84e46508f1ed1ec8cff foo
@@ -15,10 +16,12 b' 9539f35bdc80732cc9a3f84e46508f1ed1ec8cff'
15 applying p1
16 applying p1
16 Now at: p1
17 Now at: p1
17 tip: 2
18 tip: 2
19 features: unnamed
18 3f910abad313ff802d3a23a7529433872df9b3ae 1
20 3f910abad313ff802d3a23a7529433872df9b3ae 1
19 3f910abad313ff802d3a23a7529433872df9b3ae bar
21 3f910abad313ff802d3a23a7529433872df9b3ae bar
20 9539f35bdc80732cc9a3f84e46508f1ed1ec8cff foo
22 9539f35bdc80732cc9a3f84e46508f1ed1ec8cff foo
21 tip: 3
23 tip: 3
24 features: unnamed
22 3f910abad313ff802d3a23a7529433872df9b3ae 1
25 3f910abad313ff802d3a23a7529433872df9b3ae 1
23 3f910abad313ff802d3a23a7529433872df9b3ae bar
26 3f910abad313ff802d3a23a7529433872df9b3ae bar
24 9539f35bdc80732cc9a3f84e46508f1ed1ec8cff foo
27 9539f35bdc80732cc9a3f84e46508f1ed1ec8cff foo
@@ -27,6 +30,7 b' branch bar: 2'
27
30
28 # removing the cache
31 # removing the cache
29 tip: 3
32 tip: 3
33 features: unnamed
30 3f910abad313ff802d3a23a7529433872df9b3ae 1
34 3f910abad313ff802d3a23a7529433872df9b3ae 1
31 3f910abad313ff802d3a23a7529433872df9b3ae bar
35 3f910abad313ff802d3a23a7529433872df9b3ae bar
32 9539f35bdc80732cc9a3f84e46508f1ed1ec8cff foo
36 9539f35bdc80732cc9a3f84e46508f1ed1ec8cff foo
@@ -35,6 +39,7 b' branch bar: 2'
35
39
36 # importing rev 1 (the cache now ends in one of the patches)
40 # importing rev 1 (the cache now ends in one of the patches)
37 tip: 3
41 tip: 3
42 features: unnamed
38 3f910abad313ff802d3a23a7529433872df9b3ae 1
43 3f910abad313ff802d3a23a7529433872df9b3ae 1
39 3f910abad313ff802d3a23a7529433872df9b3ae bar
44 3f910abad313ff802d3a23a7529433872df9b3ae bar
40 9539f35bdc80732cc9a3f84e46508f1ed1ec8cff foo
45 9539f35bdc80732cc9a3f84e46508f1ed1ec8cff foo
@@ -49,5 +54,6 b' applying p1'
49 applying p2
54 applying p2
50 Now at: p2
55 Now at: p2
51 tip: 3
56 tip: 3
57 features: unnamed
52 9539f35bdc80732cc9a3f84e46508f1ed1ec8cff 0
58 9539f35bdc80732cc9a3f84e46508f1ed1ec8cff 0
53 9539f35bdc80732cc9a3f84e46508f1ed1ec8cff foo
59 9539f35bdc80732cc9a3f84e46508f1ed1ec8cff foo
@@ -38,3 +38,28 b' rm .hg/branches.cache'
38 echo corrupted > .hg/branches.cache
38 echo corrupted > .hg/branches.cache
39 hg log -qr foo
39 hg log -qr foo
40 cat .hg/branches.cache
40 cat .hg/branches.cache
41
42 echo % test for different branch cache features
43 echo '4909a3732169c0c20011c4f4b8fdff4e3d89b23f 4' > .hg/branches.cache
44 hg branches --debug
45 echo ' features: unnamed dummy foo bar' > .hg/branches.cache
46 hg branches --debug
47 echo ' features: dummy' > .hg/branches.cache
48 hg branches --debug
49
50 echo % test old hg reading branch cache with feature list
51 python << EOF
52 import binascii
53 f = file('.hg/branches.cache')
54 lines = f.read().split('\n')
55 f.close()
56 firstline = lines[0]
57 last, lrev = lines.pop(0).rstrip().split(" ", 1)
58 try:
59 last, lrev = binascii.unhexlify(last), int(lrev)
60 except ValueError, inst:
61 if str(inst) == "invalid literal for int():%s" % firstline:
62 print "ValueError raised correctly, good."
63 else:
64 print "ValueError: %s" % inst
65 EOF
@@ -43,8 +43,10 b' date: Mon Jan 12 13:46:40 1970 +0'
43 summary: initial
43 summary: initial
44
44
45 foo 5:5f8fb06e083e
45 foo 5:5f8fb06e083e
46 3:bf1bc2f45e83
46 bar 2:67ec16bde7f1
47 bar 2:67ec16bde7f1
47 foo
48 foo
49
48 bar
50 bar
49 % test for invalid branch cache
51 % test for invalid branch cache
50 rolling back last transaction
52 rolling back last transaction
@@ -72,6 +74,23 b' modify a branch'
72
74
73
75
74 4:4909a3732169
76 4:4909a3732169
77 features: unnamed
75 4909a3732169c0c20011c4f4b8fdff4e3d89b23f 4
78 4909a3732169c0c20011c4f4b8fdff4e3d89b23f 4
79 bf1bc2f45e834c75404d0ddab57d53beab56e2f8
76 4909a3732169c0c20011c4f4b8fdff4e3d89b23f foo
80 4909a3732169c0c20011c4f4b8fdff4e3d89b23f foo
77 67ec16bde7f1575d523313b9bca000f6a6f12dca bar
81 67ec16bde7f1575d523313b9bca000f6a6f12dca bar
82 % test for different branch cache features
83 branch cache: no features specified
84 foo 4:4909a3732169c0c20011c4f4b8fdff4e3d89b23f
85 3:bf1bc2f45e834c75404d0ddab57d53beab56e2f8
86 bar 2:67ec16bde7f1575d523313b9bca000f6a6f12dca
87 branch cache: unknown features: dummy, foo, bar
88 foo 4:4909a3732169c0c20011c4f4b8fdff4e3d89b23f
89 3:bf1bc2f45e834c75404d0ddab57d53beab56e2f8
90 bar 2:67ec16bde7f1575d523313b9bca000f6a6f12dca
91 branch cache: missing features: unnamed
92 foo 4:4909a3732169c0c20011c4f4b8fdff4e3d89b23f
93 3:bf1bc2f45e834c75404d0ddab57d53beab56e2f8
94 bar 2:67ec16bde7f1575d523313b9bca000f6a6f12dca
95 % test old hg reading branch cache with feature list
96 ValueError raised correctly, good.
General Comments 0
You need to be logged in to leave comments. Login now