/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to doc/developers/gc.txt

  • Committer: Vincent Ladeuil
  • Date: 2007-09-18 20:04:21 UTC
  • mto: (2885.1.1 140432)
  • mto: This revision was merged to the branch mainline in revision 2886.
  • Revision ID: v.ladeuil+lp@free.fr-20070918200421-9e5bkyohebe2h0eg
Add tests for commit, reuse master branch transport.

* bzrlib/workingtree.py:
(WorkingTree.pull): Add a possible_transports parameter, forward
it to branch.pull.

* bzrlib/branch.py:
(Branch.pull, BzrBranch.pull, BzrBranch5.pull): Add a
possible_transports parameter.
(BzrBranch5.pull): Make master branch transport added to
possible_transports

* bzrlib/tests/commands/test_commit.py: 
New file testing against multiple connections during commit.

* bzrlib/builtins.py:
(cmd_pull.run): Allows master branch transports to be reused.
(cmd_commit): 'fixes' is a ListOption, its default value should
be [].


* bzrlib/tests/commands/test_pull.py: 
Fix import statements.
(TestPull.test_pull_with_bound_branch): New test.

* bzrlib/tests/commands/__init__.py:
(test_suite): Add test_commit.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Garbage Collection
 
2
==================
 
3
 
 
4
Garbage collection is used to remove data from a repository that is no longer referenced.
 
5
 
 
6
Generally this involves locking the repository and scanning all its branches
 
7
then generating a new repository with less data.
 
8
 
 
9
Least work we can hope to perform
 
10
---------------------------------
 
11
 
 
12
* Read all branches to get initial references - tips + tags.
 
13
* Read through the revision graph to find unreferenced revisions. A cheap HEADS
 
14
  list might help here by allowing comparison of the initial references to the
 
15
  HEADS - any unreferenced head is garbage.
 
16
* Walk out via inventory deltas to get the full set of texts and signatures to preserve.
 
17
* Copy to a new repository
 
18
* Bait and switch back to the original
 
19
* Remove the old repository.
 
20
 
 
21
A possibility to reduce this would be to have a set of grouped 'known garbage
 
22
free' data - 'ancient history' which can be preserved in total should its HEADS
 
23
be fully referenced - and where the HEADS list is deliberate cheap (e.g. at the
 
24
top of some index).
 
25
 
 
26
possibly - null data in place without saving size.