On Fri, Aug 2, 2019 at 10:41 AM Maxim Kuvyrkov
<maxim.kuvyr...@linaro.org> wrote:
>
> > On Aug 1, 2019, at 11:43 PM, Jason Merrill <ja...@redhat.com> wrote:
> >
> > 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.
>
> Patch tracking software breaks on emails like 
> <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4> , where 
> 38bc75d-0d04-0410-961f-82ee72b054a4 is not a reasonable domain name.
>
> For completeness, I'll generate and upload a repo based on current mirror 
> with all branches and tags converted.
>
> In the end, I don't care much to which version of the repo we switch, as long 
> as we switch.

I think that if we have something clearly better than the current
mirror we should use that.  rebasing might
be a hassle but git should make that reasonably easy - proper
instructions how to do that are of course
welcome (just add a new remote, adjust all local branches remote and
then rebase?).

Richard.

> --
> Maxim Kuvyrkov
> www.linaro.org
>
>
>
>

Reply via email to