##// END OF EJS Templates
destroyed: drop complex branchcache rebuilt logic...
Pierre-Yves David -
r18395:904b7109 default
parent child Browse files
Show More
@@ -1398,7 +1398,7 b' class localrepository(object):'
1398 1398 self._phasecache.write()
1399 1399
1400 1400 @unfilteredmethod
1401 def destroyed(self, newheadnodes=None):
1401 def destroyed(self):
1402 1402 '''Inform the repository that nodes have been destroyed.
1403 1403 Intended for use by strip and rollback, so there's a common
1404 1404 place for anything that has to be done after destroying history.
@@ -1421,16 +1421,9 b' class localrepository(object):'
1421 1421 self._phasecache.filterunknown(self)
1422 1422 self._phasecache.write()
1423 1423
1424 # If we have info, newheadnodes, on how to update the branch cache, do
1425 # it, Otherwise, since nodes were destroyed, the cache is stale and this
1426 # will be caught the next time it is read.
1427 if newheadnodes:
1428 cl = self.changelog
1429 revgen = (cl.rev(node) for node in newheadnodes
1430 if cl.hasnode(node))
1431 cache = self._branchcaches[None]
1432 cache.update(self, revgen)
1433 cache.write(self)
1424 # update branchcache information likely invalidated by the strip.
1425 # We rely on branchcache collaboration for this call to be fast
1426 branchmap.updatecache(self)
1434 1427
1435 1428 # Ensure the persistent tag cache is updated. Doing it now
1436 1429 # means that the tag cache only has to worry about destroyed
@@ -66,17 +66,6 b' def strip(ui, repo, nodelist, backup="al'
66 66 striplist = [cl.rev(node) for node in nodelist]
67 67 striprev = min(striplist)
68 68
69 # Generate set of branches who will have nodes stripped.
70 striprevs = repo.revs("%ld::", striplist)
71 stripbranches = set([repo[rev].branch() for rev in striprevs])
72
73 # Set of potential new heads resulting from the strip. The parents of any
74 # node removed could be a new head because the node to be removed could have
75 # been the only child of the parent.
76 newheadrevs = repo.revs("parents(%ld::) - %ld::", striprevs, striprevs)
77 newheadnodes = set([cl.node(rev) for rev in newheadrevs])
78 newheadbranches = set([repo[rev].branch() for rev in newheadrevs])
79
80 69 keeppartialbundle = backup == 'strip'
81 70
82 71 # Some revisions with rev > striprev may not be descendants of striprev.
@@ -191,10 +180,4 b' def strip(ui, repo, nodelist, backup="al'
191 180 % chgrpfile)
192 181 raise
193 182
194 if len(stripbranches) == 1 and len(newheadbranches) == 1 \
195 and stripbranches == newheadbranches:
196 repo.destroyed(newheadnodes)
197 else:
198 # Multiple branches involved in strip. Will allow branchcache to become
199 # invalid and later on rebuilt from scratch
200 183 repo.destroyed()
@@ -1527,7 +1527,6 b' Branch acl deny test'
1527 1527 query 1; heads
1528 1528 searching for changes
1529 1529 all remote heads known locally
1530 invalid branchheads cache (served): tip differs
1531 1530 listing keys for "bookmarks"
1532 1531 4 changesets found
1533 1532 list of changesets:
@@ -1839,7 +1838,6 b' push foobar into the remote'
1839 1838 query 1; heads
1840 1839 searching for changes
1841 1840 all remote heads known locally
1842 invalid branchheads cache (served): tip differs
1843 1841 listing keys for "bookmarks"
1844 1842 4 changesets found
1845 1843 list of changesets:
@@ -1927,7 +1925,6 b' Branch acl conflicting deny'
1927 1925 query 1; heads
1928 1926 searching for changes
1929 1927 all remote heads known locally
1930 invalid branchheads cache (served): tip differs
1931 1928 listing keys for "bookmarks"
1932 1929 4 changesets found
1933 1930 list of changesets:
@@ -2083,7 +2080,6 b' Non-astro users must be denied'
2083 2080 query 1; heads
2084 2081 searching for changes
2085 2082 all remote heads known locally
2086 invalid branchheads cache (served): tip differs
2087 2083 listing keys for "bookmarks"
2088 2084 4 changesets found
2089 2085 list of changesets:
@@ -507,6 +507,7 b' amend'
507 507 $ hg -q commit -d '14 1' -m 'prepare amend'
508 508
509 509 $ hg --debug commit --amend -d '15 1' -m 'amend without changes' | grep keywords
510 invalid branchheads cache (served): tip differs
510 511 overwriting a expanding keywords
511 512 $ hg -q id
512 513 67d8c481a6be
@@ -45,7 +45,6 b' test updating a symlink'
45 45 popping updatelink
46 46 now at: symlink.patch
47 47 $ hg qpush --debug
48 invalid branchheads cache (served): tip differs
49 48 applying updatelink
50 49 patching file a
51 50 a
@@ -263,9 +263,10 b' Rebase and collapse - E onto H:'
263 263
264 264
265 265 Test that branchheads cache is updated correctly when doing a strip in which
266 the parent of the ancestor node to be stripped does not become a head and
267 also, the parent of a node that is a child of the node stripped becomes a head
268 (node 3).
266 the parent of the ancestor node to be stripped does not become a head and also,
267 the parent of a node that is a child of the node stripped becomes a head (node
268 3). The code is now much simpler and we could just test a simpler scenario
269 We keep it the test this way in case new complexity is injected.
269 270
270 271 $ hg clone -q -u . b b2
271 272 $ cd b2
@@ -282,7 +283,7 b' also, the parent of a node that is a chi'
282 283 $ hg strip 4
283 284 saved backup bundle to $TESTTMP/b2/.hg/strip-backup/8a5212ebc852-backup.hg (glob)
284 285
285 $ cat $TESTTMP/b2/.hg/cache/branchheads
286 $ cat $TESTTMP/b2/.hg/cache/branchheads-served
286 287 c65502d4178782309ce0574c5ae6ee9485a9bafa 4
287 288 2870ad076e541e714f3c2bc32826b5c6a6e5b040 default
288 289 c65502d4178782309ce0574c5ae6ee9485a9bafa default
General Comments 0
You need to be logged in to leave comments. Login now