[PATCH 5 of 6 V2] obscache: instantiate the cache and keep it warm
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Sat May 20 11:30:19 EDT 2017
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at octobus.net>
# Date 1495198006 -7200
# Fri May 19 14:46:46 2017 +0200
# Node ID 3c2a082a590aa8b57693c24b8461c2afdb8d5556
# Parent eb72bf5f892c01171513f9ebfef69c8a3dbdb1ab
# EXP-Topic obscache
# Available At https://www.mercurial-scm.org/repo/users/marmoute/mercurial/
# hg pull https://www.mercurial-scm.org/repo/users/marmoute/mercurial/ -r 3c2a082a590a
obscache: instantiate the cache and keep it warm
We are not using it yet, but we make sure we have a cache and that we keep it up
to date after each transaction.
The two "warning: ignoring unknown working parent" output in the tests are
caused by 'blackbox' accessing the dirstate during the strip. I've not found an
easy way to work around this so I kept them as they are harmless.
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -1272,6 +1272,9 @@ class localrepository(object):
self.ui.debug('updating the branch cache\n')
branchmap.updatecache(self.filtered('served'))
+ self.obsstore.obscache.update(self)
+ self.obsstore.obscache.save(self)
+
def invalidatecaches(self):
if '_tagscache' in vars(self):
diff --git a/mercurial/obsolete.py b/mercurial/obsolete.py
--- a/mercurial/obsolete.py
+++ b/mercurial/obsolete.py
@@ -557,6 +557,7 @@ class obsstore(object):
self.svfs = repo.svfs
self._version = defaultformat
self._readonly = readonly
+ self.obscache = obscache(repo)
def __iter__(self):
return iter(self._all)
diff --git a/tests/test-blackbox.t b/tests/test-blackbox.t
--- a/tests/test-blackbox.t
+++ b/tests/test-blackbox.t
@@ -59,10 +59,10 @@ clone, commit, pull
added 1 changesets with 1 changes to 1 files
(run 'hg update' to get a working copy)
$ hg blackbox -l 6
- 1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> pull
1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> updated served branch cache in * seconds (glob)
1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> wrote served branch cache with 1 labels and 2 nodes
- 1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> 1 incoming changes - new heads: d02f48003e62
+ 1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> updated obscache in * seconds (3r, 0o) (glob)
+ 1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> 1 incoming changes - new heads: d02f48003e62 (glob)
1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> pull exited 0 after * seconds (glob)
1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> blackbox -l 6
@@ -121,8 +121,8 @@ backup bundles get logged
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
saved backup bundle to $TESTTMP/blackboxtest2/.hg/strip-backup/*-backup.hg (glob)
$ hg blackbox -l 6
- 1970/01/01 00:00:00 bob @73f6ee326b27d820b0472f1a825e3a50f3dc489b (5000)> strip tip
- 1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> saved backup bundle to $TESTTMP/blackboxtest2/.hg/strip-backup/73f6ee326b27-7612e004-backup.hg (glob)
+ 1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> strip detected, obscache cache reset
+ 1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> updated obscache in * seconds (3r, 0o) (glob)
1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> updated base branch cache in * seconds (glob)
1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> wrote base branch cache with 1 labels and 2 nodes
1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> strip tip exited 0 after * seconds (glob)
@@ -194,9 +194,9 @@ log rotation
result: None
$ hg blackbox
- 1970/01/01 00:00:00 bob @0e46349438790c460c5c9f7546bfcd39b267bbd2 (5000)> commit -m commit2 -d 2000-01-02 foo
1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> updated served branch cache in * seconds (glob)
1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> wrote served branch cache with 1 labels and 1 nodes
+ 1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> updated obscache in * seconds (1r, 0o) (glob)
1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> commit -m commit2 -d 2000-01-02 foo exited 0 after * seconds (glob)
1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> log -r 0
1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> writing .hg/cache/tags2-visible with 0 tags
diff --git a/tests/test-clone.t b/tests/test-clone.t
--- a/tests/test-clone.t
+++ b/tests/test-clone.t
@@ -35,6 +35,7 @@ Trigger branchcache creation:
checklink (symlink !)
checklink-target (symlink !)
checknoexec (execbit !)
+ obscache-v01
rbc-names-v1
rbc-revs-v1
diff --git a/tests/test-debugcommands.t b/tests/test-debugcommands.t
--- a/tests/test-debugcommands.t
+++ b/tests/test-debugcommands.t
@@ -118,6 +118,7 @@ Test cache warming command
$ ls -r .hg/cache/*
.hg/cache/rbc-revs-v1
.hg/cache/rbc-names-v1
+ .hg/cache/obscache-v01
.hg/cache/branch2-served
$ cd ..
diff --git a/tests/test-fncache.t b/tests/test-fncache.t
--- a/tests/test-fncache.t
+++ b/tests/test-fncache.t
@@ -86,6 +86,7 @@ Non store repo:
.hg/00manifest.i
.hg/cache
.hg/cache/branch2-served
+ .hg/cache/obscache-v01
.hg/cache/rbc-names-v1
.hg/cache/rbc-revs-v1
.hg/data
@@ -118,6 +119,7 @@ Non fncache repo:
.hg/00changelog.i
.hg/cache
.hg/cache/branch2-served
+ .hg/cache/obscache-v01
.hg/cache/rbc-names-v1
.hg/cache/rbc-revs-v1
.hg/dirstate
diff --git a/tests/test-hardlinks.t b/tests/test-hardlinks.t
--- a/tests/test-hardlinks.t
+++ b/tests/test-hardlinks.t
@@ -230,6 +230,7 @@ r4 has hardlinks in the working dir (not
2 r4/.hg/cache/checkisexec (execbit !)
? r4/.hg/cache/checklink-target (glob) (symlink !)
2 r4/.hg/cache/checknoexec (execbit !)
+ 2 r4/.hg/cache/obscache-v01
2 r4/.hg/cache/rbc-names-v1
2 r4/.hg/cache/rbc-revs-v1
2 r4/.hg/dirstate
@@ -276,6 +277,7 @@ Update back to revision 11 in r4 should
2 r4/.hg/cache/checkisexec (execbit !)
2 r4/.hg/cache/checklink-target (symlink !)
2 r4/.hg/cache/checknoexec (execbit !)
+ 2 r4/.hg/cache/obscache-v01
2 r4/.hg/cache/rbc-names-v1
2 r4/.hg/cache/rbc-revs-v1
1 r4/.hg/dirstate
diff --git a/tests/test-inherit-mode.t b/tests/test-inherit-mode.t
--- a/tests/test-inherit-mode.t
+++ b/tests/test-inherit-mode.t
@@ -66,6 +66,7 @@ new directories are setgid
00600 ./.hg/00changelog.i
00770 ./.hg/cache/
00660 ./.hg/cache/branch2-served
+ 00660 ./.hg/cache/obscache-v01
00660 ./.hg/cache/rbc-names-v1
00660 ./.hg/cache/rbc-revs-v1
00660 ./.hg/dirstate
@@ -115,6 +116,7 @@ group can still write everything
00660 ../push/.hg/00changelog.i
00770 ../push/.hg/cache/
00660 ../push/.hg/cache/branch2-base
+ 00660 ../push/.hg/cache/obscache-v01
00660 ../push/.hg/dirstate
00660 ../push/.hg/requires
00770 ../push/.hg/store/
diff --git a/tests/test-tags.t b/tests/test-tags.t
--- a/tests/test-tags.t
+++ b/tests/test-tags.t
@@ -537,6 +537,7 @@ Strip 1: expose an old head:
$ hg --config extensions.mq= strip 5
saved backup bundle to $TESTTMP/t3/.hg/strip-backup/*-backup.hg (glob)
+ warning: ignoring unknown working parent 735c3ca72986!
$ hg tags # partly stale cache
tip 5:735c3ca72986
bar 1:78391a272241
@@ -548,6 +549,7 @@ Strip 2: destroy whole branch, no old he
$ hg --config extensions.mq= strip 4
saved backup bundle to $TESTTMP/t3/.hg/strip-backup/*-backup.hg (glob)
+ warning: ignoring unknown working parent 735c3ca72986!
$ hg tags # partly stale
tip 4:735c3ca72986
bar 0:bbd179dfa0a7
@@ -676,6 +678,7 @@ Missing tags2* files means the cache was
checklink (symlink !)
checklink-target (symlink !)
hgtagsfnodes1
+ obscache-v01
Cache should contain the head only, even though other nodes have tags data
@@ -701,6 +704,7 @@ Running hg tags should produce tags2* fi
checklink (symlink !)
checklink-target (symlink !)
hgtagsfnodes1
+ obscache-v01
tags2-visible
$ f --size --hexdump tagsclient/.hg/cache/hgtagsfnodes1
More information about the Mercurial-devel
mailing list