/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/bzr/remote.py

  • Committer: Jelmer Vernooij
  • Date: 2019-06-03 23:48:08 UTC
  • mfrom: (7316 work)
  • mto: This revision was merged to the branch mainline in revision 7328.
  • Revision ID: jelmer@jelmer.uk-20190603234808-15yk5c7054tj8e2b
Merge trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
 
19
19
import bz2
20
20
import os
 
21
import re
21
22
import sys
22
23
import zlib
23
24
 
1379
1380
        except errors.UnknownSmartMethod:
1380
1381
            self._client._medium._remember_remote_is_before((1, 17))
1381
1382
            return self._get_rev_id_for_revno_vfs(revno, known_pair)
 
1383
        except errors.UnknownErrorFromSmartServer as e:
 
1384
            # Older versions of Bazaar/Breezy (<< 3.0.0) would raise a
 
1385
            # ValueError instead of returning revno-outofbounds
 
1386
            if len(e.error_tuple) < 3:
 
1387
                raise
 
1388
            if e.error_tuple[:2] != (b'error', b'ValueError'):
 
1389
                raise
 
1390
            m = re.match(
 
1391
                b"requested revno \(([0-9]+)\) is later than given "
 
1392
                b"known revno \(([0-9]+)\)", e.error_tuple[2])
 
1393
            if not m:
 
1394
                raise
 
1395
            raise errors.RevnoOutOfBounds(
 
1396
                int(m.group(1)), (0, int(m.group(2))))
1382
1397
        if response[0] == b'ok':
1383
1398
            return True, response[1]
1384
1399
        elif response[0] == b'history-incomplete':
3872
3887
            return _mod_revision.NULL_REVISION
3873
3888
        with self.lock_read():
3874
3889
            last_revision_info = self.last_revision_info()
 
3890
            if revno < 0:
 
3891
                raise errors.RevnoOutOfBounds(
 
3892
                    revno, (0, last_revision_info[0]))
3875
3893
            ok, result = self.repository.get_rev_id_for_revno(
3876
3894
                revno, last_revision_info)
3877
3895
            if ok:
3883
3901
            parent_map = self.repository.get_parent_map([missing_parent])
3884
3902
            if missing_parent in parent_map:
3885
3903
                missing_parent = parent_map[missing_parent]
3886
 
            raise errors.RevisionNotPresent(missing_parent, self.repository)
 
3904
            raise errors.NoSuchRevision(self, missing_parent)
3887
3905
 
3888
3906
    def _read_last_revision_info(self):
3889
3907
        response = self._call(
4032
4050
            except errors.UnknownSmartMethod:
4033
4051
                self._ensure_real()
4034
4052
                return self._real_branch.revision_id_to_dotted_revno(revision_id)
 
4053
            except errors.UnknownErrorFromSmartServer as e:
 
4054
                # Deal with older versions of bzr/brz that didn't explicitly
 
4055
                # wrap GhostRevisionsHaveNoRevno.
 
4056
                if e.error_tuple[1] == b'GhostRevisionsHaveNoRevno':
 
4057
                    (revid, ghost_revid) = re.findall(b"{([^}]+)}", e.error_tuple[2])
 
4058
                    raise errors.GhostRevisionsHaveNoRevno(
 
4059
                        revid, ghost_revid)
 
4060
                raise
4035
4061
            if response[0] == b'ok':
4036
4062
                return tuple([int(x) for x in response[1:]])
4037
4063
            else:
4373
4399
error_translators.register(b'nosuchrevision',
4374
4400
                           lambda err, find, get_path: NoSuchRevision(
4375
4401
                               find('repository'), err.error_args[0]))
 
4402
error_translators.register(
 
4403
    b'revno-outofbounds',
 
4404
    lambda err, find, get_path: errors.RevnoOutOfBounds(
 
4405
        err.error_args[0], (err.error_args[1], err.error_args[2])))
4376
4406
 
4377
4407
 
4378
4408
def _translate_nobranch_error(err, find, get_path):