[PATCH 1 of 2] introduce new function scmutil.readrequires
Adrian Buehlmann
adrian at cadifra.com
Tue May 31 12:30:35 CDT 2011
# HG changeset patch
# User Adrian Buehlmann <adrian at cadifra.com>
# Date 1306862178 -7200
# Node ID 91334f1a57fcd51a76704311d2aac52150417215
# Parent bd34a027f3edad33e71c02def67eb446473b6cf4
introduce new function scmutil.readrequires
for reading and parsing the .hg/requires file
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -68,16 +68,12 @@
elif create:
raise error.RepoError(_("repository %s already exists") % path)
else:
- # find requirements
- requirements = set()
try:
- requirements = set(self.opener.read("requires").splitlines())
+ requirements = scmutil.readrequires(self.opener, self.supported)
except IOError, inst:
if inst.errno != errno.ENOENT:
raise
- for r in requirements - self.supported:
- raise error.RequirementError(
- _("requirement '%s' not supported") % r)
+ requirements = set()
self.sharedpath = self.path
try:
diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py
--- a/mercurial/scmutil.py
+++ b/mercurial/scmutil.py
@@ -691,3 +691,13 @@
wctx.add([dst])
elif not dryrun:
wctx.copy(origsrc, dst)
+
+def readrequires(opener, supported):
+ '''Reads and parses .hg/requires and checks if all entries found
+ are in the list of supported features.'''
+ requirements = set(opener.read("requires").splitlines())
+ for r in requirements:
+ if r not in supported:
+ raise error.RequirementError(
+ _("requirement '%s' not supported") % r)
+ return requirements
diff --git a/mercurial/statichttprepo.py b/mercurial/statichttprepo.py
--- a/mercurial/statichttprepo.py
+++ b/mercurial/statichttprepo.py
@@ -91,12 +91,13 @@
opener = build_opener(ui, authinfo)
self.opener = opener(self.path)
- # find requirements
try:
- requirements = self.opener.read("requires").splitlines()
+ requirements = scmutil.readrequires(self.opener, self.supported)
except IOError, inst:
if inst.errno != errno.ENOENT:
raise
+ requirements = set()
+
# check if it is a non-empty old-style repository
try:
fp = self.opener("00changelog.i")
@@ -108,13 +109,6 @@
# we do not care about empty old-style repositories here
msg = _("'%s' does not appear to be an hg repository") % path
raise error.RepoError(msg)
- requirements = []
-
- # check them
- for r in requirements:
- if r not in self.supported:
- raise error.RequirementError(
- _("requirement '%s' not supported") % r)
# setup store
self.store = store.store(requirements, self.path, opener)
More information about the Mercurial-devel
mailing list