[Suggestion] Reposurgeon-like tool for Pijul? (Re: GCC still uses SVN)


So, brought on by this news item from December, about the progress of GCC transitioning from SVN to git via Eric S. Raymond’s SVN-to-git Tool Reposurgeon:


And this rather jesting comment in the discussions about it:

I decided to check if any tools for converting from SVN to pijul already exist, because I had a few–interrelated–ideas:

  • Operating on the GCC repo would probably serve as the strongest benchmark you could find: If pijul works fast & error free when working on the gcc repo, it will almost certainly do so with everything else
  • Converting from SVN to pijul might go faster than converting from SVN to git (Albeit, perhaps not, see this mail from Eric S. Raymond in October on some of the implementation language specific issues he encountered while porting reposurgeon from Python to Go - albeit perhaps that just tells us that one oughn’t implement a similar tool for SVN-to-pijul in either of these languages: https://gcc.gnu.org/ml/gcc/2018-10/msg00001.html)
  • Converting from SVN to pijul might introduce fewer issues than converting from SVN to git (See this older news item: https://www.phoronix.com/scan.php?page=news_item&px=GCC-Git-Complexities and the related GCC mailing list thread from July here: https://gcc.gnu.org/ml/gcc/2018-07/threads.html#00322)
  • Building on whatever Eric S. Raymond’s learned while implementing Reposurgeon not once but TWICE might provide some insights on how to best implement an SVN to pijul converter
  • Perhaps converting from SVN to pijul to git could work faster & with fewer issues than Reposurgeon’s approach.

The old python version of Reposurgeon is here:

The Go version is here:

Of course, one could instead also try and build on Reposurgeon instead. Not sure which approach would seem better.


Also, ESR has some tools besides Reposurgeon that might prove useful for git to pijul conversions:


Here’s some more background detail which I just found:


Sounds really cool! However, I don’t think Pijul is quite ready to operate on a repository the size of GCC, the main blockers at the moment being that:

  1. Pijul hasn’t spent enough time without important bugs in libpijul. It was almost there three months ago, but I decided for a major refactoring in the diff algorithm, and…

  2. We’re still a bit heavy on disk space. I have lots of ideas to reduce this, and little time to implement everything I’d like to do.