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

Proposed by Aaron Bentley on 2009-05-27
Status: Rejected
Rejected by: Aaron Bentley on 2009-05-28
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 2009-05-27 Approve on 2009-05-27
Review via email: mp+6817@code.launchpad.net
To post a comment you must log in.
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-----

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 on 2009-05-27
4382. By Aaron Bentley on 2009-05-27

Updated doc

4383. By Aaron Bentley on 2009-05-27

Add other questions.

Unmerged revisions

4383. By Aaron Bentley on 2009-05-27

Add other questions.

4382. By Aaron Bentley on 2009-05-27

Updated doc

4381. By Aaron Bentley on 2009-05-27

First pass at a nested trees doc.

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.