##// END OF EJS Templates
error: move repo errors...
Matt Mackall -
r7637:1d54e2f6 default
parent child Browse files
Show More
@@ -30,7 +30,6 b' from mercurial import extensions'
30 from mercurial.i18n import _
30 from mercurial.i18n import _
31 from mercurial import cmdutil, util, commands, changelog
31 from mercurial import cmdutil, util, commands, changelog
32 from mercurial.node import nullid, nullrev
32 from mercurial.node import nullid, nullrev
33 from mercurial.repo import RepoError
34 import mercurial, mercurial.localrepo, mercurial.repair, os
33 import mercurial, mercurial.localrepo, mercurial.repair, os
35
34
36 def parse(repo):
35 def parse(repo):
@@ -15,7 +15,6 b''
15
15
16 import os, time
16 import os, time
17 from mercurial.i18n import _
17 from mercurial.i18n import _
18 from mercurial.repo import RepoError
19 from mercurial.node import bin, hex, nullid
18 from mercurial.node import bin, hex, nullid
20 from mercurial import hg, util, context, error
19 from mercurial import hg, util, context, error
21
20
@@ -33,7 +32,7 b' class mercurial_sink(converter_sink):'
33 self.repo = hg.repository(self.ui, path)
32 self.repo = hg.repository(self.ui, path)
34 if not self.repo.local():
33 if not self.repo.local():
35 raise NoRepo(_('%s is not a local Mercurial repo') % path)
34 raise NoRepo(_('%s is not a local Mercurial repo') % path)
36 except RepoError, err:
35 except error.RepoError, err:
37 ui.print_exc()
36 ui.print_exc()
38 raise NoRepo(err.args[0])
37 raise NoRepo(err.args[0])
39 else:
38 else:
@@ -43,7 +42,7 b' class mercurial_sink(converter_sink):'
43 if not self.repo.local():
42 if not self.repo.local():
44 raise NoRepo(_('%s is not a local Mercurial repo') % path)
43 raise NoRepo(_('%s is not a local Mercurial repo') % path)
45 self.created.append(path)
44 self.created.append(path)
46 except RepoError, err:
45 except error.RepoError, err:
47 ui.print_exc()
46 ui.print_exc()
48 raise NoRepo("could not create hg repo %s as sink" % path)
47 raise NoRepo("could not create hg repo %s as sink" % path)
49 self.lock = None
48 self.lock = None
@@ -159,7 +158,7 b' class mercurial_sink(converter_sink):'
159 try:
158 try:
160 parentctx = self.repo[self.tagsbranch]
159 parentctx = self.repo[self.tagsbranch]
161 tagparent = parentctx.node()
160 tagparent = parentctx.node()
162 except RepoError, inst:
161 except error.RepoError, inst:
163 parentctx = None
162 parentctx = None
164 tagparent = nullid
163 tagparent = nullid
165
164
@@ -200,8 +199,8 b' class mercurial_source(converter_source)'
200 # try to provoke an exception if this isn't really a hg
199 # try to provoke an exception if this isn't really a hg
201 # repo, but some other bogus compatible-looking url
200 # repo, but some other bogus compatible-looking url
202 if not self.repo.local():
201 if not self.repo.local():
203 raise RepoError()
202 raise error.RepoError()
204 except RepoError:
203 except error.RepoError:
205 ui.print_exc()
204 ui.print_exc()
206 raise NoRepo("%s is not a local Mercurial repo" % path)
205 raise NoRepo("%s is not a local Mercurial repo" % path)
207 self.lastrev = None
206 self.lastrev = None
@@ -213,7 +212,7 b' class mercurial_source(converter_source)'
213 if startnode is not None:
212 if startnode is not None:
214 try:
213 try:
215 startnode = self.repo.lookup(startnode)
214 startnode = self.repo.lookup(startnode)
216 except repo.RepoError:
215 except error.RepoError:
217 raise util.Abort(_('%s is not a valid start revision')
216 raise util.Abort(_('%s is not a valid start revision')
218 % startnode)
217 % startnode)
219 startrev = self.repo.changelog.rev(startnode)
218 startrev = self.repo.changelog.rev(startnode)
@@ -31,9 +31,8 b' refresh contents of top applied patch '
31
31
32 from mercurial.i18n import _
32 from mercurial.i18n import _
33 from mercurial.node import bin, hex, short
33 from mercurial.node import bin, hex, short
34 from mercurial.repo import RepoError
35 from mercurial import commands, cmdutil, hg, patch, revlog, util
34 from mercurial import commands, cmdutil, hg, patch, revlog, util
36 from mercurial import repair, extensions, url
35 from mercurial import repair, extensions, url, error
37 import os, sys, re, errno
36 import os, sys, re, errno
38
37
39 commands.norepo += " qclone"
38 commands.norepo += " qclone"
@@ -1741,7 +1740,7 b' def clone(ui, source, dest=None, **opts)'
1741 patchespath = opts['patches'] or patchdir(sr)
1740 patchespath = opts['patches'] or patchdir(sr)
1742 try:
1741 try:
1743 pr = hg.repository(ui, patchespath)
1742 pr = hg.repository(ui, patchespath)
1744 except RepoError:
1743 except error.RepoError:
1745 raise util.Abort(_('versioned patch repository not found'
1744 raise util.Abort(_('versioned patch repository not found'
1746 ' (see qinit -c)'))
1745 ' (see qinit -c)'))
1747 qbase, destrev = None, None
1746 qbase, destrev = None, None
@@ -1757,7 +1756,7 b' def clone(ui, source, dest=None, **opts)'
1757 elif sr.capable('lookup'):
1756 elif sr.capable('lookup'):
1758 try:
1757 try:
1759 qbase = sr.lookup('qbase')
1758 qbase = sr.lookup('qbase')
1760 except RepoError:
1759 except error.RepoError:
1761 pass
1760 pass
1762 ui.note(_('cloning main repo\n'))
1761 ui.note(_('cloning main repo\n'))
1763 sr, dr = hg.clone(ui, sr.url(), dest,
1762 sr, dr = hg.clone(ui, sr.url(), dest,
@@ -24,6 +24,7 b' For example, if you can refer to a revis'
24 foo~2 = foo^1^1 = foo^^ = first parent of first parent of foo
24 foo~2 = foo^1^1 = foo^^ = first parent of first parent of foo
25 '''
25 '''
26 import mercurial.repo
26 import mercurial.repo
27 from mercurial import error
27
28
28 def reposetup(ui, repo):
29 def reposetup(ui, repo):
29 if not repo.local():
30 if not repo.local():
@@ -34,7 +35,7 b' def reposetup(ui, repo):'
34 try:
35 try:
35 _super = super(parentrevspecrepo, self)
36 _super = super(parentrevspecrepo, self)
36 return _super.lookup(key)
37 return _super.lookup(key)
37 except mercurial.repo.RepoError:
38 except error.RepoError:
38 pass
39 pass
39
40
40 circ = key.find('^')
41 circ = key.find('^')
@@ -50,7 +51,7 b' def reposetup(ui, repo):'
50 base = key[:end]
51 base = key[:end]
51 try:
52 try:
52 node = _super.lookup(base)
53 node = _super.lookup(base)
53 except mercurial.repo.RepoError:
54 except error.RepoError:
54 # eek - reraise the first error
55 # eek - reraise the first error
55 return _super.lookup(key)
56 return _super.lookup(key)
56
57
@@ -156,7 +156,7 b' class bundlerepository(localrepo.localre'
156 self._tempparent = None
156 self._tempparent = None
157 try:
157 try:
158 localrepo.localrepository.__init__(self, ui, path)
158 localrepo.localrepository.__init__(self, ui, path)
159 except repo.RepoError:
159 except error.RepoError:
160 self._tempparent = tempfile.mkdtemp()
160 self._tempparent = tempfile.mkdtemp()
161 tmprepo = localrepo.instance(ui,self._tempparent,1)
161 tmprepo = localrepo.instance(ui,self._tempparent,1)
162 localrepo.localrepository.__init__(self, ui, self._tempparent)
162 localrepo.localrepository.__init__(self, ui, self._tempparent)
@@ -6,7 +6,6 b''
6 # of the GNU General Public License, incorporated herein by reference.
6 # of the GNU General Public License, incorporated herein by reference.
7
7
8 from node import hex, nullid, nullrev, short
8 from node import hex, nullid, nullrev, short
9 from repo import RepoError, NoCapability
10 from i18n import _, gettext
9 from i18n import _, gettext
11 import os, re, sys
10 import os, re, sys
12 import hg, util, revlog, bundlerepo, extensions, copies, context, error
11 import hg, util, revlog, bundlerepo, extensions, copies, context, error
@@ -1671,7 +1670,7 b' def import_(ui, repo, patch1, *patches, '
1671 p2 = repo.lookup(p2)
1670 p2 = repo.lookup(p2)
1672 if p1 == wp[0].node():
1671 if p1 == wp[0].node():
1673 repo.dirstate.setparents(p1, p2)
1672 repo.dirstate.setparents(p1, p2)
1674 except RepoError:
1673 except error.RepoError:
1675 pass
1674 pass
1676 if opts.get('exact') or opts.get('import_branch'):
1675 if opts.get('exact') or opts.get('import_branch'):
1677 repo.dirstate.setbranch(branch or 'default')
1676 repo.dirstate.setbranch(branch or 'default')
@@ -2179,10 +2178,10 b' def pull(ui, repo, source="default", **o'
2179 if revs:
2178 if revs:
2180 try:
2179 try:
2181 revs = [other.lookup(rev) for rev in revs]
2180 revs = [other.lookup(rev) for rev in revs]
2182 except NoCapability:
2181 except error.CapabilityError:
2183 error = _("Other repository doesn't support revision lookup, "
2182 err = _("Other repository doesn't support revision lookup, "
2184 "so a rev cannot be specified.")
2183 "so a rev cannot be specified.")
2185 raise util.Abort(error)
2184 raise util.Abort(err)
2186
2185
2187 modheads = repo.pull(other, heads=revs, force=opts.get('force'))
2186 modheads = repo.pull(other, heads=revs, force=opts.get('force'))
2188 return postincoming(ui, repo, modheads, opts.get('update'), checkout)
2187 return postincoming(ui, repo, modheads, opts.get('update'), checkout)
@@ -2649,7 +2648,7 b' def serve(ui, repo, **opts):'
2649
2648
2650 if opts["stdio"]:
2649 if opts["stdio"]:
2651 if repo is None:
2650 if repo is None:
2652 raise RepoError(_("There is no Mercurial repository here"
2651 raise error.RepoError(_("There is no Mercurial repository here"
2653 " (.hg not found)"))
2652 " (.hg not found)"))
2654 s = sshserver.sshserver(ui, repo)
2653 s = sshserver.sshserver(ui, repo)
2655 s.serve_forever()
2654 s.serve_forever()
@@ -2664,8 +2663,8 b' def serve(ui, repo, **opts):'
2664 repo.ui.setconfig("web", o, str(opts[o]))
2663 repo.ui.setconfig("web", o, str(opts[o]))
2665
2664
2666 if repo is None and not ui.config("web", "webdir_conf"):
2665 if repo is None and not ui.config("web", "webdir_conf"):
2667 raise RepoError(_("There is no Mercurial repository here"
2666 raise error.RepoError(_("There is no Mercurial repository here"
2668 " (.hg not found)"))
2667 " (.hg not found)"))
2669
2668
2670 class service:
2669 class service:
2671 def init(self):
2670 def init(self):
@@ -6,7 +6,6 b''
6 # of the GNU General Public License, incorporated herein by reference.
6 # of the GNU General Public License, incorporated herein by reference.
7
7
8 from i18n import _
8 from i18n import _
9 from repo import RepoError
10 import os, sys, atexit, signal, pdb, socket, errno, shlex, time
9 import os, sys, atexit, signal, pdb, socket, errno, shlex, time
11 import util, commands, hg, lock, fancyopts, extensions, hook, error
10 import util, commands, hg, lock, fancyopts, extensions, hook, error
12 import cmdutil
11 import cmdutil
@@ -62,7 +61,7 b' def _runcatch(ui, args):'
62 except cmdutil.UnknownCommand, inst:
61 except cmdutil.UnknownCommand, inst:
63 ui.warn(_("hg: unknown command '%s'\n") % inst.args[0])
62 ui.warn(_("hg: unknown command '%s'\n") % inst.args[0])
64 commands.help_(ui, 'shortlist')
63 commands.help_(ui, 'shortlist')
65 except RepoError, inst:
64 except error.RepoError, inst:
66 ui.warn(_("abort: %s!\n") % inst)
65 ui.warn(_("abort: %s!\n") % inst)
67 except lock.LockHeld, inst:
66 except lock.LockHeld, inst:
68 if inst.errno == errno.ETIMEDOUT:
67 if inst.errno == errno.ETIMEDOUT:
@@ -342,7 +341,7 b' def _dispatch(ui, args):'
342 if not repo.local():
341 if not repo.local():
343 raise util.Abort(_("repository '%s' is not local") % path)
342 raise util.Abort(_("repository '%s' is not local") % path)
344 ui.setconfig("bundle", "mainreporoot", repo.root)
343 ui.setconfig("bundle", "mainreporoot", repo.root)
345 except RepoError:
344 except error.RepoError:
346 if cmd not in commands.optionalrepo.split():
345 if cmd not in commands.optionalrepo.split():
347 if args and not path: # try to infer -R from command args
346 if args and not path: # try to infer -R from command args
348 repos = map(_findrepo, args)
347 repos = map(_findrepo, args)
@@ -350,8 +349,8 b' def _dispatch(ui, args):'
350 if guess and repos.count(guess) == len(repos):
349 if guess and repos.count(guess) == len(repos):
351 return _dispatch(ui, ['--repository', guess] + fullargs)
350 return _dispatch(ui, ['--repository', guess] + fullargs)
352 if not path:
351 if not path:
353 raise RepoError(_("There is no Mercurial repository here"
352 raise error.RepoError(_("There is no Mercurial repository"
354 " (.hg not found)"))
353 " here (.hg not found)"))
355 raise
354 raise
356 args.insert(0, repo)
355 args.insert(0, repo)
357
356
@@ -27,3 +27,9 b' class LookupError(RevlogError, KeyError)'
27
27
28 class ParseError(Exception):
28 class ParseError(Exception):
29 """Exception raised on errors in parsing the command line."""
29 """Exception raised on errors in parsing the command line."""
30
31 class RepoError(Exception):
32 pass
33
34 class CapabilityError(RepoError):
35 pass
@@ -8,7 +8,6 b''
8
8
9 import os, mimetypes
9 import os, mimetypes
10 from mercurial.node import hex, nullid
10 from mercurial.node import hex, nullid
11 from mercurial.repo import RepoError
12 from mercurial import ui, hg, util, hook, error
11 from mercurial import ui, hg, util, hook, error
13 from mercurial import templater, templatefilters
12 from mercurial import templater, templatefilters
14 from common import get_mtime, style_map, ErrorResponse
13 from common import get_mtime, style_map, ErrorResponse
@@ -191,7 +190,7 b' class hgweb(object):'
191 if 'manifest' not in msg:
190 if 'manifest' not in msg:
192 msg = 'revision not found: %s' % err.name
191 msg = 'revision not found: %s' % err.name
193 return tmpl('error', error=msg)
192 return tmpl('error', error=msg)
194 except (RepoError, error.RevlogError), inst:
193 except (error.RepoError, error.RevlogError), inst:
195 req.respond(HTTP_SERVER_ERROR, ctype)
194 req.respond(HTTP_SERVER_ERROR, ctype)
196 return tmpl('error', error=str(inst))
195 return tmpl('error', error=str(inst))
197 except ErrorResponse, inst:
196 except ErrorResponse, inst:
@@ -8,8 +8,7 b''
8
8
9 import os
9 import os
10 from mercurial.i18n import _
10 from mercurial.i18n import _
11 from mercurial.repo import RepoError
11 from mercurial import ui, hg, util, templater, templatefilters, error
12 from mercurial import ui, hg, util, templater, templatefilters
13 from common import ErrorResponse, get_mtime, staticfile, style_map, paritygen,\
12 from common import ErrorResponse, get_mtime, staticfile, style_map, paritygen,\
14 get_contact, HTTP_OK, HTTP_NOT_FOUND, HTTP_SERVER_ERROR
13 get_contact, HTTP_OK, HTTP_NOT_FOUND, HTTP_SERVER_ERROR
15 from hgweb_mod import hgweb
14 from hgweb_mod import hgweb
@@ -150,7 +149,7 b' class hgwebdir(object):'
150 except IOError, inst:
149 except IOError, inst:
151 msg = inst.strerror
150 msg = inst.strerror
152 raise ErrorResponse(HTTP_SERVER_ERROR, msg)
151 raise ErrorResponse(HTTP_SERVER_ERROR, msg)
153 except RepoError, inst:
152 except error.RepoError, inst:
154 raise ErrorResponse(HTTP_SERVER_ERROR, str(inst))
153 raise ErrorResponse(HTTP_SERVER_ERROR, str(inst))
155
154
156 # browse subdirectories
155 # browse subdirectories
@@ -7,8 +7,7 b''
7 # of the GNU General Public License, incorporated herein by reference.
7 # of the GNU General Public License, incorporated herein by reference.
8
8
9 import os, sys, errno, urllib, BaseHTTPServer, socket, SocketServer, traceback
9 import os, sys, errno, urllib, BaseHTTPServer, socket, SocketServer, traceback
10 from mercurial import hg, util
10 from mercurial import hg, util, error
11 from mercurial.repo import RepoError
12 from hgweb_mod import hgweb
11 from hgweb_mod import hgweb
13 from hgwebdir_mod import hgwebdir
12 from hgwebdir_mod import hgwebdir
14 from mercurial.i18n import _
13 from mercurial.i18n import _
@@ -249,8 +248,8 b' def create_server(ui, repo):'
249 elif repo is not None:
248 elif repo is not None:
250 hgwebobj = hgweb(hg.repository(repo.ui, repo.root))
249 hgwebobj = hgweb(hg.repository(repo.ui, repo.root))
251 else:
250 else:
252 raise RepoError(_("There is no Mercurial repository here"
251 raise error.RepoError(_("There is no Mercurial repository"
253 " (.hg not found)"))
252 " here (.hg not found)"))
254 return hgwebobj
253 return hgwebobj
255 self.application = make_handler()
254 self.application = make_handler()
256
255
@@ -10,7 +10,6 b' import webutil'
10 from mercurial import error, archival, templatefilters
10 from mercurial import error, archival, templatefilters
11 from mercurial.node import short, hex, nullid
11 from mercurial.node import short, hex, nullid
12 from mercurial.util import binary, datestr
12 from mercurial.util import binary, datestr
13 from mercurial.repo import RepoError
14 from common import paritygen, staticfile, get_contact, ErrorResponse
13 from common import paritygen, staticfile, get_contact, ErrorResponse
15 from common import HTTP_OK, HTTP_FORBIDDEN, HTTP_NOT_FOUND
14 from common import HTTP_OK, HTTP_FORBIDDEN, HTTP_NOT_FOUND
16 from mercurial import graphmod, util
15 from mercurial import graphmod, util
@@ -169,7 +168,7 b' def changelog(web, req, tmpl, shortlog ='
169 hi = len(web.repo) - 1
168 hi = len(web.repo) - 1
170 try:
169 try:
171 ctx = web.repo[hi]
170 ctx = web.repo[hi]
172 except RepoError:
171 except error.RepoError:
173 return _search(web, tmpl, hi) # XXX redirect to 404 page?
172 return _search(web, tmpl, hi) # XXX redirect to 404 page?
174
173
175 def changelist(limit=0, **map):
174 def changelist(limit=0, **map):
@@ -7,10 +7,8 b''
7 # of the GNU General Public License, incorporated herein by reference.
7 # of the GNU General Public License, incorporated herein by reference.
8
8
9 import os, copy
9 import os, copy
10 from mercurial import match, patch
10 from mercurial import match, patch, util, error
11 from mercurial.node import hex, nullid
11 from mercurial.node import hex, nullid
12 from mercurial.repo import RepoError
13 from mercurial import util
14
12
15 def up(p):
13 def up(p):
16 if p[0] != "/":
14 if p[0] != "/":
@@ -55,7 +53,7 b' def revnavgen(pos, pagelen, limit, nodef'
55 yield {"label": label, "node": node}
53 yield {"label": label, "node": node}
56
54
57 yield {"label": "tip", "node": "tip"}
55 yield {"label": "tip", "node": "tip"}
58 except RepoError:
56 except error.RepoError:
59 pass
57 pass
60
58
61 return nav
59 return nav
@@ -124,7 +122,7 b' def changectx(repo, req):'
124
122
125 try:
123 try:
126 ctx = repo[changeid]
124 ctx = repo[changeid]
127 except RepoError:
125 except error.RepoError:
128 man = repo.manifest
126 man = repo.manifest
129 ctx = repo[man.linkrev(man.rev(man.lookup(changeid)))]
127 ctx = repo[man.linkrev(man.rev(man.lookup(changeid)))]
130
128
@@ -138,7 +136,7 b' def filectx(repo, req):'
138 changeid = req.form['filenode'][0]
136 changeid = req.form['filenode'][0]
139 try:
137 try:
140 fctx = repo[changeid][path]
138 fctx = repo[changeid][path]
141 except RepoError:
139 except error.RepoError:
142 fctx = repo.filectx(path, fileid=changeid)
140 fctx = repo.filectx(path, fileid=changeid)
143
141
144 return fctx
142 return fctx
@@ -9,8 +9,7 b''
9 from node import bin, hex, nullid
9 from node import bin, hex, nullid
10 from i18n import _
10 from i18n import _
11 import repo, os, urllib, urllib2, urlparse, zlib, util, httplib
11 import repo, os, urllib, urllib2, urlparse, zlib, util, httplib
12 import errno, socket, changegroup, statichttprepo
12 import errno, socket, changegroup, statichttprepo, error, url
13 import url
14
13
15 def zgenerator(f):
14 def zgenerator(f):
16 zd = zlib.decompressobj()
15 zd = zlib.decompressobj()
@@ -48,7 +47,7 b' class httprepository(repo.repository):'
48 if self.caps is None:
47 if self.caps is None:
49 try:
48 try:
50 self.caps = util.set(self.do_read('capabilities').split())
49 self.caps = util.set(self.do_read('capabilities').split())
51 except repo.RepoError:
50 except error.RepoError:
52 self.caps = util.set()
51 self.caps = util.set()
53 self.ui.debug(_('capabilities: %s\n') %
52 self.ui.debug(_('capabilities: %s\n') %
54 (' '.join(self.caps or ['none'])))
53 (' '.join(self.caps or ['none'])))
@@ -99,19 +98,19 b' class httprepository(repo.repository):'
99 proto.startswith('text/plain') or
98 proto.startswith('text/plain') or
100 proto.startswith('application/hg-changegroup')):
99 proto.startswith('application/hg-changegroup')):
101 self.ui.debug(_("Requested URL: '%s'\n") % cu)
100 self.ui.debug(_("Requested URL: '%s'\n") % cu)
102 raise repo.RepoError(_("'%s' does not appear to be an hg repository")
101 raise error.RepoError(_("'%s' does not appear to be an hg repository")
103 % self._url)
102 % self._url)
104
103
105 if proto.startswith('application/mercurial-'):
104 if proto.startswith('application/mercurial-'):
106 try:
105 try:
107 version = proto.split('-', 1)[1]
106 version = proto.split('-', 1)[1]
108 version_info = tuple([int(n) for n in version.split('.')])
107 version_info = tuple([int(n) for n in version.split('.')])
109 except ValueError:
108 except ValueError:
110 raise repo.RepoError(_("'%s' sent a broken Content-Type "
109 raise error.RepoError(_("'%s' sent a broken Content-Type "
111 "header (%s)") % (self._url, proto))
110 "header (%s)") % (self._url, proto))
112 if version_info > (0, 1):
111 if version_info > (0, 1):
113 raise repo.RepoError(_("'%s' uses newer protocol %s") %
112 raise error.RepoError(_("'%s' uses newer protocol %s") %
114 (self._url, version))
113 (self._url, version))
115
114
116 return resp
115 return resp
117
116
@@ -129,7 +128,7 b' class httprepository(repo.repository):'
129 success, data = d[:-1].split(' ', 1)
128 success, data = d[:-1].split(' ', 1)
130 if int(success):
129 if int(success):
131 return bin(data)
130 return bin(data)
132 raise repo.RepoError(data)
131 raise error.RepoError(data)
133
132
134 def heads(self):
133 def heads(self):
135 d = self.do_read("heads")
134 d = self.do_read("heads")
@@ -233,6 +232,6 b' def instance(ui, path, create):'
233 inst = httprepository(ui, path)
232 inst = httprepository(ui, path)
234 inst.between([(nullid, nullid)])
233 inst.between([(nullid, nullid)])
235 return inst
234 return inst
236 except repo.RepoError:
235 except error.RepoError:
237 ui.note('(falling back to static-http)\n')
236 ui.note('(falling back to static-http)\n')
238 return statichttprepo.instance(ui, "static-" + path, create)
237 return statichttprepo.instance(ui, "static-" + path, create)
@@ -47,9 +47,9 b' class localrepository(repo.repository):'
47 reqfile.write("%s\n" % r)
47 reqfile.write("%s\n" % r)
48 reqfile.close()
48 reqfile.close()
49 else:
49 else:
50 raise repo.RepoError(_("repository %s not found") % path)
50 raise error.RepoError(_("repository %s not found") % path)
51 elif create:
51 elif create:
52 raise repo.RepoError(_("repository %s already exists") % path)
52 raise error.RepoError(_("repository %s already exists") % path)
53 else:
53 else:
54 # find requirements
54 # find requirements
55 requirements = []
55 requirements = []
@@ -57,7 +57,7 b' class localrepository(repo.repository):'
57 requirements = self.opener("requires").read().splitlines()
57 requirements = self.opener("requires").read().splitlines()
58 for r in requirements:
58 for r in requirements:
59 if r not in self.supported:
59 if r not in self.supported:
60 raise repo.RepoError(_("requirement '%s' not supported") % r)
60 raise error.RepoError(_("requirement '%s' not supported") % r)
61 except IOError, inst:
61 except IOError, inst:
62 if inst.errno != errno.ENOENT:
62 if inst.errno != errno.ENOENT:
63 raise
63 raise
@@ -460,7 +460,7 b' class localrepository(repo.repository):'
460 key = hex(key)
460 key = hex(key)
461 except:
461 except:
462 pass
462 pass
463 raise repo.RepoError(_("unknown revision '%s'") % key)
463 raise error.RepoError(_("unknown revision '%s'") % key)
464
464
465 def local(self):
465 def local(self):
466 return True
466 return True
@@ -566,7 +566,7 b' class localrepository(repo.repository):'
566
566
567 # abort here if the journal already exists
567 # abort here if the journal already exists
568 if os.path.exists(self.sjoin("journal")):
568 if os.path.exists(self.sjoin("journal")):
569 raise repo.RepoError(_("journal already exists - run hg recover"))
569 raise error.RepoError(_("journal already exists - run hg recover"))
570
570
571 # save dirstate for rollback
571 # save dirstate for rollback
572 try:
572 try:
@@ -1393,7 +1393,8 b' class localrepository(repo.repository):'
1393 # sanity check our fetch list
1393 # sanity check our fetch list
1394 for f in fetch.keys():
1394 for f in fetch.keys():
1395 if f in m:
1395 if f in m:
1396 raise repo.RepoError(_("already have changeset ") + short(f[:4]))
1396 raise error.RepoError(_("already have changeset ")
1397 + short(f[:4]))
1397
1398
1398 if base.keys() == [nullid]:
1399 if base.keys() == [nullid]:
1399 if force:
1400 if force:
@@ -8,12 +8,6 b''
8
8
9 from i18n import _
9 from i18n import _
10
10
11 class RepoError(Exception):
12 pass
13
14 class NoCapability(RepoError):
15 pass
16
17 class repository(object):
11 class repository(object):
18 def capable(self, name):
12 def capable(self, name):
19 '''tell whether repo supports named capability.
13 '''tell whether repo supports named capability.
@@ -31,9 +25,9 b' class repository(object):'
31 def requirecap(self, name, purpose):
25 def requirecap(self, name, purpose):
32 '''raise an exception if the given capability is not present'''
26 '''raise an exception if the given capability is not present'''
33 if not self.capable(name):
27 if not self.capable(name):
34 raise NoCapability(_('cannot %s; remote repository does not '
28 raise error.CapabilityError(
35 'support the %r capability') %
29 _('cannot %s; remote repository does not '
36 (purpose, name))
30 'support the %r capability') % (purpose, name))
37
31
38 def local(self):
32 def local(self):
39 return False
33 return False
@@ -7,7 +7,7 b''
7
7
8 from node import bin, hex
8 from node import bin, hex
9 from i18n import _
9 from i18n import _
10 import repo, os, re, util
10 import repo, os, re, util, error
11
11
12 class remotelock(object):
12 class remotelock(object):
13 def __init__(self, repo):
13 def __init__(self, repo):
@@ -26,7 +26,7 b' class sshrepository(repo.repository):'
26
26
27 m = re.match(r'^ssh://(([^@]+)@)?([^:/]+)(:(\d+))?(/(.*))?$', path)
27 m = re.match(r'^ssh://(([^@]+)@)?([^:/]+)(:(\d+))?(/(.*))?$', path)
28 if not m:
28 if not m:
29 self.raise_(repo.RepoError(_("couldn't parse location %s") % path))
29 self.raise_(error.RepoError(_("couldn't parse location %s") % path))
30
30
31 self.user = m.group(2)
31 self.user = m.group(2)
32 self.host = m.group(3)
32 self.host = m.group(3)
@@ -45,7 +45,7 b' class sshrepository(repo.repository):'
45 ui.note(_('running %s\n') % cmd)
45 ui.note(_('running %s\n') % cmd)
46 res = util.system(cmd)
46 res = util.system(cmd)
47 if res != 0:
47 if res != 0:
48 self.raise_(repo.RepoError(_("could not create remote repo")))
48 self.raise_(error.RepoError(_("could not create remote repo")))
49
49
50 self.validate_repo(ui, sshcmd, args, remotecmd)
50 self.validate_repo(ui, sshcmd, args, remotecmd)
51
51
@@ -78,7 +78,7 b' class sshrepository(repo.repository):'
78 lines.append(l)
78 lines.append(l)
79 max_noise -= 1
79 max_noise -= 1
80 else:
80 else:
81 self.raise_(repo.RepoError(_("no suitable response from remote hg")))
81 self.raise_(error.RepoError(_("no suitable response from remote hg")))
82
82
83 self.capabilities = util.set()
83 self.capabilities = util.set()
84 lines.reverse()
84 lines.reverse()
@@ -157,7 +157,7 b' class sshrepository(repo.repository):'
157 if int(success):
157 if int(success):
158 return bin(data)
158 return bin(data)
159 else:
159 else:
160 self.raise_(repo.RepoError(data))
160 self.raise_(error.RepoError(data))
161
161
162 def heads(self):
162 def heads(self):
163 d = self.call("heads")
163 d = self.call("heads")
@@ -198,7 +198,7 b' class sshrepository(repo.repository):'
198 d = self.call("unbundle", heads=' '.join(map(hex, heads)))
198 d = self.call("unbundle", heads=' '.join(map(hex, heads)))
199 if d:
199 if d:
200 # remote may send "unsynced changes"
200 # remote may send "unsynced changes"
201 self.raise_(repo.RepoError(_("push refused: %s") % d))
201 self.raise_(error.RepoError(_("push refused: %s") % d))
202
202
203 while 1:
203 while 1:
204 d = cg.read(4096)
204 d = cg.read(4096)
@@ -211,7 +211,7 b' class sshrepository(repo.repository):'
211 r = self._recv()
211 r = self._recv()
212 if r:
212 if r:
213 # remote may send "unsynced changes"
213 # remote may send "unsynced changes"
214 self.raise_(repo.RepoError(_("push failed: %s") % r))
214 self.raise_(error.RepoError(_("push failed: %s") % r))
215
215
216 r = self._recv()
216 r = self._recv()
217 try:
217 try:
@@ -222,7 +222,7 b' class sshrepository(repo.repository):'
222 def addchangegroup(self, cg, source, url):
222 def addchangegroup(self, cg, source, url):
223 d = self.call("addchangegroup")
223 d = self.call("addchangegroup")
224 if d:
224 if d:
225 self.raise_(repo.RepoError(_("push refused: %s") % d))
225 self.raise_(error.RepoError(_("push refused: %s") % d))
226 while 1:
226 while 1:
227 d = cg.read(4096)
227 d = cg.read(4096)
228 if not d:
228 if not d:
@@ -8,7 +8,7 b''
8 # of the GNU General Public License, incorporated herein by reference.
8 # of the GNU General Public License, incorporated herein by reference.
9
9
10 from i18n import _
10 from i18n import _
11 import changelog, byterange, url
11 import changelog, byterange, url, error
12 import repo, localrepo, manifest, util, store
12 import repo, localrepo, manifest, util, store
13 import urllib, urllib2, errno
13 import urllib, urllib2, errno
14
14
@@ -79,13 +79,13 b' class statichttprepository(localrepo.loc'
79 raise
79 raise
80 # we do not care about empty old-style repositories here
80 # we do not care about empty old-style repositories here
81 msg = _("'%s' does not appear to be an hg repository") % path
81 msg = _("'%s' does not appear to be an hg repository") % path
82 raise repo.RepoError(msg)
82 raise error.RepoError(msg)
83 requirements = []
83 requirements = []
84
84
85 # check them
85 # check them
86 for r in requirements:
86 for r in requirements:
87 if r not in self.supported:
87 if r not in self.supported:
88 raise repo.RepoError(_("requirement '%s' not supported") % r)
88 raise error.RepoError(_("requirement '%s' not supported") % r)
89
89
90 # setup store
90 # setup store
91 def pjoin(a, b):
91 def pjoin(a, b):
General Comments 0
You need to be logged in to leave comments. Login now