Merge lp:~abentley/bzr/nested-specs into lp:~bzr/bzr/trunk-old

Proposed by Aaron Bentley
Status: Rejected
Rejected by: Aaron Bentley
Proposed branch: lp:~abentley/bzr/nested-specs
Merge into: lp:~bzr/bzr/trunk-old
Diff against target: 92 lines
To merge this branch: bzr merge lp:~abentley/bzr/nested-specs
Reviewer Review Type Date Requested Status
Martin Pool Approve
Review via email: mp+6817@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Aaron Bentley (abentley) wrote :

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

Here's a document representing the current thinking on nested trees, as
I understand it.

Aaron
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkodFa0ACgkQ0F+nu1YWqI3oRQCfafCgzgQynMc8WrJWbi5flMxY
OVoAn3qXNPiKNkr9yxH6513naSiM+yin
=IMyQ
-----END PGP SIGNATURE-----

Revision history for this message
Martin Pool (mbp) wrote :

That's good information. But maybe this would be better in devnotes than in trunk while we're still working through it.

review: Approve
lp:~abentley/bzr/nested-specs updated
4382. By Aaron Bentley

Updated doc

4383. By Aaron Bentley

Add other questions.

Unmerged revisions

4383. By Aaron Bentley

Add other questions.

4382. By Aaron Bentley

Updated doc

4381. By Aaron Bentley

First pass at a nested trees doc.

4380. By Canonical.com Patch Queue Manager <email address hidden>

(igc) two simple log dotted revno tests (Marius Kruger)

4379. By Canonical.com Patch Queue Manager <email address hidden>

(tanner) merge 1.15final back to trunk

4378. By Canonical.com Patch Queue Manager <email address hidden>

(igc) faster branch in a shared repo for dev6rr format (Ian
 Clatworthy)

4377. By Canonical.com Patch Queue Manager <email address hidden>

(igc) make branch --no-tree faster (Ian Clatworthy)

4376. By Canonical.com Patch Queue Manager <email address hidden>

(Jelmer) Return BranchPushResult from InterBranch.lossy_push().

4375. By Canonical.com Patch Queue Manager <email address hidden>

(Jelmer) Add child_submit_format option used by 'bzr send'.

4374. By Canonical.com Patch Queue Manager <email address hidden>

(abentley) Enable committing from a PreviewTree.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added file 'doc/developers/nested-trees.txt'
2--- doc/developers/nested-trees.txt 1970-01-01 00:00:00 +0000
3+++ doc/developers/nested-trees.txt 2009-05-28 00:35:25 +0000
4@@ -0,0 +1,88 @@
5+Nested Trees
6+############
7+
8+Principles
9+----------
10+- If you branch from a composite tree, you'll have all the data to construct
11+ any previous version
12+- Never store a location in versioned data.
13+- Implementation of nested trees shall not make operations observably slower
14+ for those not using nested trees.
15+
16+
17+Undecided questions
18+-------------------
19+
20+Shall commands recurse downwards by default?
21+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
22+Pros:
23+ - It is hard to accidentally produce inconsistent trees
24+ - Inconsistent trees are hard for remote users to handle
25+
26+Cons:
27+ - It is hard to accidentally commit too many things at once
28+ - Accidentally committing too many things at once is easy to resolve
29+ - Accidentally committing nuclear launch codes is easier to do
30+ - More risk of exposing users to bugs
31+ - Makes incompleteness more glaring
32+ - Annoys users.
33+
34+Shall commands recurse upwards by default?
35+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
36+
37+Shall subtree branches be addressable?
38+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
39+
40+Shall we model nested trees as a composite tree?
41+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
42+
43+Shall we use root-ids for tree references?
44+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45+
46+Shall we recurse our low-level operations from the beginning?
47+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
48+Pros:
49+ - We may not need extra indices
50+Cons:
51+ - It may take longer to implement and needlessly distort the code
52+
53+Shall we lock recursively?
54+~~~~~~~~~~~~~~~~~~~~~~~~~~
55+Pros:
56+ - Matches existing behaviour by failing earlier
57+Cons:
58+ - Slower
59+ - Fails needlessly
60+
61+How do we handle merge when the subtree hasn't made any changes?
62+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
63+
64+What should uncommit do?
65+~~~~~~~~~~~~~~~~~~~~~~~~
66+
67+Shall we use a CompositeTree object as a shim to make existing commands work?
68+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
69+
70+Some subtrees should have commits and some should not. How?
71+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
72+
73+Decided questions
74+-----------------
75+
76+The branches of subtrees shall share a repository with the containing tree.
77+
78+The branches of subtrees shall be in a special format that shares a single
79+last_revision file that is stored in the containing branch.
80+
81+The subtree branches shall be referenced in the last_revision file by file-id.
82+
83+Subtree branches shall not support individual configuration.
84+
85+Fetch shall automatically fetch the revisions mentioned by tree-references,
86+recursively.
87+
88+The reserved revision-id "head:" shall be used in tree-references to refer to
89+the tip revision of a branch.
90+
91+bzr-svn repositories with externals shall behave as though the multiple
92+repositories were a single Bazaar repository with multiple branches.