diff --git a/hgext/convert/__init__.py b/hgext/convert/__init__.py --- a/hgext/convert/__init__.py +++ b/hgext/convert/__init__.py @@ -32,28 +32,28 @@ def convert(ui, src, dest=None, revmapfi - Mercurial [hg] - Subversion [svn] (history on branches is not preserved) - 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 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 isn't given, it will be put in a default location - (/.hg/shamap by default). The is a simple text - file that maps each source commit ID to the destination ID for - that revision, like so: + (/.hg/shamap by default). The is a simple text file + that maps each source commit ID to the destination ID for that + revision, like so: - 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. + 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: + 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 @@ -70,20 +70,20 @@ def convert(ui, src, dest=None, revmapfi directory, to be included in the destination repository, and the exclusion of all other files and dirs not explicitely included. 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. + 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. The splicemap is a file that allows insertion of synthetic history, letting you specify the parents of a revision. This is useful if you want to e.g. give a Subversion merge two parents, or graft two disconnected series of history together. Each entry contains a key, followed by a space, followed by one or two - comma-separated values. The key is the revision ID in the - source revision control system whose parents should be modified - (same format as a key in .hg/shamap). The values are the revision - IDs (in either the source or destination revision control system) - that should be used as the new parents for that node. + comma-separated values. The key is the revision ID in the source + revision control system whose parents should be modified (same + format as a key in .hg/shamap). The values are the revision IDs + (in either the source or destination revision control system) that + should be used as the new parents for that node. Mercurial Source ----------------- @@ -93,7 +93,8 @@ def convert(ui, src, dest=None, revmapfi repositories with missing revlogs, by converting from and to Mercurial. --config convert.hg.saverev=False (boolean) - store original revision ID in changeset (forces target IDs to change) + store original revision ID in changeset (forces target IDs to + change) --config convert.hg.startrev=0 (hg revision identifier) convert start revision and its descendants @@ -102,11 +103,11 @@ def convert(ui, src, dest=None, revmapfi CVS source will use a sandbox (i.e. a checked-out copy) from CVS to indicate the starting point of what will be converted. Direct - access to the repository files is not needed, unless of course - the repository is :local:. The conversion uses the top level - directory in the sandbox to find the CVS repository, and then uses - CVS rlog commands to find files to convert. This means that unless - a filemap is given, all files under the starting directory will be + access to the repository files is not needed, unless of course the + repository is :local:. The conversion uses the top level directory + in the sandbox to find the CVS repository, and then uses CVS rlog + commands to find files to convert. This means that unless a + filemap is given, all files under the starting directory will be converted, and that any directory reorganisation in the CVS sandbox is ignored. @@ -123,33 +124,36 @@ def convert(ui, src, dest=None, revmapfi --config convert.cvsps=builtin and has a few more configurable options: --config convert.cvsps.fuzz=60 (integer) - Specify the maximum time (in seconds) that is allowed between - commits with identical user and log message in a single - changeset. When very large files were checked in as part - of a changeset then the default may not be long enough. + Specify the maximum time (in seconds) that is allowed + between commits with identical user and log message in a + single changeset. When very large files were checked in as + part of a changeset then the default may not be long + enough. --config convert.cvsps.mergeto='{{mergetobranch ([-\w]+)}}' - Specify a regular expression to which commit log messages are - matched. If a match occurs, then the conversion process will - insert a dummy revision merging the branch on which this log - message occurs to the branch indicated in the regex. + Specify a regular expression to which commit log messages + are matched. If a match occurs, then the conversion + process will insert a dummy revision merging the branch on + which this log message occurs to the branch indicated in + the regex. --config convert.cvsps.mergefrom='{{mergefrombranch ([-\w]+)}}' - Specify a regular expression to which commit log messages are - matched. If a match occurs, then the conversion process will - add the most recent revision on the branch indicated in the - regex as the second parent of the changeset. + Specify a regular expression to which commit log messages + are matched. If a match occurs, then the conversion + process will add the most recent revision on the branch + indicated in the regex as the second parent of the + changeset. - The hgext/convert/cvsps wrapper script allows the builtin changeset - merging code to be run without doing a conversion. Its parameters and - output are similar to that of cvsps 2.1. + The hgext/convert/cvsps wrapper script allows the builtin + changeset merging code to be run without doing a conversion. Its + parameters and output are similar to that of cvsps 2.1. Subversion Source ----------------- Subversion source detects classical trunk/branches/tags layouts. By default, the supplied "svn://repo/path/" source URL is - converted as a single branch. If "svn://repo/path/trunk" exists - it replaces the default branch. If "svn://repo/path/branches" - exists, its subdirectories are listed as possible branches. If + converted as a single branch. If "svn://repo/path/trunk" exists it + replaces the default branch. If "svn://repo/path/branches" exists, + its subdirectories are listed as possible branches. If "svn://repo/path/tags" exists, it is looked for tags referencing converted branches. Default "trunk", "branches" and "tags" values can be overriden with following options. Set them to paths @@ -173,14 +177,15 @@ def convert(ui, src, dest=None, revmapfi Perforce Source --------------- - The Perforce (P4) importer can be given a p4 depot path or a client - specification as source. It will convert all files in the source to - a flat Mercurial repository, ignoring labels, branches and integrations. - Note that when a depot path is given you then usually should specify a - target directory, because otherwise the target may be named ...-hg. + The Perforce (P4) importer can be given a p4 depot path or a + client specification as source. It will convert all files in the + source to a flat Mercurial repository, ignoring labels, branches + and integrations. Note that when a depot path is given you then + usually should specify a target directory, because otherwise the + target may be named ...-hg. - It is possible to limit the amount of source history to be converted - by specifying an initial Perforce revision. + It is possible to limit the amount of source history to be + converted by specifying an initial Perforce revision. --config convert.p4.startrev=0 (perforce changelist number) specify initial Perforce revision. @@ -205,12 +210,14 @@ def debugsvnlog(ui, **opts): def debugcvsps(ui, *args, **opts): '''create changeset information from CVS - This command is intended as a debugging tool for the CVS to Mercurial - converter, and can be used as a direct replacement for cvsps. + This command is intended as a debugging tool for the CVS to + Mercurial converter, and can be used as a direct replacement for + cvsps. - Hg debugcvsps reads the CVS rlog for current directory (or any named - directory) in the CVS repository, and converts the log to a series of - changesets based on matching commit log entries and dates.''' + Hg debugcvsps reads the CVS rlog for current directory (or any + named directory) in the CVS repository, and converts the log to a + series of changesets based on matching commit log entries and + dates.''' return cvsps.debugcvsps(ui, *args, **opts) commands.norepo += " convert debugsvnlog debugcvsps" diff --git a/tests/test-convert.out b/tests/test-convert.out --- a/tests/test-convert.out +++ b/tests/test-convert.out @@ -17,28 +17,28 @@ convert a foreign SCM repository to a Me - Mercurial [hg] - Subversion [svn] (history on branches is not preserved) - 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 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 isn't given, it will be put in a default location - (/.hg/shamap by default). The is a simple text - file that maps each source commit ID to the destination ID for - that revision, like so: + (/.hg/shamap by default). The is a simple text file + that maps each source commit ID to the destination ID for that + revision, like so: - 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. + 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: + 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 @@ -55,20 +55,20 @@ convert a foreign SCM repository to a Me directory, to be included in the destination repository, and the exclusion of all other files and dirs not explicitely included. 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. + 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. The splicemap is a file that allows insertion of synthetic history, letting you specify the parents of a revision. This is useful if you want to e.g. give a Subversion merge two parents, or graft two disconnected series of history together. Each entry contains a key, followed by a space, followed by one or two - comma-separated values. The key is the revision ID in the - source revision control system whose parents should be modified - (same format as a key in .hg/shamap). The values are the revision - IDs (in either the source or destination revision control system) - that should be used as the new parents for that node. + comma-separated values. The key is the revision ID in the source + revision control system whose parents should be modified (same + format as a key in .hg/shamap). The values are the revision IDs + (in either the source or destination revision control system) that + should be used as the new parents for that node. Mercurial Source ----------------- @@ -78,7 +78,8 @@ convert a foreign SCM repository to a Me repositories with missing revlogs, by converting from and to Mercurial. --config convert.hg.saverev=False (boolean) - store original revision ID in changeset (forces target IDs to change) + store original revision ID in changeset (forces target IDs to + change) --config convert.hg.startrev=0 (hg revision identifier) convert start revision and its descendants @@ -87,11 +88,11 @@ convert a foreign SCM repository to a Me CVS source will use a sandbox (i.e. a checked-out copy) from CVS to indicate the starting point of what will be converted. Direct - access to the repository files is not needed, unless of course - the repository is :local:. The conversion uses the top level - directory in the sandbox to find the CVS repository, and then uses - CVS rlog commands to find files to convert. This means that unless - a filemap is given, all files under the starting directory will be + access to the repository files is not needed, unless of course the + repository is :local:. The conversion uses the top level directory + in the sandbox to find the CVS repository, and then uses CVS rlog + commands to find files to convert. This means that unless a + filemap is given, all files under the starting directory will be converted, and that any directory reorganisation in the CVS sandbox is ignored. @@ -108,33 +109,36 @@ convert a foreign SCM repository to a Me --config convert.cvsps=builtin and has a few more configurable options: --config convert.cvsps.fuzz=60 (integer) - Specify the maximum time (in seconds) that is allowed between - commits with identical user and log message in a single - changeset. When very large files were checked in as part - of a changeset then the default may not be long enough. + Specify the maximum time (in seconds) that is allowed + between commits with identical user and log message in a + single changeset. When very large files were checked in as + part of a changeset then the default may not be long + enough. --config convert.cvsps.mergeto='{{mergetobranch ([-\w]+)}}' - Specify a regular expression to which commit log messages are - matched. If a match occurs, then the conversion process will - insert a dummy revision merging the branch on which this log - message occurs to the branch indicated in the regex. + Specify a regular expression to which commit log messages + are matched. If a match occurs, then the conversion + process will insert a dummy revision merging the branch on + which this log message occurs to the branch indicated in + the regex. --config convert.cvsps.mergefrom='{{mergefrombranch ([-\w]+)}}' - Specify a regular expression to which commit log messages are - matched. If a match occurs, then the conversion process will - add the most recent revision on the branch indicated in the - regex as the second parent of the changeset. + Specify a regular expression to which commit log messages + are matched. If a match occurs, then the conversion + process will add the most recent revision on the branch + indicated in the regex as the second parent of the + changeset. - The hgext/convert/cvsps wrapper script allows the builtin changeset - merging code to be run without doing a conversion. Its parameters and - output are similar to that of cvsps 2.1. + The hgext/convert/cvsps wrapper script allows the builtin + changeset merging code to be run without doing a conversion. Its + parameters and output are similar to that of cvsps 2.1. Subversion Source ----------------- Subversion source detects classical trunk/branches/tags layouts. By default, the supplied "svn://repo/path/" source URL is - converted as a single branch. If "svn://repo/path/trunk" exists - it replaces the default branch. If "svn://repo/path/branches" - exists, its subdirectories are listed as possible branches. If + converted as a single branch. If "svn://repo/path/trunk" exists it + replaces the default branch. If "svn://repo/path/branches" exists, + its subdirectories are listed as possible branches. If "svn://repo/path/tags" exists, it is looked for tags referencing converted branches. Default "trunk", "branches" and "tags" values can be overriden with following options. Set them to paths @@ -158,14 +162,15 @@ convert a foreign SCM repository to a Me Perforce Source --------------- - The Perforce (P4) importer can be given a p4 depot path or a client - specification as source. It will convert all files in the source to - a flat Mercurial repository, ignoring labels, branches and integrations. - Note that when a depot path is given you then usually should specify a - target directory, because otherwise the target may be named ...-hg. + The Perforce (P4) importer can be given a p4 depot path or a + client specification as source. It will convert all files in the + source to a flat Mercurial repository, ignoring labels, branches + and integrations. Note that when a depot path is given you then + usually should specify a target directory, because otherwise the + target may be named ...-hg. - It is possible to limit the amount of source history to be converted - by specifying an initial Perforce revision. + It is possible to limit the amount of source history to be + converted by specifying an initial Perforce revision. --config convert.p4.startrev=0 (perforce changelist number) specify initial Perforce revision.