This page is no longer relevant but is kept for historical purposes.
This page is primarily intended for Mercurial's developers.
Problem: it would be nice to be able to drop history before a certain point and remove various branches or commits to save space and delete problematic material.
It is also important that we remember what we've deleted so we can avoid re-pulling it from people who've earlier pulled it from us.
Proposal: we can delete pieces of history by removing the deltas and recording a size of -1 in the index. This can be accomplished by a "punch" tool or command. Then we teach various things to behave or complain appropriately when they encounter punched versions.
Another related feature request: Some projects have very big repositories which take very long to download. In order to make this faster, it should be possible to specify the desired history range with "hg clone", so instead of, say 700MB, only 100MB of the history get transferred. If the more parts of the history are required for a certain command the data should automatically be retrieved from the server. See OverlayRepository or ShallowClone for other ways to implement this feature.
To be done:
- partial history clone/pull with automatic pulling of additional data on-demand
- teach revlog about punched revisions and fixing up deltas
- create punch command
- make sure pull works
- make sure checkout complains appropriately
- make sure annotate does something sensible
- make sure verify doesn't get too upset
Not to be confused with PartialClone, which trims the directory tree, not the history tree.
Patch for this: http://www.selenic.com/pipermail/mercurial/2006-June/008878.html
Pullable repository: http://oss.oracle.com/mercurial/mason/punch