Plastic SCM fast-import

Git's fast-export format is becoming a very popular method to exchange historic data between different version control systems. As of version 4.0, Plastic SCM supports the Git fast-export format for both importing and exporting as well as marks files for incremental operations.

Both operations are available on the command line client, through the commands

cm fast-import


cm fast-export

The documentation below can also be retrieved using passing the --help argument to the cm fast-export and cm fast-import commands.


Imports Git fast-export data into a repository.


cm fast-import repository-spec fast-export-file
[--import-marks=marksfile] [--export-marks=marksfile]

  • repository-spec: the repository on which the data will be imported. It is created if it did not previously exist.
  • fast-export-file: the file with the repository data in Git fast-export format.


  • --import-marks: the marks file used for incremental imports. This file has been previously exported by --export-marks. The changesets described in this file will not be imported because they were already in a previous import.
  • --export-marks: the file where the imported changesets will be saved. This file is used in a later fast-import to signal the changesets that have been already imported.
  • --stats: print some statistics about the import process


cm fast-import mynewrepo@atenea:8084

Imports the contents exported in the file into the "mynewrepo" repository on server atenea:8084.

cm fast-import repo@server:8084 --export-marks=repo.marks

Imports the contents exported in the file into the "mynewrepo" repository on server atenea:8084 and creates a marks file to perform incremental imports later.

cm fast-import repo@server:8084 --importmarks=repo.marks --export-marks=repo.marks

Imports the contents of the file. Only the new changesets that were not in the marks file are imported. The same marks file is used to save the list of changests again for the next incremental import.


To export a git repository, use a command like this:

git fast-export --all -M --signed-tags=strip --tag-of-filtered-object=drop > ..\git-fast-export.dat

  • The -M option is important to detect moved items.
  • The specified repository is created in case it didn't exist.
  • Incremental import is supported using a marks file that contains the changesets previously imported (--import-marks and --export-marks files). This means that only the new changesets that were not imported in the previous fast-import will be imported.