Mercurial > hg
annotate tests/test-issue2137 @ 10914:b7ca37b90762 stable
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Previously, it only returned revisions that were in the revlog when it
was originally opened; revisions added since then were invisible.
This broke revlog._partialmatch() and therefore repo.lookup().
(Credit to Benoit Boissinot for simplifying my original test script
and for the actual fix.)
author | Greg Ward <greg-hg@gerg.ca> |
---|---|
date | Wed, 14 Apr 2010 15:06:40 -0400 |
parents | |
children | bce47e253b61 |
rev | line source |
---|---|
10914
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
1 #!/bin/sh |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
2 |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
3 echo "% setup" |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
4 |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
5 # create a little extension that has 3 side-effects: |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
6 # 1) ensure changelog data is not inlined |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
7 # 2) make revlog to use lazyparser |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
8 # 3) test that repo.lookup() works |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
9 # 1 and 2 are preconditions for the bug; 3 is the bug. |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
10 cat > commitwrapper.py <<EOF |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
11 from mercurial import extensions, node, revlog |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
12 |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
13 def reposetup(ui, repo): |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
14 def wrapcommit(orig, *args, **kwargs): |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
15 result = orig(*args, **kwargs) |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
16 tip1 = node.short(repo.changelog.tip()) |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
17 tip2 = node.short(repo.lookup(tip1)) |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
18 assert tip1 == tip2 |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
19 ui.write('new tip: %s\n' % tip1) |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
20 return result |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
21 |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
22 extensions.wrapfunction(repo, 'commit', wrapcommit) |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
23 |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
24 def extsetup(ui): |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
25 revlog._maxinline = 128 # split out 00changelog.d early |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
26 revlog._prereadsize = 128 # use revlog.lazyparser |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
27 EOF |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
28 |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
29 cat >> $HGRCPATH <<EOF |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
30 [extensions] |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
31 commitwrapper = $PWD/commitwrapper.py |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
32 EOF |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
33 |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
34 # use a long username to make sure the changelog is bigger than 128 bytes |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
35 export HGUSER='test test test test test test test test test test test' |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
36 |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
37 hg init repo1 |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
38 cd repo1 |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
39 echo a > a |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
40 hg commit -A -m'add a with a long commit message to make the changelog a bit bigger' |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
41 |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
42 # This commit puts 00changelog.i over the 128-byte threshold to split |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
43 # out 00changelog.d, which is a precondition for reproducing the bug |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
44 # with the next commit. |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
45 echo b > b |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
46 hg commit -A -m'add b and ramble on a bit here too for the same reason' |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
47 |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
48 echo "" |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
49 echo "% test that new changesets are visible to repo.lookup()" |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
50 echo a >> a |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
51 hg commit -m'one more commit to demonstrate the bug' |
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
52 hg tip |