D4099: narrow: move .hg/narrowspec to .hg/store/narrowspec (BC)
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Sun Aug 5 09:05:33 EDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rHG576eef1ab43d: narrow: move .hg/narrowspec to .hg/store/narrowspec (BC) (authored by martinvonz, committed by ).
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D4099?vs=9874&id=9934
REVISION DETAIL
https://phab.mercurial-scm.org/D4099
AFFECTED FILES
hgext/narrow/__init__.py
hgext/narrow/narrowrepo.py
mercurial/localrepo.py
mercurial/narrowspec.py
mercurial/store.py
tests/test-narrow-debugcommands.t
tests/test-narrow-pull.t
CHANGE DETAILS
diff --git a/tests/test-narrow-pull.t b/tests/test-narrow-pull.t
--- a/tests/test-narrow-pull.t
+++ b/tests/test-narrow-pull.t
@@ -166,7 +166,6 @@
We should also be able to unshare without breaking everything:
$ hg unshare
- devel-warn: write with no wlock: "narrowspec" at: */hgext/narrow/narrowrepo.py:* (unsharenarrowspec) (glob)
$ hg verify
checking changesets
checking manifests
diff --git a/tests/test-narrow-debugcommands.t b/tests/test-narrow-debugcommands.t
--- a/tests/test-narrow-debugcommands.t
+++ b/tests/test-narrow-debugcommands.t
@@ -1,7 +1,7 @@
$ . "$TESTDIR/narrow-library.sh"
$ hg init repo
$ cd repo
- $ cat << EOF > .hg/narrowspec
+ $ cat << EOF > .hg/store/narrowspec
> [include]
> path:foo
> [exclude]
diff --git a/mercurial/store.py b/mercurial/store.py
--- a/mercurial/store.py
+++ b/mercurial/store.py
@@ -317,8 +317,8 @@
mode = None
return mode
-_data = ('data meta 00manifest.d 00manifest.i 00changelog.d 00changelog.i'
- ' phaseroots obsstore')
+_data = ('narrowspec data meta 00manifest.d 00manifest.i'
+ ' 00changelog.d 00changelog.i phaseroots obsstore')
def isrevlog(f, kind, st):
return kind == stat.S_IFREG and f[-2:] in ('.i', '.d')
@@ -546,7 +546,7 @@
raise
def copylist(self):
- d = ('data meta dh fncache phaseroots obsstore'
+ d = ('narrowspec data meta dh fncache phaseroots obsstore'
' 00manifest.d 00manifest.i 00changelog.d 00changelog.i')
return (['requires', '00changelog.i'] +
['store/' + f for f in d.split()])
diff --git a/mercurial/narrowspec.py b/mercurial/narrowspec.py
--- a/mercurial/narrowspec.py
+++ b/mercurial/narrowspec.py
@@ -108,7 +108,7 @@
def load(repo):
try:
- spec = repo.vfs.read(FILENAME)
+ spec = repo.svfs.read(FILENAME)
except IOError as e:
# Treat "narrowspec does not exist" the same as "narrowspec file exists
# and is empty".
@@ -125,19 +125,19 @@
def save(repo, includepats, excludepats):
spec = format(includepats, excludepats)
- repo.vfs.write(FILENAME, spec)
+ repo.svfs.write(FILENAME, spec)
def savebackup(repo, backupname):
if repository.NARROW_REQUIREMENT not in repo.requirements:
return
vfs = repo.vfs
vfs.tryunlink(backupname)
- util.copyfile(vfs.join(FILENAME), vfs.join(backupname), hardlink=True)
+ util.copyfile(repo.svfs.join(FILENAME), vfs.join(backupname), hardlink=True)
def restorebackup(repo, backupname):
if repository.NARROW_REQUIREMENT not in repo.requirements:
return
- repo.vfs.rename(backupname, FILENAME)
+ util.rename(repo.vfs.join(backupname), repo.svfs.join(FILENAME))
def clearbackup(repo, backupname):
if repository.NARROW_REQUIREMENT not in repo.requirements:
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -811,7 +811,7 @@
" working parent %s!\n") % short(node))
return nullid
- @repofilecache(narrowspec.FILENAME)
+ @storecache(narrowspec.FILENAME)
def narrowpats(self):
"""matcher patterns for this repository's narrowspec
@@ -823,7 +823,7 @@
source = hg.sharedreposource(self)
return narrowspec.load(source)
- @repofilecache(narrowspec.FILENAME)
+ @storecache(narrowspec.FILENAME)
def _narrowmatch(self):
if repository.NARROW_REQUIREMENT not in self.requirements:
return matchmod.always(self.root, '')
diff --git a/hgext/narrow/narrowrepo.py b/hgext/narrow/narrowrepo.py
--- a/hgext/narrow/narrowrepo.py
+++ b/hgext/narrow/narrowrepo.py
@@ -7,34 +7,11 @@
from __future__ import absolute_import
-from mercurial import (
- hg,
- narrowspec,
- repository,
-)
-
from . import (
narrowdirstate,
narrowrevlog,
)
-def wrappostshare(orig, sourcerepo, destrepo, **kwargs):
- orig(sourcerepo, destrepo, **kwargs)
- if repository.NARROW_REQUIREMENT in sourcerepo.requirements:
- with destrepo.wlock():
- with destrepo.vfs('shared', 'a') as fp:
- fp.write(narrowspec.FILENAME + '\n')
-
-def unsharenarrowspec(orig, ui, repo, repopath):
- if (repository.NARROW_REQUIREMENT in repo.requirements
- and repo.path == repopath and repo.shared()):
- srcrepo = hg.sharedreposource(repo)
- with srcrepo.vfs(narrowspec.FILENAME) as f:
- spec = f.read()
- with repo.vfs(narrowspec.FILENAME, 'w') as f:
- f.write(spec)
- return orig(ui, repo, repopath)
-
def wraprepo(repo):
"""Enables narrow clone functionality on a single local repository."""
diff --git a/hgext/narrow/__init__.py b/hgext/narrow/__init__.py
--- a/hgext/narrow/__init__.py
+++ b/hgext/narrow/__init__.py
@@ -16,7 +16,6 @@
from mercurial import (
extensions,
- hg,
localrepo,
registrar,
repository,
@@ -86,8 +85,6 @@
def extsetup(ui):
extensions.wrapfunction(verifymod.verifier, '__init__', _verifierinit)
- extensions.wrapfunction(hg, 'postshare', narrowrepo.wrappostshare)
- extensions.wrapfunction(hg, 'copystore', narrowrepo.unsharenarrowspec)
templatekeyword = narrowtemplates.templatekeyword
revsetpredicate = narrowtemplates.revsetpredicate
To: martinvonz, durin42, #hg-reviewers
Cc: yuja, mercurial-devel
More information about the Mercurial-devel
mailing list