diff mercurial/statichttprepo.py @ 6028:6605a03cbf87

make static-http work with empty repos (issue965)
author Dirkjan Ochtman <dirkjan@ochtman.nl>
date Fri, 08 Feb 2008 11:50:37 +0100
parents 639935f2e63a
children e75aab656f46
line wrap: on
line diff
--- a/mercurial/statichttprepo.py	Wed Feb 06 23:09:13 2008 +0100
+++ b/mercurial/statichttprepo.py	Fri Feb 08 11:50:37 2008 +0100
@@ -9,14 +9,16 @@
 
 from i18n import _
 import changelog, filelog, httprangereader
-import repo, localrepo, manifest, os, urllib, urllib2, util
+import repo, localrepo, manifest, util
+import urllib, urllib2, errno
 
 class rangereader(httprangereader.httprangereader):
     def read(self, size=None):
         try:
             return httprangereader.httprangereader.read(self, size)
         except urllib2.HTTPError, inst:
-            raise IOError(None, inst)
+            num = inst.code == 404 and errno.ENOENT or None
+            raise IOError(num, inst)
         except urllib2.URLError, inst:
             raise IOError(None, inst.reason[1])
 
@@ -35,11 +37,17 @@
 
         self.path = path.rstrip('/') + "/.hg"
         self.opener = opener(self.path)
+
         # find requirements
         try:
             requirements = self.opener("requires").read().splitlines()
-        except IOError:
-            requirements = []
+        except IOError, inst:
+            if inst.errno == errno.ENOENT:
+                msg = _("'%s' does not appear to be an hg repository") % path
+                raise repo.RepoError(msg)
+            else:
+                requirements = []
+
         # check them
         for r in requirements:
             if r not in self.supported: