requirements: show all missing features in the error message.
Displaying all missing featureis help people to solve the issue (choosing the
right version, creation the right repo)
--- a/mercurial/scmutil.py Fri Jun 24 23:29:51 2011 +0200
+++ b/mercurial/scmutil.py Sat Jun 25 02:30:24 2011 +0200
@@ -698,10 +698,14 @@
'''Reads and parses .hg/requires and checks if all entries found
are in the list of supported features.'''
requirements = set(opener.read("requires").splitlines())
+ missings = []
for r in requirements:
if r not in supported:
if not r or not r[0].isalnum():
raise error.RequirementError(_(".hg/requires file is corrupt"))
- raise error.RequirementError(_("unknown repository format: "
- "requires feature '%s' (upgrade Mercurial)") % r)
+ missings.append(r)
+ missings.sort()
+ if missings:
+ raise error.RequirementError(_("unknown repository format: "
+ "requires features '%s' (upgrade Mercurial)") % "', '".join(missings))
return requirements
--- a/tests/test-commit.t Fri Jun 24 23:29:51 2011 +0200
+++ b/tests/test-commit.t Sat Jun 25 02:30:24 2011 +0200
@@ -98,7 +98,7 @@
$ echo foo >> foo
$ echo fake >> .hg/requires
$ hg commit -m bla
- abort: unknown repository format: requires feature 'fake' (upgrade Mercurial)!
+ abort: unknown repository format: requires features 'fake' (upgrade Mercurial)!
[255]
$ cd ..
--- a/tests/test-identify.t Fri Jun 24 23:29:51 2011 +0200
+++ b/tests/test-identify.t Sat Jun 25 02:30:24 2011 +0200
@@ -107,11 +107,11 @@
$ echo fake >> .hg/requires
$ hg id
- abort: unknown repository format: requires feature 'fake' (upgrade Mercurial)!
+ abort: unknown repository format: requires features 'fake' (upgrade Mercurial)!
[255]
$ cd ..
$ hg id test
- abort: unknown repository format: requires feature 'fake' (upgrade Mercurial)!
+ abort: unknown repository format: requires features 'fake' (upgrade Mercurial)!
[255]
--- a/tests/test-requires.t Fri Jun 24 23:29:51 2011 +0200
+++ b/tests/test-requires.t Sat Jun 25 02:30:24 2011 +0200
@@ -9,5 +9,9 @@
[255]
$ echo indoor-pool > .hg/requires
$ hg tip
- abort: unknown repository format: requires feature 'indoor-pool' (upgrade Mercurial)!
+ abort: unknown repository format: requires features 'indoor-pool' (upgrade Mercurial)!
[255]
+ $ echo outdoor-pool >> .hg/requires
+ $ hg tip
+ abort: unknown repository format: requires features 'indoor-pool', 'outdoor-pool' (upgrade Mercurial)!
+ [255]