##// END OF EJS Templates
Fix file-changed-to-dir and dir-to-file commits (issue660)....
Fix file-changed-to-dir and dir-to-file commits (issue660). Allow adding to dirstate files that clash with previously existing but marked for removal. Protect from reintroducing clashes by revert. This change doesn't address related issues with update. Current workaround is to do "clean" update by manually removing conflicting files/dirs from working directory.

File last commit:

r5441:71e7c86a default
r5487:7a64931e 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