On Mon, Jul 22, 2019 at 5:05 AM Maxim Kuvyrkov <maxim.kuvyr...@linaro.org> wrote: > > > On Jul 16, 2019, at 5:14 PM, Maxim Kuvyrkov <maxim.kuvyr...@linaro.org> > > wrote: > > > >> On Jul 16, 2019, at 3:34 PM, Jason Merrill <ja...@redhat.com> wrote: > >> > >> On Tue, Jul 16, 2019 at 12:18 PM Maxim Kuvyrkov > >> <maxim.kuvyr...@linaro.org> wrote: > >>> > >>> Hi Everyone, > >>> > >>> I've been swamped with other projects for most of June, which gave me > >>> time to digest all the feedback I've got on GCC's conversion from SVN to > >>> Git. > >>> > >>> The scripts have heavily evolved from the initial version posted here. > >>> They have become fairly generic in that they have no implied knowledge > >>> about GCC's repo structure. Due to this I no longer plan to merge them > >>> into GCC tree, but rather publish as a separate project on github. For > >>> now, you can track the current [hairy] version at > >>> https://review.linaro.org/c/toolchain/gcc/+/31416 . > >>> > >>> The initial version of scripts used heuristics to construct branch tree, > >>> which turned out to be error-prone. The current version parse entire > >>> history of SVN repo to detect all trees that start at /trunk@1. > >>> Therefore all branches in the converted repo converge to the same parent > >>> at the beginning of their histories. > >>> > >>> As far as GCC conversion goes, below is what I plan to do and what not to > >>> do. This is based on comments from everyone in this thread: > >>> > >>> 1. Construct GCC's git repo from SVN using same settings as current git > >>> mirror. > >>> 2. Compare the resulting git repo with current GCC mirror -- they should > >>> match on the commit hash level for trunk, branches/gcc-*-branch, and > >>> other "normal" branches. > >>> 3. Investigate any differences between converted GCC repo and current GCC > >>> mirror. These can be due to bugs in git-svn or other misconfigurations. > >>> 4. Import git-only branches from current GCC mirror. > >>> 5. Publish this "raw" repo for community to sanity-check its contents. > >> > >> Why not start from the current mirror? Perhaps a mirror of the mirror? > > > > To check that git-svn is self-consistent and generates same commits now as > > it was several years ago when you setup the current mirror. > > Unfortunately, current mirror does not and could not account for rewrites of > SVN commit log messages. For trunk the histories of diverge in 2008 due to > commit message change of r138154. This is not a single occurrence; I've > compared histories only of trunk and gcc-6-branch, and both had commit > message change (for gcc-6-branch see r259978). > > It's up to the community is to weigh pros and cons of re-using existing GCC > mirror as conversion base vs regenerating history from scratch: > > Pros of using GCC mirror: > + No need to rebase public git-only branches > + No need to rebase private branches > + No need to rebase current clones, checkouts, work-in-progress trees > > Cons of using GCC mirror: > - Poor author / committer IDs (this breaks patch statistics software) > - Several commit messages will not be the current "fixed" version > > Thoughts?
I'm still inclined to stick with the mirror. I would expect patch statistics software to be able to be taught about multiple addresses for the same person. Jason