On December 6, 2019 6:21:11 PM GMT+01:00, "Eric S. Raymond" <e...@thyrsus.com> wrote: >Maxim Kuvyrkov <maxim.kuvyr...@linaro.org>: >> The general conversion workflow is (this really is a poor-man's >translator of one DAG into another): >> >> 1. Parse SVN history of entire SVN root (svn log -qv >file:///svnrepo/) and build a list of branch points. >> 2. From the branch points build a DAG of "basic blocks" of revision >history. Each basic block is a consecutive set of commits where only >the last commit can be a branchpoint. >> 3. Walk the DAG and ... >> 4. ... use git-svn to individually convert these basic blocks. >> 4a. Optionally, post-process git result of basic block conversion >using "git filter-branch" and similar tools. >> >> Git-svn is used in a limited role, and it does its job very well in >this role. > >Your approach sounds pretty reasonable except for that part. I don't >trust git-svn at *all* - I've collided with it too often during >past conversions. It has a nasty habit of leaving damage in places >that are difficult to audit. > >I agree that you've made a best possible effort to avod being bitten >by using it only for basic blocks. That was clever and the right thing >to do, and I *still* don't trust it.
To me, looking from the outside, the talks about reposurgeon doing damage and a rewrite (in the last minute) would fix it doesn't make a trustworthy appearance either ;) I guess the basic block usage could be emulated by svn checkouts, svn log and manual diffing and installing revs on the git. And I can't really imagine how that cannot work with git-svn given it is used in the wild. Richard.