A tool for editing version-control repository history.

reposurgeon enables risky operations that version-control systems don't want to let you do, such as editing past comments and metadata and removing commits. It works with any version control system that can export and import git fast-import streams, including git, hg, fossil, bzr, CVS, RCS, and src. It can also read Subversion dump files directly and can thus be used to script production of very high-quality conversions from Subversion to any supported DVCS.


COPYINGproject license
TODOto-do file
reposurgeon-3.22.tar.gzgzipped source tarball
reposurgeon-3.22.md5source tarball MD5 checksum
NEWSproject news
READMEroadmap file
reporting-bugs.htmlHow to report bugs
repodiffer.htmlHTML rendering of repodiffer.1
reposurgeon.htmlHTML rendering of reposurgeon.1
repotool.htmlHTML rendering of repotool.1
features.htmlHow reposurgeon wins
conversion.mkGeneric makefile for DVCS conversions using reposurgeon

The project repository is at

Project statistics are available at OpenHub.

There is a project IRC channel.

If you appreciate this code (and especially if you make money by using it) please leave me a tip on Gratipay.

Recent Changes

     The path rename --relax option has been removed as too confusing.
     In selection expressions, =Z is the set of all commits with no fileops.
     repopuller has been replaced by the more general repotool.
     For consistency, the 'changed' modifier of mailbox_in is now '--changed'.
     New '--create' option of mailbox_in to create new tags and commits.
     The command prompt can be queried or set with the new command 'prompt'.
     Change in terminology: fossil IDs and maps are now legacy IDs and maps.
     A front end can now set legacy IDs via the "legacy-id" property.
     DMRCN suffix flags on restrict path regexp matches to specified op types.
     The 'remove' command can now be told to look for specific fileop types.