Well-designed software suites should not only be correct, they should be able to demonstrate their own correctness. This is why the new 2.10 release of reposurgeon features a new tool called ‘repodiffer’. And yes, that is what it sounds like – a diff tool that operates not on files but entire repository histories. You get a report on which revisions are identical, which are different, and in the latter case where the differences are, down to which files don’t match. Commits to be paired are matched by committer and commit date. Like reposurgeon, it will work on any version-control system that can emit a fast-import stream.
If you tried running repodiffer on two repositories for different projects the output would be noise and coincidences. What it’s really useful for is comparing two different attempts to lift a repository. Don’t trust reposurgeon? Fine – lift your repo twice, once with git-svn or whatever tool strikes your fancy, then run repodiffer to see the differences. All the differences, not just those in the master tip state. I’ve already found one bug in git-svn this way.
There are few other new goodies, like automatic translation of .cvsignore to .gitignore files (trivial, really – the syntax is upward-compatible). Also, translations from Subversion now emulate Subversion’s default ignore-pattern behavior.
Also note the new web page comparing reposurgeon to other translation tools. To be extended…