/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
0.200.252 by Jelmer Vernooij
Clarify history, copyright.
1
# Copyright (C) 2007-2009 Jelmer Vernooij <jelmer@samba.org>
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
2
#
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
0.200.289 by Jelmer Vernooij
Cope with new member variables in RepositoryFormat.
17
from bzrlib import (
0.200.596 by Jelmer Vernooij
Import RemoteGitBranch._get_config().
18
    config,
0.200.707 by Jelmer Vernooij
Add debug routines.
19
    debug,
0.200.289 by Jelmer Vernooij
Cope with new member variables in RepositoryFormat.
20
    tag,
0.200.586 by Jelmer Vernooij
Fix issues pointed out by pyflakes.
21
    trace,
0.200.333 by Jelmer Vernooij
Support progress reporting when creating index.
22
    ui,
0.200.289 by Jelmer Vernooij
Cope with new member variables in RepositoryFormat.
23
    urlutils,
24
    )
25
from bzrlib.errors import (
26
    BzrError,
0.200.415 by Jelmer Vernooij
make 'bzr pull --revision' work for remote repositories.
27
    InvalidRevisionId,
0.200.289 by Jelmer Vernooij
Cope with new member variables in RepositoryFormat.
28
    NoSuchFile,
0.200.415 by Jelmer Vernooij
make 'bzr pull --revision' work for remote repositories.
29
    NoSuchRevision,
0.200.289 by Jelmer Vernooij
Cope with new member variables in RepositoryFormat.
30
    NotLocalUrl,
31
    )
0.200.292 by Jelmer Vernooij
Fix formatting.
32
from bzrlib.transport import (
33
    Transport,
34
    )
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
35
0.200.292 by Jelmer Vernooij
Fix formatting.
36
from bzrlib.plugins.git import (
37
    lazy_check_versions,
38
    )
0.200.200 by Jelmer Vernooij
Register lazily where possible.
39
lazy_check_versions()
40
0.200.292 by Jelmer Vernooij
Fix formatting.
41
from bzrlib.plugins.git.branch import (
42
    GitBranch,
0.200.462 by Jelmer Vernooij
Import tags when pulling.
43
    extract_tags,
0.200.292 by Jelmer Vernooij
Fix formatting.
44
    )
45
from bzrlib.plugins.git.errors import (
0.200.319 by Jelmer Vernooij
Print proper error when trying unsupported operations against a git server.
46
    GitSmartRemoteNotSupported,
0.200.292 by Jelmer Vernooij
Fix formatting.
47
    NoSuchRef,
48
    )
49
from bzrlib.plugins.git.dir import (
50
    GitDir,
51
    )
0.200.415 by Jelmer Vernooij
make 'bzr pull --revision' work for remote repositories.
52
from bzrlib.plugins.git.mapping import (
53
    mapping_registry,
54
    )
0.200.289 by Jelmer Vernooij
Cope with new member variables in RepositoryFormat.
55
from bzrlib.plugins.git.repository import (
56
    GitRepository,
57
    )
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
58
0.200.289 by Jelmer Vernooij
Cope with new member variables in RepositoryFormat.
59
import dulwich as git
0.200.292 by Jelmer Vernooij
Fix formatting.
60
from dulwich.errors import (
61
    GitProtocolError,
62
    )
0.200.289 by Jelmer Vernooij
Cope with new member variables in RepositoryFormat.
63
from dulwich.pack import (
64
    Pack,
0.200.604 by Jelmer Vernooij
Fix fetching of remote repositories on Windows.
65
    PackData,
0.200.289 by Jelmer Vernooij
Cope with new member variables in RepositoryFormat.
66
    )
0.200.167 by Jelmer Vernooij
Implement fetch_objects properly.
67
import os
68
import tempfile
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
69
import urllib
70
import urlparse
0.200.741 by Jelmer Vernooij
Cope with older versions of Python by adding git and git+ssh to the list of known schemes.
71
urlparse.uses_netloc.extend(['git', 'git+ssh'])
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
72
0.200.586 by Jelmer Vernooij
Fix issues pointed out by pyflakes.
73
from dulwich.pack import load_pack_index
0.200.306 by Jelmer Vernooij
Fix tests, split up InterGitNonGitRepository.
74
0.200.143 by Jelmer Vernooij
Reoncile InterGitRepository objects.
75
0.200.695 by Jelmer Vernooij
Clean up trailing whitespace.
76
# Don't run any tests on GitSmartTransport as it is not intended to be
0.200.181 by Jelmer Vernooij
Support setting tags.
77
# a full implementation of Transport
78
def get_test_permutations():
79
    return []
80
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
81
0.200.708 by Jelmer Vernooij
Factor out URL parsing.
82
def split_git_url(url):
0.200.709 by Jelmer Vernooij
When unpacking URLs, strip leftmost slash to match gits behaviour.
83
    """Split a Git URL.
84
85
    :param url: Git URL
86
    :return: Tuple with host, port, username, path.
87
    """
0.200.743 by Jelmer Vernooij
Fix URL parsing.
88
    (scheme, netloc, loc, _, _) = urlparse.urlsplit(url)
89
    path = urllib.unquote(loc)
0.246.2 by Jelmer Vernooij
Improve the fix dealing with git repo's in home directories.
90
    if path.startswith("/~"):
0.200.709 by Jelmer Vernooij
When unpacking URLs, strip leftmost slash to match gits behaviour.
91
        path = path[1:]
0.200.743 by Jelmer Vernooij
Fix URL parsing.
92
    (username, hostport) = urllib.splituser(netloc)
0.200.708 by Jelmer Vernooij
Factor out URL parsing.
93
    (host, port) = urllib.splitnport(hostport, None)
94
    return (host, port, username, path)
95
96
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
97
class GitSmartTransport(Transport):
98
0.200.139 by Jelmer Vernooij
Share more code between local and remote classes, support opening remote branches.
99
    def __init__(self, url, _client=None):
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
100
        Transport.__init__(self, url)
0.200.708 by Jelmer Vernooij
Factor out URL parsing.
101
        (self._host, self._port, self._username, self._path) = \
102
            split_git_url(url)
0.200.707 by Jelmer Vernooij
Add debug routines.
103
        if 'transport' in debug.debug_flags:
104
            trace.mutter('host: %r, user: %r, port: %r, path: %r',
105
                         self._host, self._username, self._port, self._path)
0.200.166 by Jelmer Vernooij
don't reuse client objects.
106
        self._client = _client
107
0.200.543 by Jelmer Vernooij
Implement GitSmartTransport.external_url().
108
    def external_url(self):
109
        return self.base
110
0.200.238 by Jelmer Vernooij
Import Transport.has().
111
    def has(self, relpath):
112
        return False
113
0.200.567 by Jelmer Vernooij
Pass along thin pack settings.
114
    def _get_client(self, thin_packs):
0.200.307 by Jelmer Vernooij
Support git+ssh.
115
        raise NotImplementedError(self._get_client)
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
116
0.200.470 by Jelmer Vernooij
Properly parse username in URLs.
117
    def _get_path(self):
118
        return self._path
119
0.200.139 by Jelmer Vernooij
Share more code between local and remote classes, support opening remote branches.
120
    def fetch_pack(self, determine_wants, graph_walker, pack_data, progress=None):
121
        if progress is None:
122
            def progress(text):
0.200.707 by Jelmer Vernooij
Add debug routines.
123
                trace.info("git: %s" % text)
0.200.567 by Jelmer Vernooij
Pass along thin pack settings.
124
        client = self._get_client(thin_packs=False)
0.200.240 by Jelmer Vernooij
Wrap socket errors.
125
        try:
0.200.695 by Jelmer Vernooij
Clean up trailing whitespace.
126
            return client.fetch_pack(self._get_path(), determine_wants,
0.200.240 by Jelmer Vernooij
Wrap socket errors.
127
                graph_walker, pack_data, progress)
128
        except GitProtocolError, e:
129
            raise BzrError(e)
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
130
0.200.427 by Jelmer Vernooij
make send_pack accessible.
131
    def send_pack(self, get_changed_refs, generate_pack_contents):
0.200.567 by Jelmer Vernooij
Pass along thin pack settings.
132
        client = self._get_client(thin_packs=False)
0.200.427 by Jelmer Vernooij
make send_pack accessible.
133
        try:
0.200.695 by Jelmer Vernooij
Clean up trailing whitespace.
134
            return client.send_pack(self._get_path(), get_changed_refs,
0.200.427 by Jelmer Vernooij
make send_pack accessible.
135
                generate_pack_contents)
136
        except GitProtocolError, e:
137
            raise BzrError(e)
138
0.200.139 by Jelmer Vernooij
Share more code between local and remote classes, support opening remote branches.
139
    def get(self, path):
140
        raise NoSuchFile(path)
141
0.200.160 by Jelmer Vernooij
Implement abspath.
142
    def abspath(self, relpath):
143
        return urlutils.join(self.base, relpath)
144
0.200.139 by Jelmer Vernooij
Share more code between local and remote classes, support opening remote branches.
145
    def clone(self, offset=None):
146
        """See Transport.clone()."""
147
        if offset is None:
148
            newurl = self.base
149
        else:
150
            newurl = urlutils.join(self.base, offset)
151
0.200.307 by Jelmer Vernooij
Support git+ssh.
152
        return self.__class__(newurl, self._client)
153
154
155
class TCPGitSmartTransport(GitSmartTransport):
156
0.200.332 by Jelmer Vernooij
Support activity reporting.
157
    _scheme = 'git'
158
0.200.567 by Jelmer Vernooij
Pass along thin pack settings.
159
    def _get_client(self, thin_packs):
0.200.307 by Jelmer Vernooij
Support git+ssh.
160
        if self._client is not None:
161
            ret = self._client
162
            self._client = None
163
            return ret
0.200.567 by Jelmer Vernooij
Pass along thin pack settings.
164
        return git.client.TCPGitClient(self._host, self._port, thin_packs=thin_packs,
0.200.332 by Jelmer Vernooij
Support activity reporting.
165
            report_activity=self._report_activity)
0.200.307 by Jelmer Vernooij
Support git+ssh.
166
167
168
class SSHGitSmartTransport(GitSmartTransport):
169
0.200.332 by Jelmer Vernooij
Support activity reporting.
170
    _scheme = 'git+ssh'
171
0.200.470 by Jelmer Vernooij
Properly parse username in URLs.
172
    def _get_path(self):
173
        if self._path.startswith("/~/"):
174
            return self._path[3:]
175
        return self._path
176
0.200.567 by Jelmer Vernooij
Pass along thin pack settings.
177
    def _get_client(self, thin_packs):
0.200.307 by Jelmer Vernooij
Support git+ssh.
178
        if self._client is not None:
179
            ret = self._client
180
            self._client = None
181
            return ret
0.200.470 by Jelmer Vernooij
Properly parse username in URLs.
182
        return git.client.SSHGitClient(self._host, self._port, self._username,
0.200.567 by Jelmer Vernooij
Pass along thin pack settings.
183
            thin_packs=thin_packs, report_activity=self._report_activity)
0.200.139 by Jelmer Vernooij
Share more code between local and remote classes, support opening remote branches.
184
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
185
0.200.148 by Jelmer Vernooij
Share more infrastructure between LocalGitDir and RemoteGitDir.
186
class RemoteGitDir(GitDir):
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
187
0.200.139 by Jelmer Vernooij
Share more code between local and remote classes, support opening remote branches.
188
    def __init__(self, transport, lockfiles, format):
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
189
        self._format = format
190
        self.root_transport = transport
191
        self.transport = transport
192
        self._lockfiles = lockfiles
0.200.381 by Jelmer Vernooij
Support working trees properly, status and ls.
193
        self._mode_check_done = None
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
194
0.200.833 by Jelmer Vernooij
Fix handling of remote branches.
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")
198
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
199
    def open_repository(self):
200
        return RemoteGitRepository(self, self._lockfiles)
201
0.200.777 by Jelmer Vernooij
Fix colocated remote branches.
202
    def _open_branch(self, name=None, ignore_fallbacks=False, 
0.200.731 by Jelmer Vernooij
Handle unsupported flag to open_branch().
203
                    unsupported=False):
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
204
        repo = self.open_repository()
0.200.729 by Jelmer Vernooij
Improve colocated branches support.
205
        refname = self._branch_name_to_ref(name)
206
        return RemoteGitBranch(self, repo, refname, self._lockfiles)
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
207
0.200.662 by Jelmer Vernooij
Deal with recommend_upgrade argument to open_workingtree.
208
    def open_workingtree(self, recommend_upgrade=False):
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
209
        raise NotLocalUrl(self.transport.base)
210
0.200.139 by Jelmer Vernooij
Share more code between local and remote classes, support opening remote branches.
211
0.225.2 by Jelmer Vernooij
Handle situation when repository is already up to date during pull.
212
class EmptyObjectStoreIterator(dict):
213
214
    def iterobjects(self):
215
        return []
216
217
0.200.218 by Jelmer Vernooij
Simplify TemporaryPack implementation.
218
class TemporaryPackIterator(Pack):
219
0.200.226 by Jelmer Vernooij
Merge thin-pack work.
220
    def __init__(self, path, resolve_ext_ref):
0.200.310 by Jelmer Vernooij
Fix pull from remote branches.
221
        super(TemporaryPackIterator, self).__init__(path)
0.200.226 by Jelmer Vernooij
Merge thin-pack work.
222
        self.resolve_ext_ref = resolve_ext_ref
223
0.200.218 by Jelmer Vernooij
Simplify TemporaryPack implementation.
224
    @property
0.200.604 by Jelmer Vernooij
Fix fetching of remote repositories on Windows.
225
    def data(self):
226
        if self._data is None:
227
            self._data = PackData(self._data_path)
228
        return self._data
229
230
    @property
0.200.458 by Jelmer Vernooij
Fix index.
231
    def index(self):
0.200.218 by Jelmer Vernooij
Simplify TemporaryPack implementation.
232
        if self._idx is None:
0.200.562 by Jelmer Vernooij
Only create pack index if it doesn't exist yet.
233
            if not os.path.exists(self._idx_path):
234
                pb = ui.ui_factory.nested_progress_bar()
235
                try:
236
                    def report_progress(cur, total):
237
                        pb.update("generating index", cur, total)
238
                    self.data.create_index(self._idx_path, self.resolve_ext_ref,
239
                        progress=report_progress)
240
                finally:
241
                    pb.finished()
0.200.306 by Jelmer Vernooij
Fix tests, split up InterGitNonGitRepository.
242
            self._idx = load_pack_index(self._idx_path)
0.200.218 by Jelmer Vernooij
Simplify TemporaryPack implementation.
243
        return self._idx
0.200.205 by Jelmer Vernooij
Fix remote fetching.
244
245
    def __del__(self):
0.200.611 by Jelmer Vernooij
Merge warning fix from Naoki.
246
        if self._idx is not None:
0.241.1 by Naoki INADA
Fix can't delete tempfile on Windows
247
            self._idx.close()
248
            os.remove(self._idx_path)
0.200.611 by Jelmer Vernooij
Merge warning fix from Naoki.
249
        if self._data is not None:
0.241.1 by Naoki INADA
Fix can't delete tempfile on Windows
250
            self._data.close()
251
            os.remove(self._data_path)
0.200.205 by Jelmer Vernooij
Fix remote fetching.
252
253
0.200.139 by Jelmer Vernooij
Share more code between local and remote classes, support opening remote branches.
254
class RemoteGitRepository(GitRepository):
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
255
256
    def __init__(self, gitdir, lockfiles):
0.200.139 by Jelmer Vernooij
Share more code between local and remote classes, support opening remote branches.
257
        GitRepository.__init__(self, gitdir, lockfiles)
0.228.3 by Jelmer Vernooij
Fix tags when fetching from remotes.
258
        self._refs = None
259
0.200.319 by Jelmer Vernooij
Print proper error when trying unsupported operations against a git server.
260
    @property
261
    def inventories(self):
262
        raise GitSmartRemoteNotSupported()
263
264
    @property
265
    def revisions(self):
266
        raise GitSmartRemoteNotSupported()
267
268
    @property
269
    def texts(self):
270
        raise GitSmartRemoteNotSupported()
271
0.228.3 by Jelmer Vernooij
Fix tags when fetching from remotes.
272
    def get_refs(self):
273
        if self._refs is not None:
274
            return self._refs
0.200.695 by Jelmer Vernooij
Clean up trailing whitespace.
275
        self._refs = self.bzrdir.root_transport.fetch_pack(lambda x: [], None,
0.200.586 by Jelmer Vernooij
Fix issues pointed out by pyflakes.
276
            lambda x: None, lambda x: trace.mutter("git: %s" % x))
0.228.3 by Jelmer Vernooij
Fix tags when fetching from remotes.
277
        return self._refs
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
278
0.200.695 by Jelmer Vernooij
Clean up trailing whitespace.
279
    def fetch_pack(self, determine_wants, graph_walker, pack_data,
0.200.155 by Jelmer Vernooij
Fix formatting, remove catch-all for exceptions when opening local repositories.
280
                   progress=None):
0.200.456 by Jelmer Vernooij
Fix git -> git fetching.
281
        return self._transport.fetch_pack(determine_wants, graph_walker,
282
                                          pack_data, progress)
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
283
0.200.427 by Jelmer Vernooij
make send_pack accessible.
284
    def send_pack(self, get_changed_refs, generate_pack_contents):
0.200.460 by Jelmer Vernooij
Somewhat fix commit in git working trees.
285
        return self._transport.send_pack(get_changed_refs, generate_pack_contents)
0.200.427 by Jelmer Vernooij
make send_pack accessible.
286
0.200.695 by Jelmer Vernooij
Clean up trailing whitespace.
287
    def fetch_objects(self, determine_wants, graph_walker, resolve_ext_ref,
288
                      progress=None):
0.200.167 by Jelmer Vernooij
Implement fetch_objects properly.
289
        fd, path = tempfile.mkstemp(suffix=".pack")
0.200.695 by Jelmer Vernooij
Clean up trailing whitespace.
290
        self.fetch_pack(determine_wants, graph_walker,
291
            lambda x: os.write(fd, x), progress)
0.200.167 by Jelmer Vernooij
Implement fetch_objects properly.
292
        os.close(fd)
0.200.226 by Jelmer Vernooij
Merge thin-pack work.
293
        if os.path.getsize(path) == 0:
0.225.2 by Jelmer Vernooij
Handle situation when repository is already up to date during pull.
294
            return EmptyObjectStoreIterator()
0.200.226 by Jelmer Vernooij
Merge thin-pack work.
295
        return TemporaryPackIterator(path[:-len(".pack")], resolve_ext_ref)
0.200.167 by Jelmer Vernooij
Implement fetch_objects properly.
296
0.200.650 by Jelmer Vernooij
Use standard names for lookup functions.
297
    def lookup_bzr_revision_id(self, bzr_revid):
0.200.415 by Jelmer Vernooij
make 'bzr pull --revision' work for remote repositories.
298
        # This won't work for any round-tripped bzr revisions, but it's a start..
299
        try:
300
            return mapping_registry.revision_id_bzr_to_foreign(bzr_revid)
301
        except InvalidRevisionId:
302
            raise NoSuchRevision(self, bzr_revid)
303
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
304
0.228.3 by Jelmer Vernooij
Fix tags when fetching from remotes.
305
class RemoteGitTagDict(tag.BasicTags):
306
307
    def __init__(self, branch):
308
        self.branch = branch
309
        self.repository = branch.repository
310
311
    def get_tag_dict(self):
0.200.648 by Jelmer Vernooij
Fix tag handling when encountering packed refs.
312
        tags = {}
313
        for k, v in extract_tags(self.repository.get_refs()).iteritems():
314
            tags[k] = self.branch.mapping.revision_id_foreign_to_bzr(v)
315
        return tags
0.228.3 by Jelmer Vernooij
Fix tags when fetching from remotes.
316
317
    def set_tag(self, name, revid):
318
        # FIXME: Not supported yet, should do a push of a new ref
319
        raise NotImplementedError(self.set_tag)
320
321
0.200.139 by Jelmer Vernooij
Share more code between local and remote classes, support opening remote branches.
322
class RemoteGitBranch(GitBranch):
323
324
    def __init__(self, bzrdir, repository, name, lockfiles):
0.200.461 by Jelmer Vernooij
Reduce number of round trips when fetching from Git.
325
        self._ref = None
0.200.695 by Jelmer Vernooij
Clean up trailing whitespace.
326
        super(RemoteGitBranch, self).__init__(bzrdir, repository, name,
0.200.461 by Jelmer Vernooij
Reduce number of round trips when fetching from Git.
327
                lockfiles)
328
329
    def revision_history(self):
330
        raise GitSmartRemoteNotSupported()
331
332
    def last_revision(self):
333
        return self.mapping.revision_id_foreign_to_bzr(self.head)
334
0.200.596 by Jelmer Vernooij
Import RemoteGitBranch._get_config().
335
    def _get_config(self):
336
        class EmptyConfig(object):
337
338
            def _get_configobj(self):
339
                return config.ConfigObj()
340
341
        return EmptyConfig()
342
0.200.461 by Jelmer Vernooij
Reduce number of round trips when fetching from Git.
343
    @property
344
    def head(self):
0.200.465 by Jelmer Vernooij
Use dulwich standard functionality for finding missing revisions.
345
        if self._ref is not None:
0.200.461 by Jelmer Vernooij
Reduce number of round trips when fetching from Git.
346
            return self._ref
0.200.465 by Jelmer Vernooij
Use dulwich standard functionality for finding missing revisions.
347
        heads = self.repository.get_refs()
0.248.4 by Jelmer Vernooij
Look for heads a bit harder.
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]
352
        else:
0.200.586 by Jelmer Vernooij
Fix issues pointed out by pyflakes.
353
            raise NoSuchRef(self.name)
0.200.461 by Jelmer Vernooij
Reduce number of round trips when fetching from Git.
354
        return self._ref
0.200.141 by Jelmer Vernooij
Separate out local and remote fetching.
355
0.200.169 by Jelmer Vernooij
Fix branch cloning.
356
    def _synchronize_history(self, destination, revision_id):
357
        """See Branch._synchronize_history()."""
358
        destination.generate_revision_history(self.last_revision())
0.200.695 by Jelmer Vernooij
Clean up trailing whitespace.
359
0.200.499 by Jelmer Vernooij
Implement RemoteBranch.{get,set}_push_location.
360
    def get_push_location(self):
361
        return None
362
363
    def set_push_location(self, url):
364
        pass