Show More
@@ -341,6 +341,10 b' class revbranchcache(object):' | |||||
341 | changelog = self._repo.changelog |
|
341 | changelog = self._repo.changelog | |
342 | rbcrevidx = rev * _rbcrecsize |
|
342 | rbcrevidx = rev * _rbcrecsize | |
343 |
|
343 | |||
|
344 | # avoid negative index, changelog.read(nullrev) is fast without cache | |||
|
345 | if rev == nullrev: | |||
|
346 | return changelog.branchinfo(rev) | |||
|
347 | ||||
344 | # if requested rev is missing, add and populate all missing revs |
|
348 | # if requested rev is missing, add and populate all missing revs | |
345 | if len(self._rbcrevs) < rbcrevidx + _rbcrecsize: |
|
349 | if len(self._rbcrevs) < rbcrevidx + _rbcrecsize: | |
346 | self._rbcrevs.extend('\0' * (len(changelog) * _rbcrecsize - |
|
350 | self._rbcrevs.extend('\0' * (len(changelog) * _rbcrecsize - |
@@ -16,7 +16,7 b' import match as matchmod' | |||||
16 | import merge as mergemod |
|
16 | import merge as mergemod | |
17 | import tags as tagsmod |
|
17 | import tags as tagsmod | |
18 | from lock import release |
|
18 | from lock import release | |
19 | import weakref, errno, os, time, inspect |
|
19 | import weakref, errno, os, time, inspect, random | |
20 | import branchmap, pathutil |
|
20 | import branchmap, pathutil | |
21 | import namespaces |
|
21 | import namespaces | |
22 | propertycache = util.propertycache |
|
22 | propertycache = util.propertycache | |
@@ -959,7 +959,9 b' class localrepository(object):' | |||||
959 | _("abandoned transaction found"), |
|
959 | _("abandoned transaction found"), | |
960 | hint=_("run 'hg recover' to clean up transaction")) |
|
960 | hint=_("run 'hg recover' to clean up transaction")) | |
961 |
|
961 | |||
962 | self.hook('pretxnopen', throw=True, txnname=desc) |
|
962 | idbase = "%.40f#%f" % (random.random(), time.time()) | |
|
963 | txnid = 'TXN:' + util.sha1(idbase).hexdigest() | |||
|
964 | self.hook('pretxnopen', throw=True, txnname=desc, txnid=txnid) | |||
963 |
|
965 | |||
964 | self._writejournal(desc) |
|
966 | self._writejournal(desc) | |
965 | renames = [(vfs, x, undoname(x)) for vfs, x in self._journalfiles()] |
|
967 | renames = [(vfs, x, undoname(x)) for vfs, x in self._journalfiles()] | |
@@ -983,8 +985,7 b' class localrepository(object):' | |||||
983 | self.store.createmode, |
|
985 | self.store.createmode, | |
984 | validator=validate) |
|
986 | validator=validate) | |
985 |
|
987 | |||
986 | trid = 'TXN:' + util.sha1("%s#%f" % (id(tr), time.time())).hexdigest() |
|
988 | tr.hookargs['txnid'] = txnid | |
987 | tr.hookargs['txnid'] = trid |
|
|||
988 | # note: writing the fncache only during finalize mean that the file is |
|
989 | # note: writing the fncache only during finalize mean that the file is | |
989 | # outdated when running hooks. As fncache is used for streaming clone, |
|
990 | # outdated when running hooks. As fncache is used for streaming clone, | |
990 | # this is not expected to break anything that happen during the hooks. |
|
991 | # this is not expected to break anything that happen during the hooks. |
@@ -329,7 +329,8 b' def _getrevsource(repo, r):' | |||||
329 |
|
329 | |||
330 | def stringset(repo, subset, x): |
|
330 | def stringset(repo, subset, x): | |
331 | x = repo[x].rev() |
|
331 | x = repo[x].rev() | |
332 |
if x in subset |
|
332 | if (x in subset | |
|
333 | or x == node.nullrev and isinstance(subset, fullreposet)): | |||
333 | return baseset([x]) |
|
334 | return baseset([x]) | |
334 | return baseset() |
|
335 | return baseset() | |
335 |
|
336 | |||
@@ -1911,7 +1912,7 b' def user(repo, subset, x):' | |||||
1911 | def wdir(repo, subset, x): |
|
1912 | def wdir(repo, subset, x): | |
1912 | # i18n: "wdir" is a keyword |
|
1913 | # i18n: "wdir" is a keyword | |
1913 | getargs(x, 0, 0, _("wdir takes no arguments")) |
|
1914 | getargs(x, 0, 0, _("wdir takes no arguments")) | |
1914 | if None in subset: |
|
1915 | if None in subset or isinstance(subset, fullreposet): | |
1915 | return baseset([None]) |
|
1916 | return baseset([None]) | |
1916 | return baseset() |
|
1917 | return baseset() | |
1917 |
|
1918 | |||
@@ -3470,11 +3471,6 b' class fullreposet(spanset):' | |||||
3470 | def __init__(self, repo): |
|
3471 | def __init__(self, repo): | |
3471 | super(fullreposet, self).__init__(repo) |
|
3472 | super(fullreposet, self).__init__(repo) | |
3472 |
|
3473 | |||
3473 | def __contains__(self, rev): |
|
|||
3474 | # assumes the given rev is valid |
|
|||
3475 | hidden = self._hiddenrevs |
|
|||
3476 | return not (hidden and rev in hidden) |
|
|||
3477 |
|
||||
3478 | def __and__(self, other): |
|
3474 | def __and__(self, other): | |
3479 | """As self contains the whole repo, all of the other set should also be |
|
3475 | """As self contains the whole repo, all of the other set should also be | |
3480 | in self. Therefore `self & other = other`. |
|
3476 | in self. Therefore `self & other = other`. |
@@ -2375,4 +2375,12 b' should not draw line down to null due to' | |||||
2375 | summary: add a |
|
2375 | summary: add a | |
2376 |
|
2376 | |||
2377 |
|
2377 | |||
|
2378 | $ hg log -G -r 'branch(default)' | tail -6 | |||
|
2379 | | | |||
|
2380 | o changeset: 0:f8035bb17114 | |||
|
2381 | user: test | |||
|
2382 | date: Thu Jan 01 00:00:00 1970 +0000 | |||
|
2383 | summary: add a | |||
|
2384 | ||||
|
2385 | ||||
2378 | $ cd .. |
|
2386 | $ cd .. |
@@ -29,7 +29,7 b' commit hooks can see env vars' | |||||
29 | $ hg add a |
|
29 | $ hg add a | |
30 | $ hg commit -m a |
|
30 | $ hg commit -m a | |
31 | precommit hook: HG_PARENT1=0000000000000000000000000000000000000000 |
|
31 | precommit hook: HG_PARENT1=0000000000000000000000000000000000000000 | |
32 | pretxnopen hook: HG_TXNNAME=commit |
|
32 | pretxnopen hook: HG_TXNID=TXN:* HG_TXNNAME=commit (glob) | |
33 | pretxncommit hook: HG_NODE=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b HG_PARENT1=0000000000000000000000000000000000000000 HG_PENDING=$TESTTMP/a |
|
33 | pretxncommit hook: HG_NODE=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b HG_PARENT1=0000000000000000000000000000000000000000 HG_PENDING=$TESTTMP/a | |
34 | 0:cb9a9f314b8b |
|
34 | 0:cb9a9f314b8b | |
35 | pretxnclose hook: HG_PENDING=$TESTTMP/a HG_PHASES_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=commit (glob) |
|
35 | pretxnclose hook: HG_PENDING=$TESTTMP/a HG_PHASES_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=commit (glob) | |
@@ -57,7 +57,7 b' pretxncommit and commit hooks can see bo' | |||||
57 | $ echo b >> a |
|
57 | $ echo b >> a | |
58 | $ hg commit -m a1 -d "1 0" |
|
58 | $ hg commit -m a1 -d "1 0" | |
59 | precommit hook: HG_PARENT1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b |
|
59 | precommit hook: HG_PARENT1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b | |
60 | pretxnopen hook: HG_TXNNAME=commit |
|
60 | pretxnopen hook: HG_TXNID=TXN:* HG_TXNNAME=commit (glob) | |
61 | pretxncommit hook: HG_NODE=ab228980c14deea8b9555d91c9581127383e40fd HG_PARENT1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b HG_PENDING=$TESTTMP/a |
|
61 | pretxncommit hook: HG_NODE=ab228980c14deea8b9555d91c9581127383e40fd HG_PARENT1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b HG_PENDING=$TESTTMP/a | |
62 | 1:ab228980c14d |
|
62 | 1:ab228980c14d | |
63 | pretxnclose hook: HG_PENDING=$TESTTMP/a HG_TXNID=TXN:* HG_TXNNAME=commit (glob) |
|
63 | pretxnclose hook: HG_PENDING=$TESTTMP/a HG_TXNID=TXN:* HG_TXNNAME=commit (glob) | |
@@ -70,7 +70,7 b' pretxncommit and commit hooks can see bo' | |||||
70 | $ hg add b |
|
70 | $ hg add b | |
71 | $ hg commit -m b -d '1 0' |
|
71 | $ hg commit -m b -d '1 0' | |
72 | precommit hook: HG_PARENT1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b |
|
72 | precommit hook: HG_PARENT1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b | |
73 | pretxnopen hook: HG_TXNNAME=commit |
|
73 | pretxnopen hook: HG_TXNID=TXN:* HG_TXNNAME=commit (glob) | |
74 | pretxncommit hook: HG_NODE=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 HG_PARENT1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b HG_PENDING=$TESTTMP/a |
|
74 | pretxncommit hook: HG_NODE=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 HG_PARENT1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b HG_PENDING=$TESTTMP/a | |
75 | 2:ee9deb46ab31 |
|
75 | 2:ee9deb46ab31 | |
76 | pretxnclose hook: HG_PENDING=$TESTTMP/a HG_TXNID=TXN:* HG_TXNNAME=commit (glob) |
|
76 | pretxnclose hook: HG_PENDING=$TESTTMP/a HG_TXNID=TXN:* HG_TXNNAME=commit (glob) | |
@@ -83,7 +83,7 b' pretxncommit and commit hooks can see bo' | |||||
83 | (branch merge, don't forget to commit) |
|
83 | (branch merge, don't forget to commit) | |
84 | $ hg commit -m merge -d '2 0' |
|
84 | $ hg commit -m merge -d '2 0' | |
85 | precommit hook: HG_PARENT1=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 HG_PARENT2=ab228980c14deea8b9555d91c9581127383e40fd |
|
85 | precommit hook: HG_PARENT1=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 HG_PARENT2=ab228980c14deea8b9555d91c9581127383e40fd | |
86 | pretxnopen hook: HG_TXNNAME=commit |
|
86 | pretxnopen hook: HG_TXNID=TXN:* HG_TXNNAME=commit (glob) | |
87 | pretxncommit hook: HG_NODE=07f3376c1e655977439df2a814e3cc14b27abac2 HG_PARENT1=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 HG_PARENT2=ab228980c14deea8b9555d91c9581127383e40fd HG_PENDING=$TESTTMP/a |
|
87 | pretxncommit hook: HG_NODE=07f3376c1e655977439df2a814e3cc14b27abac2 HG_PARENT1=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 HG_PARENT2=ab228980c14deea8b9555d91c9581127383e40fd HG_PENDING=$TESTTMP/a | |
88 | 3:07f3376c1e65 |
|
88 | 3:07f3376c1e65 | |
89 | pretxnclose hook: HG_PENDING=$TESTTMP/a HG_TXNID=TXN:* HG_TXNNAME=commit (glob) |
|
89 | pretxnclose hook: HG_PENDING=$TESTTMP/a HG_TXNID=TXN:* HG_TXNNAME=commit (glob) | |
@@ -127,7 +127,7 b' tag hooks can see env vars' | |||||
127 | $ hg tag -d '3 0' a |
|
127 | $ hg tag -d '3 0' a | |
128 | pretag hook: HG_LOCAL=0 HG_NODE=07f3376c1e655977439df2a814e3cc14b27abac2 HG_TAG=a |
|
128 | pretag hook: HG_LOCAL=0 HG_NODE=07f3376c1e655977439df2a814e3cc14b27abac2 HG_TAG=a | |
129 | precommit hook: HG_PARENT1=07f3376c1e655977439df2a814e3cc14b27abac2 |
|
129 | precommit hook: HG_PARENT1=07f3376c1e655977439df2a814e3cc14b27abac2 | |
130 | pretxnopen hook: HG_TXNNAME=commit |
|
130 | pretxnopen hook: HG_TXNID=TXN:* HG_TXNNAME=commit (glob) | |
131 | pretxncommit hook: HG_NODE=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_PARENT1=07f3376c1e655977439df2a814e3cc14b27abac2 HG_PENDING=$TESTTMP/a |
|
131 | pretxncommit hook: HG_NODE=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_PARENT1=07f3376c1e655977439df2a814e3cc14b27abac2 HG_PENDING=$TESTTMP/a | |
132 | 4:539e4b31b6dc |
|
132 | 4:539e4b31b6dc | |
133 | pretxnclose hook: HG_PENDING=$TESTTMP/a HG_TXNID=TXN:* HG_TXNNAME=commit (glob) |
|
133 | pretxnclose hook: HG_PENDING=$TESTTMP/a HG_TXNID=TXN:* HG_TXNNAME=commit (glob) | |
@@ -164,7 +164,7 b' more there after' | |||||
164 | 4:539e4b31b6dc |
|
164 | 4:539e4b31b6dc | |
165 | $ hg commit -m 'fail' -d '4 0' |
|
165 | $ hg commit -m 'fail' -d '4 0' | |
166 | precommit hook: HG_PARENT1=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 |
|
166 | precommit hook: HG_PARENT1=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 | |
167 | pretxnopen hook: HG_TXNNAME=commit |
|
167 | pretxnopen hook: HG_TXNID=TXN:* HG_TXNNAME=commit (glob) | |
168 | pretxncommit hook: HG_NODE=6f611f8018c10e827fee6bd2bc807f937e761567 HG_PARENT1=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_PENDING=$TESTTMP/a |
|
168 | pretxncommit hook: HG_NODE=6f611f8018c10e827fee6bd2bc807f937e761567 HG_PARENT1=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_PENDING=$TESTTMP/a | |
169 | 5:6f611f8018c1 |
|
169 | 5:6f611f8018c1 | |
170 | 5:6f611f8018c1 |
|
170 | 5:6f611f8018c1 | |
@@ -228,7 +228,7 b' pushkey hook' | |||||
228 | pushing to ../a |
|
228 | pushing to ../a | |
229 | searching for changes |
|
229 | searching for changes | |
230 | no changes found |
|
230 | no changes found | |
231 | pretxnopen hook: HG_TXNNAME=bookmarks |
|
231 | pretxnopen hook: HG_TXNID=TXN:* HG_TXNNAME=bookmarks (glob) | |
232 | pretxnclose hook: HG_BOOKMARK_MOVED=1 HG_PENDING=$TESTTMP/a HG_TXNID=TXN:* HG_TXNNAME=bookmarks (glob) |
|
232 | pretxnclose hook: HG_BOOKMARK_MOVED=1 HG_PENDING=$TESTTMP/a HG_TXNID=TXN:* HG_TXNNAME=bookmarks (glob) | |
233 | txnclose hook: HG_BOOKMARK_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=bookmarks (glob) |
|
233 | txnclose hook: HG_BOOKMARK_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=bookmarks (glob) | |
234 | pushkey hook: HG_KEY=foo HG_NAMESPACE=bookmarks HG_NEW=0000000000000000000000000000000000000000 HG_RET=1 |
|
234 | pushkey hook: HG_KEY=foo HG_NAMESPACE=bookmarks HG_NEW=0000000000000000000000000000000000000000 HG_RET=1 |
@@ -697,10 +697,10 b' Test null revision' | |||||
697 | $ log 'reverse(null:)' | tail -2 |
|
697 | $ log 'reverse(null:)' | tail -2 | |
698 | 0 |
|
698 | 0 | |
699 | -1 |
|
699 | -1 | |
|
700 | BROKEN: should be '-1' | |||
700 | $ log 'first(null:)' |
|
701 | $ log 'first(null:)' | |
701 | -1 |
|
702 | BROKEN: should be '-1' | |
702 | $ log 'min(null:)' |
|
703 | $ log 'min(null:)' | |
703 | -1 |
|
|||
704 | $ log 'tip:null and all()' | tail -2 |
|
704 | $ log 'tip:null and all()' | tail -2 | |
705 | 1 |
|
705 | 1 | |
706 | 0 |
|
706 | 0 | |
@@ -708,9 +708,9 b' Test null revision' | |||||
708 | Test working-directory revision |
|
708 | Test working-directory revision | |
709 | $ hg debugrevspec 'wdir()' |
|
709 | $ hg debugrevspec 'wdir()' | |
710 | None |
|
710 | None | |
|
711 | BROKEN: should include 'None' | |||
711 | $ hg debugrevspec 'tip or wdir()' |
|
712 | $ hg debugrevspec 'tip or wdir()' | |
712 | 9 |
|
713 | 9 | |
713 | None |
|
|||
714 | $ hg debugrevspec '0:tip and wdir()' |
|
714 | $ hg debugrevspec '0:tip and wdir()' | |
715 |
|
715 | |||
716 | $ log 'outgoing()' |
|
716 | $ log 'outgoing()' | |
@@ -1702,6 +1702,46 b' tests for concatenation of strings/symbo' | |||||
1702 |
|
1702 | |||
1703 | $ cd .. |
|
1703 | $ cd .. | |
1704 |
|
1704 | |||
|
1705 | prepare repository that has "default" branches of multiple roots | |||
|
1706 | ||||
|
1707 | $ hg init namedbranch | |||
|
1708 | $ cd namedbranch | |||
|
1709 | ||||
|
1710 | $ echo default0 >> a | |||
|
1711 | $ hg ci -Aqm0 | |||
|
1712 | $ echo default1 >> a | |||
|
1713 | $ hg ci -m1 | |||
|
1714 | ||||
|
1715 | $ hg branch -q stable | |||
|
1716 | $ echo stable2 >> a | |||
|
1717 | $ hg ci -m2 | |||
|
1718 | $ echo stable3 >> a | |||
|
1719 | $ hg ci -m3 | |||
|
1720 | ||||
|
1721 | $ hg update -q null | |||
|
1722 | $ echo default4 >> a | |||
|
1723 | $ hg ci -Aqm4 | |||
|
1724 | $ echo default5 >> a | |||
|
1725 | $ hg ci -m5 | |||
|
1726 | ||||
|
1727 | "null" revision belongs to "default" branch (issue4683) | |||
|
1728 | ||||
|
1729 | $ log 'branch(null)' | |||
|
1730 | 0 | |||
|
1731 | 1 | |||
|
1732 | 4 | |||
|
1733 | 5 | |||
|
1734 | ||||
|
1735 | "null" revision belongs to "default" branch, but it shouldn't appear in set | |||
|
1736 | unless explicitly specified (issue4682) | |||
|
1737 | ||||
|
1738 | $ log 'children(branch(default))' | |||
|
1739 | 1 | |||
|
1740 | 2 | |||
|
1741 | 5 | |||
|
1742 | ||||
|
1743 | $ cd .. | |||
|
1744 | ||||
1705 | test author/desc/keyword in problematic encoding |
|
1745 | test author/desc/keyword in problematic encoding | |
1706 |
|
|
1746 | # unicode: cp932: | |
1707 | # u30A2 0x83 0x41(= 'A') |
|
1747 | # u30A2 0x83 0x41(= 'A') |
General Comments 0
You need to be logged in to leave comments.
Login now