localrepo: better error when a repo exists but we lack permissions
authorValentin Gatien-Baron <valentin.gatienbaron@gmail.com>
Sat, 04 Aug 2018 21:31:46 -0400
changeset 38986 ac0a87160012
parent 38985 d85b0d81112b
child 38987 9204445ad54c
localrepo: better error when a repo exists but we lack permissions Claiming "repository foo not found" when the repository does exist causes confusion regularly ("where is the typo?"). Differential Revision: https://phab.mercurial-scm.org/D4122
mercurial/localrepo.py
tests/test-clone.t
--- a/mercurial/localrepo.py	Mon Aug 06 11:32:16 2018 -0700
+++ b/mercurial/localrepo.py	Sat Aug 04 21:31:46 2018 -0400
@@ -495,6 +495,11 @@
                         ' dummy changelog to prevent using the old repo layout'
                     )
             else:
+                try:
+                    self.vfs.stat()
+                except OSError as inst:
+                    if inst.errno != errno.ENOENT:
+                        raise
                 raise error.RepoError(_("repository %s not found") % path)
         elif create:
             raise error.RepoError(_("repository %s already exists") % path)
--- a/tests/test-clone.t	Mon Aug 06 11:32:16 2018 -0700
+++ b/tests/test-clone.t	Sat Aug 04 21:31:46 2018 -0400
@@ -642,7 +642,7 @@
   $ mkdir a
   $ chmod 000 a
   $ hg clone a b
-  abort: repository a not found!
+  abort: Permission denied: '$TESTTMP/fail/a/.hg'
   [255]
 
 Inaccessible destination
@@ -665,7 +665,7 @@
 
   $ mkfifo a
   $ hg clone a b
-  abort: repository a not found!
+  abort: $ENOTDIR$: '$TESTTMP/fail/a/.hg'
   [255]
   $ rm a