PartialClone feature -- how hard would it be to do?
Matt Mackall
mpm at selenic.com
Fri Dec 14 19:38:32 UTC 2007
On Fri, Dec 14, 2007 at 10:40:08AM -0800, Chris Quenelle wrote:
>
> There is a wiki page here:
> http://www.selenic.com/mercurial/wiki/index.cgi/PartialClone
> and an issue record here:
> http://www.selenic.com/mercurial/bts/issue105
>
> that describe a proposed feature "Partial Clone" which would allow you
> to create a clone with only some subtrees of the your sources. Not
> just in your working directory, but also in the history DB itself.
>
> I've always assumed this would difficult because of the way the revision
> checksums are created and used globally. But I can't find a more in-depth
> discussion of how hard this would be. Was this addressed in a previous
> email someplace? Maybe I could copy/paste that discussion onto the wiki
> page?
>
> How hard would this be to implement?
On a scale of 1 to 10, I'd rate it about a 7.
The simplest approach is probably "allow cloning of subdirectories".
Here's how that would work:
- add a file called "subdir" to .hg/store containing the
subdirectory we're cloning
- do a clone as usual, but don't write out revlogs that aren't in subdir
- adjust the functions dealing with paths (localrepo.wjoin, etc.)
appropriately
- teach various things (checkout, status, etc.) to skip files outside
the subdirectory
- teach merge not allow merging when files outside the subdirectory
conflict
Merging is the tricky part, and I expect there's a gotcha or two
buried in there.
--
Mathematics is the supreme nostalgia of our time.
More information about the Mercurial
mailing list