On Mon, 18 Nov 2019, Richard Earnshaw (lists) wrote:

> Well a lot of that is a property of the conversion tool.  git svn does a
> relatively poor job of anything other than straight history (I believe it just
> ignores the non-linear information.  I don't believe any tool can recreate
> information for cherry-picking unless it's recorded in the SVN meta-data.
> Eric would be better placed to comment here.

I think the main thing to make sure of in the conversion regarding that 
issue is that cherry-picks do *not* turn into merge commits (so that e.g. 
"git tag --contains" can be reasonably accurate about which releases 
contain a given commit on master; the other piece of making "git tag 
--contains" more accurate is my list of branch and tag reparentings from 
the cvs2svn era).  That is:

* If the history on a branch includes a commit that copied a particular 
file (say, a testcase) from trunk, the fact of the copy (of some file or 
subdirectory rather than actually creating / replacing the branch itself) 
should *not* by itself, in the absence of merge property changes, suffice 
to create a history relation, because in GCC that's typically a 
cherry-pick (backports of a bug fix, including creating new testcases, are 
sometimes done in a way that creates such copy relations, for example, but 
it would be wrong for it put the corresponding trunk commit in the 
ancestry of the branch commit).

* Similarly, if the SVN merge tracking information shows that a commit was 
a cherry-pick of a single revision - because SVN does track that single 
revisions were merged somewhere.  (reposurgeon definitely has logic for 
that, see the comment "Ignore single-rev fields, they are cherry-picks.".)

-- 
Joseph S. Myers
jos...@codesourcery.com

Reply via email to