~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/remote.py

  • Committer: Jelmer Vernooij
  • Date: 2011-11-28 10:01:07 UTC
  • mfrom: (6309 +trunk)
  • mto: This revision was merged to the branch mainline in revision 6318.
  • Revision ID: jelmer@samba.org-20111128100107-lcxygeubek6w3pu1
Merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
    controldir,
26
26
    debug,
27
27
    errors,
 
28
    gpg,
28
29
    graph,
29
30
    lock,
30
31
    lockdir,
34
35
    revision as _mod_revision,
35
36
    static_tuple,
36
37
    symbol_versioning,
 
38
    testament as _mod_testament,
37
39
    urlutils,
38
40
    vf_repository,
39
41
    )
2244
2246
 
2245
2247
    @needs_write_lock
2246
2248
    def sign_revision(self, revision_id, gpg_strategy):
2247
 
        self._ensure_real()
2248
 
        return self._real_repository.sign_revision(revision_id, gpg_strategy)
 
2249
        testament = _mod_testament.Testament.from_revision(self, revision_id)
 
2250
        plaintext = testament.as_short_text()
 
2251
        self.store_revision_signature(gpg_strategy, plaintext, revision_id)
2249
2252
 
2250
2253
    @property
2251
2254
    def texts(self):
2280
2283
        self.add_signature_text(revision_id, signature)
2281
2284
 
2282
2285
    def add_signature_text(self, revision_id, signature):
2283
 
        self._ensure_real()
2284
 
        return self._real_repository.add_signature_text(revision_id, signature)
 
2286
        if self._real_repository:
 
2287
            # If there is a real repository the write group will
 
2288
            # be in the real repository as well, so use that:
 
2289
            self._ensure_real()
 
2290
            return self._real_repository.add_signature_text(
 
2291
                revision_id, signature)
 
2292
        path = self.bzrdir._path_for_remote_call(self._client)
 
2293
        response = self._call_with_body_bytes(
 
2294
            'Repository.add_signature_text', (path, self._lock_token,
 
2295
                revision_id) + tuple(self._write_group_tokens), signature)
 
2296
        self.refresh_data()
 
2297
        if response[0] != 'ok':
 
2298
            raise errors.UnexpectedSmartServerResponse(response)
2285
2299
 
2286
2300
    def has_signature_for_revision_id(self, revision_id):
2287
2301
        path = self.bzrdir._path_for_remote_call(self._client)
2296
2310
            raise SmartProtocolError('unexpected response code %s' % (response,))
2297
2311
        return (response[0] == 'yes')
2298
2312
 
 
2313
    @needs_read_lock
2299
2314
    def verify_revision_signature(self, revision_id, gpg_strategy):
2300
 
        self._ensure_real()
2301
 
        return self._real_repository.verify_revision_signature(
2302
 
            revision_id, gpg_strategy)
 
2315
        if not self.has_signature_for_revision_id(revision_id):
 
2316
            return gpg.SIGNATURE_NOT_SIGNED, None
 
2317
        signature = self.get_signature_text(revision_id)
 
2318
 
 
2319
        testament = _mod_testament.Testament.from_revision(self, revision_id)
 
2320
        plaintext = testament.as_short_text()
 
2321
 
 
2322
        return gpg_strategy.verify(signature, plaintext)
2303
2323
 
2304
2324
    def item_keys_introduced_by(self, revision_ids, _files_pb=None):
2305
2325
        self._ensure_real()
3410
3430
                self._remote_path(), revision_id)
3411
3431
        except errors.UnknownSmartMethod:
3412
3432
            self._ensure_real()
3413
 
            return self._real_branch.revision_id_to_revno(revision_id)
 
3433
            return self._real_branch.revision_id_to_dotted_revno(revision_id)
3414
3434
        if response[0] == 'ok':
3415
3435
            return tuple([int(x) for x in response[1:]])
3416
3436
        else: