> 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.

--
Maxim Kuvyrkov
www.linaro.org




Reply via email to