creating checkouts, bound branches and standalone branches from an existing branch

John A Meinel john at arbash-meinel.com
Sun Feb 12 05:20:08 GMT 2006


Denys Duchier wrote:
> Robert Collins <robertc at robertcollins.net> writes:
> 
>> I can get some code in front of me to hack and commit on in three way:
>>  * Create a checkout
>>  * Create a bound branch
>>  * create a standalone branch
>>
>> The first one [...] clearly has to be 'bzr checkout URL [PATH]'.
>>
>> The third one [...] 'bzr branch URL PATH'
>>
>> But what about the bound branch case? Should that be 'get' ? or 'bzr
>> branch --bind' ?
> 
> How about inverting the question and trying it from joe random's perspective, a
> user who has no particular interest in VCS nor in the underlying concepts that
> are important to us (as designers and implementers).
> 
> It seems to me that, from a user's perspective, the most important thing is to
> obtain a copy of some project so that they can use it and modify it.

I would agree with you here. I would say the easiest to perform command
should give the user something they can get a remote project, make some
changes, and submit them back.

...

> produce a working tree (checkout) that is lightly bound to the branch at URL.
> This is exactly the centralized model.  It is unsurprising.

This is where I disagree with you. The problem is that getting the
checkout doesn't let you make any modifications, because you are most
likely to *not* have commit rights in the remote project.

Also, while the initial get would be fast, all other operations would be
very slow (having to access the remote repository).

I think if we focus on getting knits in, the initial branch can be very
fast (at least much faster than it is now). And then if someone does a
'get', they have a very functional offline-capable branch. We might
default to a bound branch, since that would also be centralized-like.

...

> The point is that the primary effect of "bzr get" is to obtain a working tree of
> the project at URL.  The option determines in particular what happens when the
> user commits.  This could also be done as follows:
> 
> 	bzr get --commit=remote       URL PATH
>         bzr get --commit=local,remote URL PATH
>         bzr get --commit=local        URL PATH
> 
> Cheers,
> 
> --Denys

Doing it as use cases is interesting. I'm not sure if --commit= is the
best one, but it might be. Perhaps '--access=remote, --access=remote,local'

Just a thought.

In response to Robert's original question yes 'checkout, and branch' are
well defined. I would tend to make the option 'branch --bound', but
after this discussion we might also want to have 'get' default to a
bound branch.

(We might also support a 'bzr mirror' command, which might actually
disable committing locally, but I don't know if we want to go there.)
John
=:->

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 249 bytes
Desc: OpenPGP digital signature
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20060211/1216c9aa/attachment.pgp 


More information about the bazaar mailing list