/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/uncommit.txt

  • Committer: John Arbash Meinel
  • Date: 2009-10-17 04:43:14 UTC
  • mto: This revision was merged to the branch mainline in revision 4756.
  • Revision ID: john@arbash-meinel.com-20091017044314-nlvrrqnz0f2wzcp4
change the GroupcompressBlock code a bit.
If the first decompress request is big enough, just decompress everything.
And when we do that, let go of the decompressobj.

After digging through the zlib code, it looks like 1 zlib stream object
contains a 5kB internal state, and another 4*64kB buffers. (about 260kB
of total state.)
That turns out to be quite a lot if you think about it.


In the case of branching a copy of 'bzr.dev' locally, this turned out
to be 383MB w/ bzr.dev and 345MB w/ only this patch. (So ~11% of peak).

Also, this was 'unreferenced' memory, because it is hidden in the
zlib internal state in working buffers. So it wasn't memory that Meliae
could find. \o/.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Uncommit Performance Notes
 
2
==========================
 
3
 
 
4
Specification of uncommit
 
5
-------------------------
 
6
 
 
7
``uncommit`` removes revisions from the head of a branch.  (By default, only
 
8
the very latest revision is removed, but optionally more can be taken.)
 
9
Uncommit does not affect the repository (garbage collection is a separate
 
10
step and not done by default).  The working tree is not logically
 
11
modified (revert is a different operation), except as described below
 
12
about merges.
 
13
 
 
14
Uncommit can be performed on either a branch or a working tree (and
 
15
implicitly its branch.)
 
16
 
 
17
If the uncommitted revisions includes one or more merges, after the
 
18
uncommit those revisions are in the working tree's list of pending merges,
 
19
because their tree changes are still present in the tree.
 
20
 
 
21
For a bound branch, uncommit fails unless the local branch is up to date.