##// END OF EJS Templates
convert: refactor sink initialisation, to remove hardcoding of hg...
convert: refactor sink initialisation, to remove hardcoding of hg We also introduce options to explicitly set the source and destination repository types. Improve testing of corner cases a little.

File last commit:

r5441:71e7c86a default
r5441:71e7c86a default
Show More
test-convert.out
93 lines | 2.8 KiB | text/plain | TextLexer
hg convert [OPTION]... SOURCE [DEST [MAPFILE]]
Convert a foreign SCM repository to a Mercurial one.
Accepted source formats:
- CVS
- Darcs
- git
- Subversion
Accepted destination formats:
- Mercurial
If no revision is given, all revisions will be converted. Otherwise,
convert will only import up to the named revision (given in a format
understood by the source).
If no destination directory name is specified, it defaults to the
basename of the source with '-hg' appended. If the destination
repository doesn't exist, it will be created.
If <revmapfile> isn't given, it will be put in a default location
(<dest>/.hg/shamap by default). The <revmapfile> is a simple text
file that maps each source commit ID to the destination ID for
that revision, like so:
<source ID> <destination ID>
If the file doesn't exist, it's automatically created. It's updated
on each commit copied, so convert-repo can be interrupted and can
be run repeatedly to copy new commits.
The [username mapping] file is a simple text file that maps each source
commit author to a destination commit author. It is handy for source SCMs
that use unix logins to identify authors (eg: CVS). One line per author
mapping and the line format is:
srcauthor=whatever string you want
The filemap is a file that allows filtering and remapping of files
and directories. Comment lines start with '#'. Each line can
contain one of the following directives:
include path/to/file
exclude path/to/file
rename from/file to/file
The 'include' directive causes a file, or all files under a
directory, to be included in the destination repository. The
'exclude' directive causes files or directories to be omitted.
The 'rename' directive renames a file or directory. To rename
from a subdirectory into the root of the repository, use '.' as
the path to rename to.
options:
-A --authors username mapping filename
-d --dest-type destination repository type
--filemap remap file names using contents of file
-r --rev import up to target revision REV
-s --source-type source repository type
--datesort try to sort changesets by date
use "hg -v help convert" to show global options
adding a
assuming destination a-hg
initializing destination a-hg repository
scanning source...
sorting...
converting...
4 a
3 b
2 c
1 d
0 e
pulling from ../a
searching for changes
no changes found
% should fail
initializing destination bogusfile repository
abort: cannot create new bundle repository
% should fail
abort: Permission denied: bogusdir
% should succeed
initializing destination bogusdir repository
scanning source...
sorting...
converting...
4 a
3 b
2 c
1 d
0 e