use as template
initial draft spec
|Deletions are marked like this.||Additions are marked like this.|
|Line 1:||Line 1:|
|## page was copied from DraftSpecs/SimpleCheckouts
* '''Launchpad Entry''':https://blueprints.launchpad.net/bzr/+spec/simple-checkouts
* '''Created''': <<Date(2009-04-20T00:34:00Z)>> by IanClatworthy
|* '''Created''': <<DateTime(2009-10-31T23:50:00+0130)>> by Marius Kruger (https://launchpad.net/~amanica)|
|Line 11:||Line 9:|
|This specification recommends that checkouts should be lightweight and lightweight only.||Change log CLI to behave to not show unsolicited parents and to be consist with other commands.|
|Line 16:||Line 14:|
|Most users, particularly those coming from cvs and Subversion, expect checkouts to be lightweight.
Having both heavyweight checkouts and bound branches is redundant.
Having both lightweight and heavyweight checkouts makes explaining checkouts harder than it ought to be. If you think a lightweight checkout is a heavyweight checkout with zero history cached (like the spec author initially expected), you're missing a key semantic difference:
* lightweight checkout = tree & a '''reference''' to a branch
* heavyweight checkout = tree+branch & a '''bind''' to a second branch.
That's simply too much magic/complexity for 95% of new users. It also leads to unexpected problems. Consider:
work (lw checkout) switched to
trunk (branch) bound to
Running ''bzr bind'' in work needs to change what trunk is bound to, not the link between work and trunk. If you accidently made work a heavyweight checkout (the current default), you're confused when the wrong link is changed.
|There were some bugs logged in this regard and it seemed that most of the core devs [[https://code.launchpad.net/~amanica/bzr/log_returns_too_much/+merge/8349|agreed]] that this should be fixed.|
|Line 36:||Line 19:|
|Here are the proposed changes:||Here are the proposed changes (originally listed by John A Meinel):|
|Line 38:||Line 21:|
| * Remove the --lightweight option from the '''checkout''' command and always create a lightweight checkout.
* Add --bind to the '''branch''' command.
Some changes may also be required to the '''reconfigure''' command.
| A. "bzr log -r 10" should show just the revision 10 (https://bugs.launchpad.net/bzr/+bug/325618)
A. "bzr log -n0 -r 10" ought to show the merged revisions
A. "bzr log -c 10" ought to show the merged revisions
A. "bzr log (-e --exclude-lower) -r 9..11" should '''not''' show the revision for 9, but show
everything that was merged into 10 and 11.
A. make (-e --exclude-lower) the default. - ''optional/controversial''
|Line 45:||Line 30:|
|Line 46:||Line 32:|
|If you want to use the lockstep development workflow with local history and/or make local commits, use a bound branch.||== Implementation plan ==|
|Line 48:||Line 34:|
|We probably want to remove --local from the '''commit''' command. The reason behind that is the '''update''' command gets ugly and confusing because local commits bring 4 trees into play, instead of the usual 3, so ''multiple'' merges are needed. Strictly speaking though, this change is quite independent from the other changes proposed in this spec.
== Implementation notes ==
We might need to tweak something to make diff against the basis tree faster for lightweight checkouts. But the answer to that is a better lightweight checkout implementation (when time permits), not a heavyweight checkout. It's perfectly acceptable to say that checkouts are designed for small, drive-by fixes to projects, and for setups where the branches are accessible over a high speed LAN.
|We would probably need to fix them in phases.
1. I think we should fix A-C in one go. (https://code.launchpad.net/~amanica/bzr/log_returns_too_much)
1. implement D. , maybe that is sufficient if it is well documented
1. if we really want E. do it
Created: 2009-10-31 22:20:00 by Marius Kruger (https://launchpad.net/~amanica)
Change log CLI to behave to not show unsolicited parents and to be consist with other commands.
There were some bugs logged in this regard and it seemed that most of the core devs agreed that this should be fixed.
Proposed UI enhancements
Here are the proposed changes (originally listed by John A Meinel):
"bzr log -r 10" should show just the revision 10 (https://bugs.launchpad.net/bzr/+bug/325618)
- "bzr log -n0 -r 10" ought to show the merged revisions
- "bzr log -c 10" ought to show the merged revisions
"bzr log (-e --exclude-lower) -r 9..11" should not show the revision for 9, but show
- everything that was merged into 10 and 11.
make (-e --exclude-lower) the default. - optional/controversial
We would probably need to fix them in phases.
I think we should fix A-C in one go. (https://code.launchpad.net/~amanica/bzr/log_returns_too_much)
- implement D. , maybe that is sufficient if it is well documented
- if we really want E. do it