[MERGE][#270397] Fix branch --stacked from a branch on a smart server. Also, a question about branch.sprout.

John Arbash Meinel john at arbash-meinel.com
Mon Oct 27 19:19:56 GMT 2008


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


> It's enough to fix <https://bugs.launchpad.net/bzr/+bug/270397>, but I think we
> need to do more than I've done here.  The tests in
> branch_implementations.test_sprout should really cover this behaviour as well.
> In fact there's already a test that looks like it tests the contract here, but
> it's misleading:
> 
>     def test_sprout_preserves_kind(self):
>         branch1 = self.make_branch('branch1')
>         target_repo = self.make_repository('branch2')
>         target_repo.fetch(branch1.repository)
>         branch2 = branch1.sprout(target_repo.bzrdir)
>         if isinstance(branch1, remote.RemoteBranch):
>             branch1._ensure_real()
>             target_class = branch1._real_branch.__class__
>         else:
>             target_class = branch1.__class__
>         self.assertIsInstance(branch2, target_class)
> 
> The contract isn't simply “sprout preserves kind” anymore, but this test is
> still passing despite that.  I think this particular test covers “sprout
> preserves kind if the to_bzrdir doesn't specify something else”... which is a
> start, but obviously leaves some important gaps :)
> 
> I think perhaps we've been a little fuzzy on exactly what the design here is.
> Rather than assume I know what all the requirements and intentions are, I'll
> ask:
> 
> What exactly is the behaviour of some_branch.sprout meant to be?
> 
> -Andrew.


As you noticed, there was a change here, and I think Aaron might be the
best to mention what he is thinking.

I know we want a way to upgrade the format if someone explicitly
requests "--stacked" either via "bzr push --stacked" or "bzr branch
- --stacked".

We also want to be able to configure a BzrDir such that branches pushed
underneath it also default to the --stacked flag, but only if the branch
format supports it. So if you have a bzr config lying around it won't
silently upgrade your branch format, but if you are in 1.6+ format it
can auto-stack for you.

I'm not sure how else to_bzrdir could configure the format, but I think
it boils down to supporting 'bzr branch --stacked' auto-upgrading the
target format.

So I'm guessing it is actually 'sprout preserves to_bzrdir format, and
to_bzrdir should be initialized appropriately by the source format'.

John
=:->
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkkGFFwACgkQJdeBCYSNAAN4rQCfchTOP2AmfWTfj8mf+5Wru4cq
GIEAoM5N4VcNNoMmUTpPn34mDgrqZC/9
=tg+2
-----END PGP SIGNATURE-----



More information about the bazaar mailing list