D6215: localrepo: don't allow lookup of working directory revision

martinvonz (Martin von Zweigbergk) phabricator at mercurial-scm.org
Fri Apr 5 14:34:33 EDT 2019


martinvonz created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  It seems that repo.lookup(), which is what supports the "lookup" wire
  protocol command, should not allow the working copy revision
  input.
  
  This fixes both the pull test and the convert test I just added.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D6215

AFFECTED FILES
  mercurial/localrepo.py
  tests/test-convert-hg-source.t
  tests/test-pull.t

CHANGE DETAILS

diff --git a/tests/test-pull.t b/tests/test-pull.t
--- a/tests/test-pull.t
+++ b/tests/test-pull.t
@@ -76,10 +76,9 @@
   [255]
 
 Test pull of working copy revision
-BROKEN: should give a better error message
   $ hg pull -r 'ffffffffffff'
   pulling from http://foo@localhost:$HGPORT/
-  abort: b2a_hex() argument 1 must be string or buffer, not None!
+  abort: unknown revision 'ffffffffffff'!
   [255]
 
 Issue622: hg init && hg pull -u URL doesn't checkout default branch
diff --git a/tests/test-convert-hg-source.t b/tests/test-convert-hg-source.t
--- a/tests/test-convert-hg-source.t
+++ b/tests/test-convert-hg-source.t
@@ -221,11 +221,10 @@
   $ hg ci -Aqm 'the working copy is called ffffffffffff'
 
   $ cd ..
-BROKEN: crashes when the "ffffffffffff" is encountered
   $ hg convert commit-references new-commit-references -q \
-  >     --config convert.hg.startrev=1 2>&1 | grep TypeError
-  TypeError: b2a_hex() argument 1 must be string or buffer, not None
+  >     --config convert.hg.startrev=1 2>&1
   $ cd new-commit-references
   $ hg log -T '{node|short} {desc}\n'
+  0becf8e61603 the working copy is called ffffffffffff
   38a97fe212e7 the previous commit was 3cf70f7c1f3b
   3cf70f7c1f3b initial
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -1564,7 +1564,10 @@
                 pass
 
     def lookup(self, key):
-        return scmutil.revsymbol(self, key).node()
+        node = scmutil.revsymbol(self, key).node()
+        if node is None:
+            raise error.RepoLookupError(_("unknown revision '%s'") % key)
+        return node
 
     def lookupbranch(self, key):
         if self.branchmap().hasbranch(key):



To: martinvonz, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list