151
155
format.get_format_description(),
154
def clone(self, url, revision_id=None, force_new_repo=False,
155
preserve_stacking=False):
158
def clone(self, url, revision_id=None, force_new_repo=False):
156
159
"""Clone this bzrdir and its contents to url verbatim.
158
:param url: The url create the clone at. If url's last component does
159
not exist, it will be created.
160
:param revision_id: The tip revision-id to use for any branch or
161
working tree. If not None, then the clone operation may tune
161
If url's last component does not exist, it will be created.
163
if revision_id is not None, then the clone operation may tune
162
164
itself to download less data.
163
:param force_new_repo: Do not use a shared repository for the target
165
:param force_new_repo: Do not use a shared repository for the target
164
166
even if one is available.
165
:param preserve_stacking: When cloning a stacked branch, stack the
166
new branch on top of the other branch's stacked-on branch.
168
168
return self.clone_on_transport(get_transport(url),
169
169
revision_id=revision_id,
170
force_new_repo=force_new_repo,
171
preserve_stacking=preserve_stacking)
170
force_new_repo=force_new_repo)
173
172
def clone_on_transport(self, transport, revision_id=None,
174
force_new_repo=False, preserve_stacking=False,
173
force_new_repo=False):
176
174
"""Clone this bzrdir and its contents to transport verbatim.
178
:param transport: The transport for the location to produce the clone
179
at. If the target directory does not exist, it will be created.
180
:param revision_id: The tip revision-id to use for any branch or
181
working tree. If not None, then the clone operation may tune
176
If the target directory does not exist, it will be created.
178
if revision_id is not None, then the clone operation may tune
182
179
itself to download less data.
183
:param force_new_repo: Do not use a shared repository for the target,
180
:param force_new_repo: Do not use a shared repository for the target
184
181
even if one is available.
185
:param preserve_stacking: When cloning a stacked branch, stack the
186
new branch on top of the other branch's stacked-on branch.
188
183
transport.ensure_base()
189
require_stacking = (stacked_on is not None)
190
metadir = self.cloning_metadir(require_stacking)
191
result = metadir.initialize_on_transport(transport)
184
result = self.cloning_metadir().initialize_on_transport(transport)
192
185
repository_policy = None
194
187
local_repo = self.find_repository()
195
188
except errors.NoRepositoryPresent:
196
189
local_repo = None
198
local_branch = self.open_branch()
199
except errors.NotBranchError:
202
# enable fallbacks when branch is not a branch reference
203
if local_branch.repository.has_same_location(local_repo):
204
local_repo = local_branch.repository
205
if preserve_stacking:
207
stacked_on = local_branch.get_stacked_on_url()
208
except (errors.UnstackableBranchFormat,
209
errors.UnstackableRepositoryFormat,
214
191
# may need to copy content in
215
192
repository_policy = result.determine_repository_policy(
216
force_new_repo, stacked_on, self.root_transport.base,
217
require_stacking=require_stacking)
218
194
make_working_trees = local_repo.make_working_trees()
219
195
result_repo = repository_policy.acquire_repository(
220
196
make_working_trees, local_repo.is_shared())
221
197
result_repo.fetch(local_repo, revision_id=revision_id)
224
198
# 1 if there is a branch present
225
199
# make sure its content is available in the target repository
227
if local_branch is not None:
202
local_branch = self.open_branch()
203
except errors.NotBranchError:
228
206
result_branch = local_branch.clone(result, revision_id=revision_id)
229
207
if repository_policy is not None:
230
208
repository_policy.configure_branch(result_branch)
210
result_repo = result.find_repository()
211
except errors.NoRepositoryPresent:
231
213
if result_repo is None or result_repo.make_working_trees():
233
215
self.open_workingtree().clone(result)
369
351
bzrdir._find_or_create_repository(force_new_repo)
370
352
return bzrdir.create_branch()
372
def determine_repository_policy(self, force_new_repo=False, stack_on=None,
373
stack_on_pwd=None, require_stacking=False):
354
def determine_repository_policy(self, force_new_repo=False):
374
355
"""Return an object representing a policy to use.
376
357
This controls whether a new repository is created, or a shared
377
358
repository used instead.
379
If stack_on is supplied, will not seek a containing shared repo.
381
:param force_new_repo: If True, require a new repository to be created.
382
:param stack_on: If supplied, the location to stack on. If not
383
supplied, a default_stack_on location may be used.
384
:param stack_on_pwd: If stack_on is relative, the location it is
387
360
def repository_policy(found_bzrdir):
390
config = found_bzrdir.get_config()
392
if config is not None:
393
stack_on = config.get_default_stack_on()
394
if stack_on is not None:
395
stack_on_pwd = found_bzrdir.root_transport.base
397
note('Using default stacking branch %s at %s', stack_on,
399
362
# does it have a repository ?
401
364
repository = found_bzrdir.open_repository()
411
374
return None, False
413
return UseExistingRepository(repository, stack_on,
414
stack_on_pwd, require_stacking=require_stacking), True
376
return UseExistingRepository(repository), True
416
return CreateRepository(self, stack_on, stack_on_pwd,
417
require_stacking=require_stacking), True
378
return CreateRepository(self), True
419
380
if not force_new_repo:
421
policy = self._find_containing(repository_policy)
422
if policy is not None:
426
return UseExistingRepository(self.open_repository(),
427
stack_on, stack_on_pwd,
428
require_stacking=require_stacking)
429
except errors.NoRepositoryPresent:
431
return CreateRepository(self, stack_on, stack_on_pwd,
432
require_stacking=require_stacking)
381
policy = self._find_containing(repository_policy)
382
if policy is not None:
384
return CreateRepository(self)
434
386
def _find_or_create_repository(self, force_new_repo):
435
387
"""Create a new repository if needed, returning the repository."""
902
844
tree, branch = bzrdir._get_tree_branch()
903
845
return tree, branch, relpath
906
def open_containing_tree_branch_or_repository(klass, location):
907
"""Return the working tree, branch and repo contained by a location.
909
Returns (tree, branch, repository, relpath).
910
If there is no tree containing the location, tree will be None.
911
If there is no branch containing the location, branch will be None.
912
If there is no repository containing the location, repository will be
914
relpath is the portion of the path that is contained by the innermost
917
If no tree, branch or repository is found, a NotBranchError is raised.
919
bzrdir, relpath = klass.open_containing(location)
921
tree, branch = bzrdir._get_tree_branch()
922
except errors.NotBranchError:
924
repo = bzrdir.find_repository()
925
return None, None, repo, relpath
926
except (errors.NoRepositoryPresent):
927
raise errors.NotBranchError(location)
928
return tree, branch, branch.repository, relpath
930
847
def open_repository(self, _unsupported=False):
931
848
"""Open the repository object at this BzrDir if one is present.
1016
927
result_format.workingtree_format = tree._format.__class__()
1017
928
return result_format, source_repository
1019
def cloning_metadir(self, require_stacking=False):
930
def cloning_metadir(self):
1020
931
"""Produce a metadir suitable for cloning or sprouting with.
1022
933
These operations may produce workingtrees (yes, even though they're
1023
934
"cloning" something that doesn't have a tree), so a viable workingtree
1024
935
format must be selected.
1026
:require_stacking: If True, non-stackable formats will be upgraded
1027
to similar stackable formats.
1028
:returns: a BzrDirFormat with all component formats either set
1029
appropriately or set to None if that component should not be
1032
937
format, repository = self._cloning_metadir()
1033
938
if format._workingtree_format is None:
1036
941
tree_format = repository._format._matchingbzrdir.workingtree_format
1037
942
format.workingtree_format = tree_format.__class__()
1038
if (require_stacking and not
1039
format.get_branch_format().supports_stacking()):
1040
# We need to make a stacked branch, but the default format for the
1041
# target doesn't support stacking. So force a branch that *can*
1043
from bzrlib.branch import BzrBranchFormat7
1044
format._branch_format = BzrBranchFormat7()
1045
mutter("using %r for stacking" % (format._branch_format,))
1046
from bzrlib.repofmt import pack_repo
1047
if format.repository_format.rich_root_data:
1048
bzrdir_format_name = '1.6.1-rich-root'
1049
repo_format = pack_repo.RepositoryFormatKnitPack5RichRoot()
1051
bzrdir_format_name = '1.6'
1052
repo_format = pack_repo.RepositoryFormatKnitPack5()
1053
note('Source format does not support stacking, using format:'
1055
bzrdir_format_name, repo_format.get_format_description())
1056
format.repository_format = repo_format
1059
945
def checkout_metadir(self):
1080
966
content is different.
1081
967
:param hardlink: If true, hard-link files from accelerator_tree,
1083
:param stacked: If true, create a stacked branch referring to the
1084
location of this control directory.
1086
970
target_transport = get_transport(url, possible_transports)
1087
971
target_transport.ensure_base()
1088
cloning_format = self.cloning_metadir(stacked)
1089
# Create/update the result branch
972
cloning_format = self.cloning_metadir()
1090
973
result = cloning_format.initialize_on_transport(target_transport)
1092
975
source_branch = self.open_branch()
1093
976
source_repository = source_branch.repository
1095
stacked_branch_url = self.root_transport.base
1097
# if a stacked branch wasn't requested, we don't create one
1098
# even if the origin was stacked
1099
stacked_branch_url = None
1100
977
except errors.NotBranchError:
1101
978
source_branch = None
1103
980
source_repository = self.open_repository()
1104
981
except errors.NoRepositoryPresent:
1105
982
source_repository = None
1106
stacked_branch_url = None
1107
repository_policy = result.determine_repository_policy(
1108
force_new_repo, stacked_branch_url, require_stacking=stacked)
1109
result_repo = repository_policy.acquire_repository()
1110
if source_repository is not None:
1111
# Fetch while stacked to prevent unstacked fetch from
1113
result_repo.fetch(source_repository, revision_id=revision_id)
1115
if source_branch is None:
1116
# this is for sprouting a bzrdir without a branch; is that
1118
# Not especially, but it's part of the contract.
1119
result_branch = result.create_branch()
1121
# Force NULL revision to avoid using repository before stacking
1123
result_branch = source_branch.sprout(
1124
result, revision_id=_mod_revision.NULL_REVISION)
1125
parent_location = result_branch.get_parent()
1126
mutter("created new branch %r" % (result_branch,))
1127
repository_policy.configure_branch(result_branch)
987
result_repo = result.find_repository()
988
except errors.NoRepositoryPresent:
990
if source_repository is None and result_repo is not None:
992
elif source_repository is None and result_repo is None:
993
# no repo available, make a new one
994
result.create_repository()
995
elif source_repository is not None and result_repo is None:
996
# have source, and want to make a new target repo
997
result_repo = source_repository.sprout(result,
998
revision_id=revision_id)
1000
# fetch needed content into target.
1001
if source_repository is not None:
1003
# source_repository.copy_content_into(result_repo,
1004
# revision_id=revision_id)
1005
# so we can override the copy method
1006
result_repo.fetch(source_repository, revision_id=revision_id)
1128
1007
if source_branch is not None:
1129
source_branch.copy_content_into(result_branch, revision_id)
1130
# Override copy_content_into
1131
result_branch.set_parent(parent_location)
1133
# Create/update the result working tree
1134
if isinstance(target_transport, local.LocalTransport) and (
1008
source_branch.sprout(result, revision_id=revision_id)
1010
result.create_branch()
1011
if isinstance(target_transport, LocalTransport) and (
1135
1012
result_repo is None or result_repo.make_working_trees()):
1136
1013
wt = result.create_workingtree(accelerator_tree=accelerator_tree,
1137
1014
hardlink=hardlink)
1191
1065
"""Pre-splitout bzrdirs do not suffer from stale locks."""
1192
1066
raise NotImplementedError(self.break_lock)
1194
def cloning_metadir(self, require_stacking=False):
1068
def cloning_metadir(self):
1195
1069
"""Produce a metadir suitable for cloning with."""
1196
if require_stacking:
1197
return format_registry.make_bzrdir('1.6')
1198
1070
return self._format.__class__()
1200
def clone(self, url, revision_id=None, force_new_repo=False,
1201
preserve_stacking=False):
1202
"""See BzrDir.clone().
1204
force_new_repo has no effect, since this family of formats always
1205
require a new repository.
1206
preserve_stacking has no effect, since no source branch using this
1207
family of formats can be stacked, so there is no stacking to preserve.
1072
def clone(self, url, revision_id=None, force_new_repo=False):
1073
"""See BzrDir.clone()."""
1074
from bzrlib.workingtree import WorkingTreeFormat2
1209
1075
self._make_tail(url)
1210
1076
result = self._format._initialize_for_clone(url)
1211
1077
self.open_repository().clone(result, revision_id=revision_id)
1212
1078
from_branch = self.open_branch()
1213
1079
from_branch.clone(result, revision_id=revision_id)
1215
tree = self.open_workingtree()
1081
self.open_workingtree().clone(result)
1216
1082
except errors.NotLocalUrl:
1217
1083
# make a new one, this format always has to have one.
1218
result._init_workingtree()
1085
WorkingTreeFormat2().initialize(result)
1086
except errors.NotLocalUrl:
1087
# but we cannot do it for remote trees.
1088
to_branch = result.open_branch()
1089
WorkingTreeFormat2()._stub_initialize_remote(to_branch)
1223
1092
def create_branch(self):
1224
1093
"""See BzrDir.create_branch."""
1225
return self._format.get_branch_format().initialize(self)
1094
return self.open_branch()
1227
1096
def destroy_branch(self):
1228
1097
"""See BzrDir.destroy_branch."""
1910
1753
from bzrlib.branch import BzrBranchFormat4
1911
1754
from bzrlib.repofmt.weaverepo import RepositoryFormat5
1755
from bzrlib.workingtree import WorkingTreeFormat2
1912
1756
result = (super(BzrDirFormat5, self).initialize_on_transport(transport))
1913
1757
RepositoryFormat5().initialize(result, _internal=True)
1914
1758
if not _cloning:
1915
1759
branch = BzrBranchFormat4().initialize(result)
1916
result._init_workingtree()
1761
WorkingTreeFormat2().initialize(result)
1762
except errors.NotLocalUrl:
1763
# Even though we can't access the working tree, we need to
1764
# create its control files.
1765
WorkingTreeFormat2()._stub_initialize_remote(branch)
1919
1768
def _open(self, transport):
1967
1812
from bzrlib.branch import BzrBranchFormat4
1968
1813
from bzrlib.repofmt.weaverepo import RepositoryFormat6
1814
from bzrlib.workingtree import WorkingTreeFormat2
1969
1815
result = super(BzrDirFormat6, self).initialize_on_transport(transport)
1970
1816
RepositoryFormat6().initialize(result, _internal=True)
1971
1817
if not _cloning:
1972
1818
branch = BzrBranchFormat4().initialize(result)
1973
result._init_workingtree()
1820
WorkingTreeFormat2().initialize(result)
1821
except errors.NotLocalUrl:
1822
# Even though we can't access the working tree, we need to
1823
# create its control files.
1824
WorkingTreeFormat2()._stub_initialize_remote(branch)
1976
1827
def _open(self, transport):
2204
2055
self.bzrdir.transport.mkdir('revision-store')
2205
2056
revision_transport = self.bzrdir.transport.clone('revision-store')
2206
2057
# TODO permissions
2207
from bzrlib.xml5 import serializer_v5
2208
from bzrlib.repofmt.weaverepo import RevisionTextStore
2209
revision_store = RevisionTextStore(revision_transport,
2210
serializer_v5, False, versionedfile.PrefixMapper(),
2211
lambda:True, lambda:True)
2058
_revision_store = TextRevisionStore(TextStore(revision_transport,
2062
transaction = WriteTransaction()
2213
2063
for i, rev_id in enumerate(self.converted_revs):
2214
2064
self.pb.update('write revision', i, len(self.converted_revs))
2215
text = serializer_v5.write_revision_to_string(
2216
self.revisions[rev_id])
2218
revision_store.add_lines(key, None, osutils.split_lines(text))
2065
_revision_store.add_revision(self.revisions[rev_id], transaction)
2220
2067
self.pb.clear()
2384
2232
if (filename.endswith(".weave") or
2385
2233
filename.endswith(".gz") or
2386
2234
filename.endswith(".sig")):
2387
file_id, suffix = os.path.splitext(filename)
2235
file_id = os.path.splitext(filename)[0]
2389
2237
file_id = filename
2391
new_name = store._mapper.map((file_id,)) + suffix
2238
prefix_dir = store.hash_prefix(file_id)
2392
2239
# FIXME keep track of the dirs made RBC 20060121
2394
store_transport.move(filename, new_name)
2241
store_transport.move(filename, prefix_dir + '/' + filename)
2395
2242
except errors.NoSuchFile: # catches missing dirs strangely enough
2396
store_transport.mkdir(osutils.dirname(new_name))
2397
store_transport.move(filename, new_name)
2243
store_transport.mkdir(prefix_dir)
2244
store_transport.move(filename, prefix_dir + '/' + filename)
2398
2245
self.bzrdir.transport.put_bytes(
2399
2246
'branch-format',
2400
2247
BzrDirFormat6().get_format_string(),
2558
2405
# TODO: conversions of Branch and Tree should be done by
2559
# InterXFormat lookups/some sort of registry.
2406
# InterXFormat lookups
2560
2407
# Avoid circular imports
2561
2408
from bzrlib import branch as _mod_branch
2562
old = branch._format.__class__
2563
new = self.target_format.get_branch_format().__class__
2565
if (old == _mod_branch.BzrBranchFormat5 and
2566
new in (_mod_branch.BzrBranchFormat6,
2567
_mod_branch.BzrBranchFormat7)):
2568
branch_converter = _mod_branch.Converter5to6()
2569
elif (old == _mod_branch.BzrBranchFormat6 and
2570
new == _mod_branch.BzrBranchFormat7):
2571
branch_converter = _mod_branch.Converter6to7()
2573
raise errors.BadConversionTarget("No converter", new)
2409
if (branch._format.__class__ is _mod_branch.BzrBranchFormat5 and
2410
self.target_format.get_branch_format().__class__ is
2411
_mod_branch.BzrBranchFormat6):
2412
branch_converter = _mod_branch.Converter5to6()
2574
2413
branch_converter.convert(branch)
2575
branch = self.bzrdir.open_branch()
2576
old = branch._format.__class__
2578
2415
tree = self.bzrdir.open_workingtree(recommend_upgrade=False)
2579
2416
except (errors.NoWorkingTree, errors.NotLocalUrl):
2827
2664
for a branch that is being created. The most basic policy decision is
2828
2665
whether to create a new repository or use an existing one.
2830
def __init__(self, stack_on, stack_on_pwd, require_stacking):
2833
:param stack_on: A location to stack on
2834
:param stack_on_pwd: If stack_on is relative, the location it is
2836
:param require_stacking: If True, it is a failure to not stack.
2838
self._stack_on = stack_on
2839
self._stack_on_pwd = stack_on_pwd
2840
self._require_stacking = require_stacking
2842
2668
def configure_branch(self, branch):
2843
2669
"""Apply any configuration data from this policy to the branch.
2845
Default implementation sets repository stacking.
2671
Default implementation does nothing.
2847
if self._stack_on is None:
2849
if self._stack_on_pwd is None:
2850
stack_on = self._stack_on
2853
stack_on = urlutils.rebase_url(self._stack_on,
2855
branch.bzrdir.root_transport.base)
2856
except errors.InvalidRebaseURLs:
2857
stack_on = self._get_full_stack_on()
2859
branch.set_stacked_on_url(stack_on)
2860
except errors.UnstackableBranchFormat:
2861
if self._require_stacking:
2864
def _get_full_stack_on(self):
2865
"""Get a fully-qualified URL for the stack_on location."""
2866
if self._stack_on is None:
2868
if self._stack_on_pwd is None:
2869
return self._stack_on
2871
return urlutils.join(self._stack_on_pwd, self._stack_on)
2873
def _add_fallback(self, repository):
2874
"""Add a fallback to the supplied repository, if stacking is set."""
2875
stack_on = self._get_full_stack_on()
2876
if stack_on is None:
2878
stacked_dir = BzrDir.open(stack_on)
2880
stacked_repo = stacked_dir.open_branch().repository
2881
except errors.NotBranchError:
2882
stacked_repo = stacked_dir.open_repository()
2884
repository.add_fallback_repository(stacked_repo)
2885
except errors.UnstackableRepositoryFormat:
2886
if self._require_stacking:
2889
2675
def acquire_repository(self, make_working_trees=None, shared=False):
2890
2676
"""Acquire a repository for this bzrdir.
2902
2688
class CreateRepository(RepositoryAcquisitionPolicy):
2903
2689
"""A policy of creating a new repository"""
2905
def __init__(self, bzrdir, stack_on=None, stack_on_pwd=None,
2906
require_stacking=False):
2909
:param bzrdir: The bzrdir to create the repository on.
2910
:param stack_on: A location to stack on
2911
:param stack_on_pwd: If stack_on is relative, the location it is
2914
RepositoryAcquisitionPolicy.__init__(self, stack_on, stack_on_pwd,
2691
def __init__(self, bzrdir):
2692
RepositoryAcquisitionPolicy.__init__(self)
2916
2693
self._bzrdir = bzrdir
2918
2695
def acquire_repository(self, make_working_trees=None, shared=False):
2930
2706
class UseExistingRepository(RepositoryAcquisitionPolicy):
2931
2707
"""A policy of reusing an existing repository"""
2933
def __init__(self, repository, stack_on=None, stack_on_pwd=None,
2934
require_stacking=False):
2937
:param repository: The repository to use.
2938
:param stack_on: A location to stack on
2939
:param stack_on_pwd: If stack_on is relative, the location it is
2942
RepositoryAcquisitionPolicy.__init__(self, stack_on, stack_on_pwd,
2709
def __init__(self, repository):
2710
RepositoryAcquisitionPolicy.__init__(self)
2944
2711
self._repository = repository
2946
2713
def acquire_repository(self, make_working_trees=None, shared=False):
3034
2800
branch_format='bzrlib.branch.BzrBranchFormat6',
3035
2801
tree_format='bzrlib.workingtree.WorkingTreeFormat4',
3037
format_registry.register_metadir('1.6',
3038
'bzrlib.repofmt.pack_repo.RepositoryFormatKnitPack5',
3039
help='A branch and pack based repository that supports stacking. ',
3040
branch_format='bzrlib.branch.BzrBranchFormat7',
3041
tree_format='bzrlib.workingtree.WorkingTreeFormat4',
3043
format_registry.register_metadir('1.6.1-rich-root',
3044
'bzrlib.repofmt.pack_repo.RepositoryFormatKnitPack5RichRoot',
3045
help='A branch and pack based repository that supports stacking '
3046
'and rich root data (needed for bzr-svn). ',
3047
branch_format='bzrlib.branch.BzrBranchFormat7',
3048
tree_format='bzrlib.workingtree.WorkingTreeFormat4',
3050
2803
# The following two formats should always just be aliases.
3051
2804
format_registry.register_metadir('development',
3052
'bzrlib.repofmt.pack_repo.RepositoryFormatPackDevelopment2',
2805
'bzrlib.repofmt.pack_repo.RepositoryFormatPackDevelopment0',
3053
2806
help='Current development format. Can convert data to and from pack-0.92 '
3054
2807
'(and anything compatible with pack-0.92) format repositories. '
3055
'Repositories and branches in this format can only be read by bzr.dev. '
2808
'Repositories in this format can only be read by bzr.dev. '
3057
2810
'http://doc.bazaar-vcs.org/latest/developers/development-repo.html '
3059
branch_format='bzrlib.branch.BzrBranchFormat7',
2812
branch_format='bzrlib.branch.BzrBranchFormat6',
3060
2813
tree_format='bzrlib.workingtree.WorkingTreeFormat4',
3061
2814
experimental=True,
3064
2817
format_registry.register_metadir('development-subtree',
3065
'bzrlib.repofmt.pack_repo.RepositoryFormatPackDevelopment2Subtree',
2818
'bzrlib.repofmt.pack_repo.RepositoryFormatPackDevelopment0Subtree',
3066
2819
help='Current development format, subtree variant. Can convert data to and '
3067
'from pack-0.92-subtree (and anything compatible with '
3068
'pack-0.92-subtree) format repositories. Repositories and branches in '
3069
'this format can only be read by bzr.dev. Please read '
2820
'from pack-0.92 (and anything compatible with pack-0.92) format '
2821
'repositories. Repositories in this format can only be read by '
2822
'bzr.dev. Please read '
3070
2823
'http://doc.bazaar-vcs.org/latest/developers/development-repo.html '
3072
branch_format='bzrlib.branch.BzrBranchFormat7',
2825
branch_format='bzrlib.branch.BzrBranchFormat6',
3073
2826
tree_format='bzrlib.workingtree.WorkingTreeFormat4',
3074
2827
experimental=True,
3077
# And the development formats above will have aliased one of the following:
3078
format_registry.register_metadir('development2',
3079
'bzrlib.repofmt.pack_repo.RepositoryFormatPackDevelopment2',
3080
help='1.6.1 with B+Tree based index. '
3082
'http://doc.bazaar-vcs.org/latest/developers/development-repo.html '
3084
branch_format='bzrlib.branch.BzrBranchFormat7',
3085
tree_format='bzrlib.workingtree.WorkingTreeFormat4',
3089
format_registry.register_metadir('development2-subtree',
3090
'bzrlib.repofmt.pack_repo.RepositoryFormatPackDevelopment2Subtree',
3091
help='1.6.1-subtree with B+Tree based index. '
3093
'http://doc.bazaar-vcs.org/latest/developers/development-repo.html '
3095
branch_format='bzrlib.branch.BzrBranchFormat7',
3096
tree_format='bzrlib.workingtree.WorkingTreeFormat4',
3100
# The current format that is made on 'bzr init'.
2830
# And the development formats which the will have aliased one of follow:
2831
format_registry.register_metadir('development0',
2832
'bzrlib.repofmt.pack_repo.RepositoryFormatPackDevelopment0',
2833
help='Trivial rename of pack-0.92 to provide a development format. '
2835
'http://doc.bazaar-vcs.org/latest/developers/development-repo.html '
2837
branch_format='bzrlib.branch.BzrBranchFormat6',
2838
tree_format='bzrlib.workingtree.WorkingTreeFormat4',
2842
format_registry.register_metadir('development0-subtree',
2843
'bzrlib.repofmt.pack_repo.RepositoryFormatPackDevelopment0Subtree',
2844
help='Trivial rename of pack-0.92-subtree to provide a development format. '
2846
'http://doc.bazaar-vcs.org/latest/developers/development-repo.html '
2848
branch_format='bzrlib.branch.BzrBranchFormat6',
2849
tree_format='bzrlib.workingtree.WorkingTreeFormat4',
3101
2853
format_registry.set_default('pack-0.92')