Bazaar

Bazaar

 




Wiki Tools

  • Find Page
  • Recent Changes
  • Page History
  • Attachments

Differences between revisions 1 and 6 (spanning 5 versions)
Revision 1 as of 2009-04-19 15:02:55
Size: 2623
Comment:
Revision 6 as of 2009-11-01 03:59:57
Size: 1607
Editor: amanica
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
 * '''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 6: Line 5:
[[TableOfContents()]] <<TableOfContents>>
Line 10: Line 9:
This specification recommends that checkouts should be lightweight and lightweight only. Change log CLI behaviour to not show unsolicited parents and to be consist with other commands.
Line 15: 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
  upstream (branch).
}}}
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 35: Line 19:
Here are the proposed changes: Here are the proposed changes (originally listed by John A Meinel):
Line 37: 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 i.e. imply -n0 or default to -n0 in stead of -n1 ''(do we want this?)''
 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.
  (https://bugs.launchpad.net/bzr/+bug/320119)
 A. make (-e --exclude-lower) the default. - ''optional/controversial''
Line 44: Line 30:
''feedback welcome''
Line 45: 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 47: 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 and B in one go, because B just checks that we don't break anything while fixing A. (https://code.launchpad.net/~amanica/bzr/log_returns_too_much)
 1. do we want C ?
 1. implement D. , maybe that is sufficient if it is well documented
 1. if we really want E. do it

Summary

Change log CLI behaviour to not show unsolicited parents and to be consist with other commands.

Rationale

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):

  1. "bzr log -r 10" should show just the revision 10 (https://bugs.launchpad.net/bzr/+bug/325618)

  2. "bzr log -n0 -r 10" ought to show the merged revisions
  3. "bzr log -c 10" ought to show the merged revisions i.e. imply -n0 or default to -n0 in stead of -n1 (do we want this?)

  4. "bzr log (-e --exclude-lower) -r 9..11" should not show the revision for 9, but show

  5. make (-e --exclude-lower) the default. - optional/controversial

Comments

feedback welcome

Implementation plan

We would probably need to fix them in phases.

  1. I think we should fix A and B in one go, because B just checks that we don't break anything while fixing A. (https://code.launchpad.net/~amanica/bzr/log_returns_too_much)

  2. do we want C ?
  3. implement D. , maybe that is sufficient if it is well documented
  4. if we really want E. do it