On Sun, 29 Dec 2019, Richard Earnshaw (lists) wrote: > gcc-reparent is better, but many (most?) of the release tags are shown > as merge commits with a fake parent back to the gcc-3 branch point, > which is certainly not what happened when the tagging was done at that > time.
And looking at the history of gcc-reparent as part of preparing to compare authors to identify commits needing manual attention to author identification, I see other oddities. Do "git log egcs_1_1_2_prerelease_2" in gcc-reparent, for example. The history ends up containing two different versions of SVN r5 and of many other commits. One of them looks normal: commit c01d37f1690de9ea83b341780fad458f506b80c7 Author: Charles Hannum <mycr...@gcc.gnu.org> Date: Mon Nov 27 21:22:14 1989 +0000 entered into RCS git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@5 138bc75d-0d04-0410-961f-82ee72b054a4 The other looks strange: commit 09c5a0fa5ed76e566668cc67f3d72bf397277fdd Author: Charles Hannum <mycr...@gcc.gnu.org> Date: Mon Nov 27 21:22:14 1989 +0000 entered into RCS git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@5 138bc75d-0d04-0410-961f-82ee72b054a4 Updated tag 'egcs_1_1_2_prerelease_2@279090' (was bc80be265a0) Updated tag 'egcs_1_1_2_prerelease_2@279154' (was f7cee65b219) Updated tag 'egcs_1_1_2_prerelease_2@279213' (was 74dcba9b414) Updated tag 'egcs_1_1_2_prerelease_2@279270' (was 7e63c9b344d) Updated tag 'egcs_1_1_2_prerelease_2@279336' (was 47894371e3c) Updated tag 'egcs_1_1_2_prerelease_2@279392' (was 3c3f6932316) Updated tag 'egcs_1_1_2_prerelease_2@279402' (was 29d9998f523b) (and in fact it seems there are *four* commits corresponding to SVN r5 and reachable from refs in the gcc-reparent repository). So we don't just have stray merge commits, they actually end up leading back to strange alternative versions of history (which I think is clearly worse than conservatively not having a merge commit in some case where a commit might or might not be unambiguously a merge - if a merge was missed on an active branch, the branch maintainer can easily correct that afterwards with "git merge -s ours" to avoid problems with future merges). My expectation is that there are only multiple git commits corresponding to an SVN commit when the SVN commit touched more than one SVN branch or tag and so has to be split to represent it in git (there are about 1500 such SVN commits, most of them automatic datestamp updates in the CVS era that cvs2svn turned into mixed-branch commits). -- Joseph S. Myers jos...@codesourcery.com