On Sun, 23 Aug 2015, Eric S. Raymond wrote: > Whoever you designate to lead the conversion *should read this
Jason Merrill <ja...@redhat.com> is leading the conversion. > Hwew's a particular warning: though you may be using git-svn for live > gatewaying, it is *not* the way to go for full-history conversions, as > it is likely to screw up the history in ways that are not apparent > from merely looking at the head revision. The dump analyzer in my > reposurgeon tool does a substantially better job. Hence my suggestion in <https://gcc.gnu.org/ml/gcc/2015-08/msg00150.html> of reconverting and then combining with the existing git-svn history via renaming all the refs in the existing git repository, so as to preserve the validity of commit references and git-only branches there while having the main copy of the history properly converted. There are definitely oddities from git-svn not knowing exactly which subdirectories of /branches are themselves branches, and which are containers for multiple branches (something that will need configuring correctly for the proper conversion - I think it should be possible to tell in a fairly automated way, e.g. if the directory contains ChangeLog it's almost certainly a branch and if it doesn't it's probably a container for branches but should be checked manually to make sure). I don't know what either git-svn or reposurgeon make of the times when trunk was accidentally deleted and then recreated as an SVN copy of a pre-deletion revision (what we want to avoid for the proper conversion is those looking like deletion and recreation of all files in trunk - commits that don't change the tree at all, or complete omission of the deletion and subsequent recreation, would be fine). > pretty bulletproof. Problems are most likely if the SVN repo was > previously converted from CVS, a process which in the past tended It was converted from CVS. More precisely, from two CVS repositories: the gcc2 repository (1988-1999, starting as a collection of RCS files and with not many files version controlled before 1992 and documentation not version controlled for years after then), and what started as the EGCS repository (1997-2005). The two repositories were combined by a custom version of CVS (work done by Ian Taylor) to produce the input to cvs2svn. gcc2 changes between the start of EGCS in 1997 and 1999 when development in the gcc2 project ended were moved to /branches/premerge-fsf-branch as part of the combination process (pre-EGCS gcc2 changes are on trunk). A few branches in the repository that started as the EGCS repository, the history of which branches was particularly messed up by rebasing (branch tags having been moved from one revision to another, leaving behind unnamed branches), were deliberately omitted from the conversion to SVN to avoid it generating large amounts of very messy and not particularly useful history in the resulting repository. -- Joseph S. Myers jos...@codesourcery.com