# HG changeset patch # User Dan Villiom Podlaski Christiansen # Date 1237494459 -3600 # Node ID fa26c7ef01801fc05ebadc970a69b1d691e621fd # Parent 761b095c11fb6e6a81a5b1b91ced5d83f8c81367 Exception clean-ups; use symbolic names & avoid Python 2.6 deprecations. diff --git a/__init__.py b/__init__.py --- a/__init__.py +++ b/__init__.py @@ -37,7 +37,7 @@ def svn(ui, repo, subcommand, *args, **o try: return svncommand.svncmd(ui, repo, subcommand, *args, **opts) except core.SubversionException, e: - if e.apr_err == 230001: + if e.apr_err == core.SVN_ERR_RA_SERF_SSL_CERT_UNTRUSTED: raise mutil.Abort('It appears svn does not trust the ssl cert for this site.\n' 'Please try running svn ls on that url first.') raise @@ -60,7 +60,7 @@ def svn_fetch(ui, svn_url, hg_repo_path= try: res = fetch_command.fetch_revisions(ui, svn_url, hg_repo_path, **opts) except core.SubversionException, e: - if e.apr_err == 230001: + if e.apr_err == core.SVN_ERR_RA_SERF_SSL_CERT_UNTRUSTED: raise mutil.Abort('It appears svn does not trust the ssl cert for this site.\n' 'Please try running svn ls on that url first.') raise diff --git a/fetch_command.py b/fetch_command.py --- a/fetch_command.py +++ b/fetch_command.py @@ -100,13 +100,11 @@ def fetch_revisions(ui, svn_url, hg_repo merc_util.rename(tmpfile, hg_editor.last_revision_handled_file) except core.SubversionException, e: #pragma: no cover - if hasattr(e, 'message') and ( - 'Server sent unexpected return value (502 Bad Gateway)' - ' in response to PROPFIND') in e.message: + if e.apr_err == core.SVN_ERR_RA_DAV_REQUEST_FAILED: tries += 1 ui.status('Got a 502, retrying (%s)\n' % tries) else: - raise + raise merc_util.Abort(*e.args) merc_util._encoding = old_encoding fetch_revisions = util.register_subcommand('pull')(fetch_revisions) @@ -248,7 +246,7 @@ def stupid_diff_branchrev(ui, svn, hg_ed except svnwrap.SubversionRepoCanNotDiff: raise BadPatchApply('subversion diffing code is not supported') except core.SubversionException, e: - if (hasattr(e, 'apr_err') and e.apr_err != 160013): + if (hasattr(e, 'apr_err') and e.apr_err != core.SVN_ERR_FS_NOT_FOUND): raise raise BadPatchApply('previous revision does not exist') if '\0' in d: @@ -609,7 +607,7 @@ def stupid_svn_server_pull_rev(ui, svn, ui, svn, hg_editor, b, r, parentctx) except BadPatchApply, e: # Either this revision or the previous one does not exist. - ui.status("fetching entire rev: %s.\n" % e.message) + ui.status("Fetching entire revision: %s.\n" % e.args[0]) files_touched, filectxfn2 = stupid_fetch_branchrev( svn, hg_editor, b, branches[b], r, parentctx) diff --git a/hg_delta_editor.py b/hg_delta_editor.py --- a/hg_delta_editor.py +++ b/hg_delta_editor.py @@ -508,6 +508,7 @@ class HgChangeReceiver(delta.Editor): branches = {} for path, entry in self.externals.iteritems(): if not self._is_path_valid(path): + self.ui.warn('WARNING: Invalid path %s in externals\n' % path) continue p, b, bp = self._split_branch_path(path) if bp not in branches: @@ -838,6 +839,8 @@ class HgChangeReceiver(delta.Editor): baserev = self.current_rev.revnum - 1 parent = self.get_parent_revision(baserev + 1, branch) self.load_base_from_ctx(path, fpath, self.repo.changectx(parent)) + else: + self.ui.warn('WARNING: Opening non-existant file %s\n' % path) open_file = stash_exception_on_self(open_file) def aresamefiles(self, parentctx, childctx, files): @@ -1022,11 +1025,10 @@ class HgChangeReceiver(delta.Editor): if not window: self.current_files[self.current_file] = target.getvalue() except core.SubversionException, e: #pragma: no cover - if e.message == 'Delta source ended unexpectedly': + if e.apr_err == core.SVN_ERR_INCOMPLETE_DATA: self.missing_plaintexts.add(self.current_file) else: #pragma: no cover - self._exception_info = sys.exc_info() - raise + raise util.Abort(*e.args) except: #pragma: no cover print len(base), self.current_file self._exception_info = sys.exc_info() diff --git a/svnwrap/svn_swig_wrapper.py b/svnwrap/svn_swig_wrapper.py --- a/svnwrap/svn_swig_wrapper.py +++ b/svnwrap/svn_swig_wrapper.py @@ -146,8 +146,11 @@ class SubversionRepo(object): callbacks = RaCallbacks() callbacks.auth_baton = self.auth_baton self.callbacks = callbacks - self.ra = ra.open2(self.svn_url.encode('utf-8'), callbacks, - svn_config, self.pool) + try: + self.ra = ra.open2(self.svn_url.encode('utf-8'), callbacks, + svn_config, self.pool) + except core.SubversionException, e: + raise hgutil.Abort(e.args[0]) def HEAD(self): return ra.get_latest_revnum(self.ra, self.pool) @@ -189,7 +192,7 @@ class SubversionRepo(object): try: tags = self.list_dir('tags', revision=revision).keys() except core.SubversionException, e: - if e.apr_err == 160013: + if e.apr_err == core.SVN_ERR_FS_NOT_FOUND: return {} raise tag_info = {} @@ -386,10 +389,8 @@ class SubversionRepo(object): e_baton, self.pool) except core.SubversionException, e: #pragma: no cover # can I depend on this number being constant? - if (e.message == "Server doesn't support the replay command" - or e.apr_err == 170003 - or e.message == 'The requested report is unknown.' - or e.apr_err == 200007): + if (e.apr_err == core.SVN_ERR_RA_NOT_IMPLEMENTED or + e.apr_err == core.SVN_ERR_UNSUPPORTED_FEATURE): raise SubversionRepoCanNotReplay, ('This Subversion server ' 'is older than 1.4.0, and cannot satisfy replay requests.') else: