203
204
raise NotImplementedError(SvnRemoteAccess.clone)
205
def sprout(self, *args, **kwargs):
206
def sprout(self, url, revision_id=None, force_new_repo=False,
207
recurse='down', possible_transports=None,
208
accelerator_tree=None, hardlink=False, stacked=False,
209
source_branch=None, create_tree_if_local=True):
210
from bzrlib.repository import InterRepository
211
from bzrlib.transport.local import LocalTransport
206
212
if self.branch_path == "":
207
213
guessed_layout = self.find_repository().get_guessed_layout()
208
214
if guessed_layout is not None and not guessed_layout.is_branch(""):
209
215
trace.warning('Cloning Subversion repository as branch. '
210
216
'To import the individual branches in the repository, '
211
217
'use "bzr svn-import".')
212
return super(SvnRemoteAccess, self).sprout(*args, **kwargs)
218
target_transport = get_transport(url, possible_transports)
219
target_transport.ensure_base()
220
cloning_format = self.cloning_metadir()
221
# Create/update the result branch
222
result = cloning_format.initialize_on_transport(target_transport)
223
source_branch = self.open_branch()
224
source_repository = self.find_repository()
226
result_repo = result.find_repository()
227
except errors.NoRepositoryPresent:
228
result_repo = result.create_repository()
229
target_is_empty = True
231
target_is_empty = None # Unknown
233
raise errors.IncompatibleRepositories(source_repository, result_repo)
234
interrepo = InterRepository.get(source_repository, result_repo)
235
interrepo.fetch(revision_id=revision_id,
236
project=source_branch.project, mapping=source_branch.mapping)
237
result_branch = source_branch.sprout(result,
238
revision_id=revision_id, repository=result_repo)
239
if (create_tree_if_local and isinstance(target_transport, LocalTransport)
240
and (result_repo is None or result_repo.make_working_trees())):
241
result.create_workingtree(accelerator_tree=accelerator_tree,
242
hardlink=hardlink, from_branch=result_branch)
214
245
def is_control_filename(self, path):
215
246
# Bare, so anything is a control file