/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 remote.py

Fix bugs in two lookup_tree_id implementations and add a test for it.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2007-2010 Jelmer Vernooij <jelmer@samba.org>
 
1
# Copyright (C) 2007-2009 Jelmer Vernooij <jelmer@samba.org>
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
40
40
 
41
41
from bzrlib.plugins.git.branch import (
42
42
    GitBranch,
 
43
    extract_tags,
43
44
    )
44
45
from bzrlib.plugins.git.errors import (
45
46
    GitSmartRemoteNotSupported,
54
55
from bzrlib.plugins.git.repository import (
55
56
    GitRepository,
56
57
    )
57
 
from bzrlib.plugins.git.refs import (
58
 
    extract_tags,
59
 
    branch_name_to_ref,
60
 
    )
61
58
 
62
59
import dulwich as git
63
60
from dulwich.errors import (
65
62
    )
66
63
from dulwich.pack import (
67
64
    Pack,
68
 
    ThinPackData,
 
65
    PackData,
69
66
    )
70
67
import os
71
68
import tempfile
182
179
            ret = self._client
183
180
            self._client = None
184
181
            return ret
185
 
        location_config = config.LocationConfig(self.base)
186
 
        client = git.client.SSHGitClient(self._host, self._port, self._username,
 
182
        return git.client.SSHGitClient(self._host, self._port, self._username,
187
183
            thin_packs=thin_packs, report_activity=self._report_activity)
188
 
        # Set up alternate pack program paths
189
 
        upload_pack = location_config.get_user_option('git_upload_pack')
190
 
        if upload_pack:
191
 
            client.alternative_paths["upload-pack"] = upload_pack
192
 
        receive_pack = location_config.get_user_option('git_receive_pack')
193
 
        if receive_pack:
194
 
            client.alternative_paths["receive-pack"] = receive_pack
195
 
        return client
196
184
 
197
185
 
198
186
class RemoteGitDir(GitDir):
204
192
        self._lockfiles = lockfiles
205
193
        self._mode_check_done = None
206
194
 
207
 
    def _branch_name_to_ref(self, name, default=None):
208
 
        return branch_name_to_ref(name, default=default)
 
195
    def _branch_name_to_ref(self, name):
 
196
        from bzrlib.plugins.git.branch import branch_name_to_ref
 
197
        return branch_name_to_ref(name, default="refs/heads/master")
209
198
 
210
199
    def open_repository(self):
211
200
        return RemoteGitRepository(self, self._lockfiles)
235
224
    @property
236
225
    def data(self):
237
226
        if self._data is None:
238
 
            self._data = ThinPackData(self.resolve_ext_ref, self._data_path)
 
227
            self._data = PackData(self._data_path)
239
228
        return self._data
240
229
 
241
230
    @property
246
235
                try:
247
236
                    def report_progress(cur, total):
248
237
                        pb.update("generating index", cur, total)
249
 
                    self.data.create_index(self._idx_path, 
 
238
                    self.data.create_index(self._idx_path, self.resolve_ext_ref,
250
239
                        progress=report_progress)
251
240
                finally:
252
241
                    pb.finished()
312
301
        except InvalidRevisionId:
313
302
            raise NoSuchRevision(self, bzr_revid)
314
303
 
315
 
    def lookup_foreign_revision_id(self, foreign_revid, mapping=None):
316
 
        """Lookup a revision id.
317
 
 
318
 
        """
319
 
        if mapping is None:
320
 
            mapping = self.get_mapping()
321
 
        # Not really an easy way to parse foreign revids here..
322
 
        return mapping.revision_id_foreign_to_bzr(foreign_revid)
323
 
 
324
304
 
325
305
class RemoteGitTagDict(tag.BasicTags):
326
306
 
342
322
class RemoteGitBranch(GitBranch):
343
323
 
344
324
    def __init__(self, bzrdir, repository, name, lockfiles):
345
 
        self._sha = None
 
325
        self._ref = None
346
326
        super(RemoteGitBranch, self).__init__(bzrdir, repository, name,
347
327
                lockfiles)
348
328
 
350
330
        raise GitSmartRemoteNotSupported()
351
331
 
352
332
    def last_revision(self):
353
 
        return self.lookup_foreign_revision_id(self.head)
 
333
        return self.mapping.revision_id_foreign_to_bzr(self.head)
354
334
 
355
335
    def _get_config(self):
356
336
        class EmptyConfig(object):
362
342
 
363
343
    @property
364
344
    def head(self):
365
 
        if self._sha is not None:
366
 
            return self._sha
 
345
        if self._ref is not None:
 
346
            return self._ref
367
347
        heads = self.repository.get_refs()
368
 
        name = self.bzrdir._branch_name_to_ref(self.name, "HEAD")
369
 
        if name in heads:
370
 
            self._sha = heads[name]
 
348
        if self.name in heads:
 
349
            self._ref = heads[self.name]
 
350
        elif ("refs/heads/" + self.name) in heads:
 
351
            self._ref = heads["refs/heads/" + self.name]
371
352
        else:
372
353
            raise NoSuchRef(self.name)
373
 
        return self._sha
 
354
        return self._ref
374
355
 
375
356
    def _synchronize_history(self, destination, revision_id):
376
357
        """See Branch._synchronize_history()."""