~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/remote.py

  • Committer: Patch Queue Manager
  • Date: 2011-12-11 16:36:59 UTC
  • mfrom: (6300.1.8 hpss-reconcile)
  • Revision ID: pqm@pqm.ubuntu.com-20111211163659-9iey381vjoj039ia
(jelmer) Add HPSS call for ``Repository.reconcile``. (Jelmer Vernooij)

Show diffs side-by-side

added added

removed removed

Lines of Context:
2152
2152
        self._ensure_real()
2153
2153
        return self._real_repository._get_inventory_xml(revision_id)
2154
2154
 
 
2155
    @needs_write_lock
2155
2156
    def reconcile(self, other=None, thorough=False):
2156
 
        self._ensure_real()
2157
 
        return self._real_repository.reconcile(other=other, thorough=thorough)
 
2157
        from bzrlib.reconcile import RepoReconciler
 
2158
        path = self.bzrdir._path_for_remote_call(self._client)
 
2159
        try:
 
2160
            response, handler = self._call_expecting_body(
 
2161
                'Repository.reconcile', path, self._lock_token)
 
2162
        except (errors.UnknownSmartMethod, errors.TokenLockingNotSupported):
 
2163
            self._ensure_real()
 
2164
            return self._real_repository.reconcile(other=other, thorough=thorough)
 
2165
        if response != ('ok', ):
 
2166
            raise errors.UnexpectedSmartServerResponse(response)
 
2167
        body = handler.read_body_bytes()
 
2168
        result = RepoReconciler(self)
 
2169
        for line in body.split('\n'):
 
2170
            if not line:
 
2171
                continue
 
2172
            key, val_text = line.split(':')
 
2173
            if key == "garbage_inventories":
 
2174
                result.garbage_inventories = int(val_text)
 
2175
            elif key == "inconsistent_parents":
 
2176
                result.inconsistent_parents = int(val_text)
 
2177
            else:
 
2178
                mutter("unknown reconcile key %r" % key)
 
2179
        return result
2158
2180
 
2159
2181
    def all_revision_ids(self):
2160
2182
        path = self.bzrdir._path_for_remote_call(self._client)
3928
3950
    lambda err, find, get_path: errors.ReadError(get_path()))
3929
3951
error_translators.register('NoSuchFile',
3930
3952
    lambda err, find, get_path: errors.NoSuchFile(get_path()))
 
3953
error_translators.register('TokenLockingNotSupported',
 
3954
    lambda err, find, get_path: errors.TokenLockingNotSupported(
 
3955
        find('repository')))
3931
3956
error_translators.register('UnsuspendableWriteGroup',
3932
3957
    lambda err, find, get_path: errors.UnsuspendableWriteGroup(
3933
3958
        repository=find('repository')))