sparse: move config parsing into core
This patch marks the beginning of moving code from the sparse
extension into core. The goal is to move as much of the
functionality as possible into core, where it will be an
experimental feature. The extension will likely continue to
exist to enable the feature and provide UI elements.
As part of the move, the repo method was converted to a module
function. It doesn't need to exist on repos.
An error message was also updated to reflect that an error isn't
necessarily from the .hg/sparse file. The API should be updated
later to pass in a filename so the error can be more descriptive.
Copyright of the added file was copied from the sparse extension.
#require bzr bzr114
$ . "$TESTDIR/bzr-definitions"
The file/directory replacement can only be reproduced on
bzr >= 1.4. Merge it back in test-convert-bzr-directories once
this version becomes mainstream.
replace file with dir
$ mkdir test-replace-file-with-dir
$ cd test-replace-file-with-dir
$ bzr init -q source
$ cd source
$ echo d > d
$ bzr add -q d
$ bzr commit -q -m 'add d file'
$ rm d
$ mkdir d
$ bzr add -q d
$ bzr commit -q -m 'replace with d dir'
$ echo a > d/a
$ bzr add -q d/a
$ bzr commit -q -m 'add d/a'
$ cd ..
$ hg convert source source-hg
initializing destination source-hg repository
scanning source...
sorting...
converting...
2 add d file
1 replace with d dir
0 add d/a
$ manifest source-hg tip
% manifest of tip
644 d/a
$ cd source-hg
$ hg update
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd ../..