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 r |
|
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 |
|
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 |
|
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 r |
|
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 |
|
2181 | except error.CapabilityError: | |
2183 |
err |
|
2182 | err = _("Other repository doesn't support revision lookup, " | |
2184 |
|
|
2183 | "so a rev cannot be specified.") | |
2185 |
raise util.Abort(err |
|
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 |
|
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 |
|
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 r |
|
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 r |
|
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 r |
|
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 r |
|
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 r |
|
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 r |
|
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 r |
|
50 | raise error.RepoError(_("repository %s not found") % path) | |
51 | elif create: |
|
51 | elif create: | |
52 |
raise r |
|
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 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 r |
|
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 r |
|
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 r |
|
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 |
|
|
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_(r |
|
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_(r |
|
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_(r |
|
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_(r |
|
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_(r |
|
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_(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_(r |
|
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 r |
|
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 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