[PATCH 2 of 3] requireme: show all missing features in the error message

Pierre-Yves David pierre-yves.david at ens-lyon.org
Fri Jun 24 19:34:02 CDT 2011


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at ens-lyon.org>
# Date 1308961824 -7200
# Branch stable
# Node ID 05abdba22279fc68ba0af35f1892c95a651b2f5a
# Parent  5da234809098bece1bd14df96cfe141249e11f58
requireme: 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)

diff -r 5da234809098 -r 05abdba22279 mercurial/scmutil.py
--- a/mercurial/scmutil.py	Sat Jun 25 02:30:17 2011 +0200
+++ b/mercurial/scmutil.py	Sat Jun 25 02:30:24 2011 +0200
@@ -696,10 +696,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
diff -r 5da234809098 -r 05abdba22279 tests/test-commit.t
--- a/tests/test-commit.t	Sat Jun 25 02:30:17 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 ..
diff -r 5da234809098 -r 05abdba22279 tests/test-identify.t
--- a/tests/test-identify.t	Sat Jun 25 02:30:17 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]
 
diff -r 5da234809098 -r 05abdba22279 tests/test-requires.t
--- a/tests/test-requires.t	Sat Jun 25 02:30:17 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]


More information about the Mercurial-devel mailing list