I also was able to duplicate this with a simple "bzr serve" and "bzr checkout bzr://localhost/".
This is actually related to bug #103195. What I'm seeing is that "bzr co" tries to figure out the target format using bzrdir.cloning_metadir(). Which then inspects a couple of the objects to be compatible. However there is this code:
else:
# XXX TODO: This isinstance is here because we have not implemented
# the fix recommended in bug # 103195 - to delegate this choice the
# repository itself.
repo_format = source_repository._format
if not isinstance(repo_format, remote.RemoteRepositoryFormat): result_format.repository_format = repo_format
Which means that for the 'bzr://' protocol, the target format is always initialized with the default repository format.
Another workaround for this is to create a target repository ahead of time.
bzr init-repo --rich-root-pack repo
cd repo
bzr co bzr+ssh://branch/which/is/in/non/default/format
I also was able to duplicate this with a simple "bzr serve" and "bzr checkout bzr://localhost/".
This is actually related to bug #103195. What I'm seeing is that "bzr co" tries to figure out the target format using bzrdir. cloning_ metadir( ). Which then inspects a couple of the objects to be compatible. However there is this code:
else: repository. _format repo_format, remote. RemoteRepositor yFormat) :
result_ format. repository_ format = repo_format
# XXX TODO: This isinstance is here because we have not implemented
# the fix recommended in bug # 103195 - to delegate this choice the
# repository itself.
repo_format = source_
if not isinstance(
Which means that for the 'bzr://' protocol, the target format is always initialized with the default repository format.
Another workaround for this is to create a target repository ahead of time.
bzr init-repo --rich-root-pack repo //branch/ which/is/ in/non/ default/ format
cd repo
bzr co bzr+ssh:
Should work.