Previous: , Up: Command Reference   [Contents][Index]


4.12 VCS

mtn cvs_import pathname

This command imports all the file versions in each RCS file found in the tree of files starting at pathname, then reconstructs the tree-wide history of logical changes by comparing RCS time stamps and change log entries. For each logical tree-wide change, monotone synthesizes a manifest and revision, and commits them (along with all associated file deltas) to your database. It also copies all change log entries, author identifiers, and date stamps to manifest certificates.

In normal use, pathname will be a CVS module, though it is possible to point it at a directory within a module as well. Whatever directory you point it at will become the root of monotone’s version of the tree.

mtn git_export [--authors-file=authors-file] [--branches-file=branches-file]
[--import-marks=marks-file] [--export-marks=marks-file]
[--log-revids] [--log-certs] [--use-one-changelog]
[--refs=type]

This command exports all revisions from the current monotone database to stdout in a format that can be piped directly to git fast-import.

The --authors-file option may be used to map monotone author and committer names to different values in a manner similar to that documented in git-svn(1). Mappings are specified in the file as:

loginname = Joe User <user@example.com>

The list of authors that might need to be mapped can be extracted from a monotone database with the following sql query:

$ mtn db execute 'select distinct value from revision_certs where name = "author"'

The list of committers that might need to be mapped can be extracted from a monotone database with the following sql query:

$ mtn db execute 'select distinct public_keys.name
                  from public_keys
                  left join revision_certs on revision_certs.keypair_id = public_keys.id
                  where revision_certs.name = "author"'

The --branches-file option may be used to map monotone branch names to different values. This may be required as monotone allows branch names that are not valid according to git. Branch mappings are specified in the branches-file as:

monotone-branch-name = git-branch-name

Revisions with no author cert will use "Unknown <unknown>" for both the author and the committer. These can be mapped to other values using the authors-file option.

The list of branches that might need to be mapped can be extracted from a monotone database with using the ls branches command:

$ mtn ls branches --ignore-suspend-certs

The --import-marks and --export-marks options are similar to those documented in git-fast-export(1) and git-fast-import(1). These may be used for incremental exports and may also be useful for repository verification. The marks-file is read on startup if --import-marks is specified and all marked revs are excluded from the export. The marks-file is written on completion if --export-marks is specified and will contain marks for all revs that were exported in addition to any marks that were read on startup. It is safe to use the same file for both --import-marks and --export-marks but different files may also be used.

The original monotone revision ids may be included in the exported git commit messages using the --log-revids option. These will appear as:

Monotone-Parent: ...
Monotone-Revision: ...

in the git commit messages and may be useful for repository verification. Merge revisions with two parents will include two Monotone-Parent lines.

The original monotone values for author, date, branch and tag certificates may be included in the exported git commit messages using the --log-certs option. These will appear as:

Monotone-Author: ...
Monotone-Date: ...
Monotone-Branch: ...
Monotone-Tag: ...

in the git commit messages and may be useful for repository verification or maintaining information that is otherwise not maintained by git. In particular monotone may have several values for each of these certs and git only represents a single author and date value.

By default, the values of all changelog and comment certs on a revision are concatenated to form the git commit message for that revision. The --use-one-changelog option will prevent this behaviour and use the value from the first changelog cert encountered. WARNING: this will explicitly lose information in the exported data. Changelog certs have no implicit ordering, one will be selected arbitrarily to be used as the git commit message and all others will be excluded from the exported data. Additionally, all comment certs will be excluded from the exported data.

References to the original monotone branches and tags are exported as refs/tags/<tag-name> and refs/heads/<branch-name>. In addition, references to the original monotone revision ids, the root revisions and the leaf revisions may be exported using --refs=revs, --refs=roots and --refs=leaves respectively. These references are exported as refs/mtn/revs/<id>, refs/mtn/roots/<id> and refs/mtn/leaves/<id> and may be useful for repository verification. These additional references should probably not be maintained after the exported repository has been verified as they cause considerable clutter in tools like gitk.


Previous: , Up: Command Reference   [Contents][Index]

Quick Links:     www.monotone.ca    -     Downloads    -     Documentation    -     Wiki    -     Code Forge    -     Build Status