Differences between revisions 4 and 5
Revision 4 as of 2009-05-18 16:23:07
Size: 1380
Comment:
Revision 5 as of 2009-05-19 19:31:00
Size: 1380
Editor: localhost
Comment: converted to 1.6 markup
No differences found!

(See RepositoryConversion for existing conversion tools)

This describes the basic steps needed to do history conversion from arbitrary formats, as implemented in Mercurial's convert-repo script:

  • Group changes into changesets
    • This step is difficult for systems that don't have atomic commits. See cvsps for an example of how this can be done with CVS.
  • Associate a unique identifier with each changeset
  • Generate the revision graph by finding the parent changesets of each changeset
  • Generate a topologically sorted list of changesets such that parents precede their children
  • For each changeset:
    • Extract or generate a changeset description, user name, and date
    • Extract a copy of each file changed in the changeset
    • Use the Mercurial rawcommit interface to explicitly commit the changeset
    • Save a correspondence map between source changeset IDs and Mercurial changeset IDs so that the process can be
      • interrupted and resumed
  • Convert tags
    • Generate a list of tags and their corresponding source changeset IDs
    • Use the correspondence map to convert tags to Mercurial IDs
    • Write a .hgtags file
    • Commit .hgtags file


Some conversions can be very difficult. It would be worth checking out ProblematicConversions to see how one such conversion was handled.


CategoryConversion

GenericConversion (last edited 2009-05-19 19:31:00 by localhost)