This is the mail archive of the
mailing list for the GCC project.
Re: [Contrib PATCH] Add scripts to convert GCC repo from SVN to Git
- From: Maxim Kuvyrkov <maxim dot kuvyrkov at linaro dot org>
- To: Maxim Kuvyrkov <maxim dot kuvyrkov at linaro dot org>
- Cc: Jason Merrill <jason at redhat dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>, Paolo Bonzini <pbonzini at redhat dot com>
- Date: Fri, 2 Aug 2019 11:35:38 +0300
- Subject: Re: [Contrib PATCH] Add scripts to convert GCC repo from SVN to Git
- References: <E8A06A10-5BBC-4C2F-9C09-D5413B98D2DC@linaro.org> <8C62F814-2F57-4D1A-B66F-5C5ACFF37D6C@linaro.org> <4E46E435-F95C-46AD-87F0-8220D2BF4CD4@linaro.org> <CADzB+2nTUSH+i-XzAavnL3BfZjXLm53d0e3JgPfKZi5X8ijA9g@mail.gmail.com> <BC4A0163-3A45-4C3D-AA79-5DCEB6BF524A@linaro.org> <7FA7C370-04F5-448E-95D2-426607B99CF4@linaro.org>
> On Jul 22, 2019, at 12:05 PM, Maxim Kuvyrkov <firstname.lastname@example.org> wrote:
>>>> 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
Meanwhile, status update:
1. GitHub blocked https://github.com/maxim-kuvyrkov/gcc/ due to excessive resource usage. I've asked them to unblock and explained why pushes are as big as they are.
2. I'm uploading to https://git.linaro.org/people/maxim.kuvyrkov/gcc.git/ for now.
3. Conversion is now feature-complete. The scripts re-write author and committer fields, as well as create proper git tags.
4. "Raw" version of repository is available under refs/raw/*.
5. refs/raw/* are not expected to change.
6. refs/heads/* and refs/tags/* might change due to author/committer name fixes and improvements.
Please scrutinize the repo and let me know of any artifacts.