Re: Merge metadata lost
Michael Haggerty <[email protected]> Mon, 15 Apr 2013 06:09:44 +0200
| Newsgroups | gmane.comp.version-control.subversion.cvs2svn.user |
|---|---|
| Message-ID | <[email protected]> |
(Please send plain text, not HTML, emails to mailing lists.) On 04/14/2013 01:03 PM, Florian Jung wrote: > <html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div> > <div style="font-family: Verdana;font-size: 12.0px;"> > <div>Dear all,</div> > > <div>currently I am working on a CVS migration to SVN for a fairly large project and after a successful run I realized that the merge information of branches towards the trunk are lost, i.e. there is no information left that changes originated from commits on a branch and were merged back to the trunk. I stumbled across a post on stackoverflow (http://stackoverflow.com/questions/632729/cvs2svn-and-merge-info) where Michael stated that it is not possible to migrate such information as CVS does not have them. I hope I got it right.</div> > > <div> </div> > > <div>Nevertheless and just for clarification, as I have to report to any disadvantages of the cvs/svn migration, where do IDE like Eclipse and Intellij draw this merge information from if not from cvs itself. Both are capable of showing the history of commits in a tree-like manner, e.g. when being on the head and you take a look on the history of a particular file that has been used on head and branch and finally merged back it shows something similar to</div> > > <div> </div> > > <div>* 1.13 some change on head</div> > > <div> - 1.13.6.1 some change on branch</div> > > <div> - 1.13.6.2 another change on branch</div> > > <div>* 1.14 merge of branch</div> > > <div> </div> > > <div>Are these informations based on heuristics that are too weak to be considered for the migration or are these informations hidden in the repos metadata and are not accessible yet and could be addressed in a later version of cvs2svn.</div> > > <div> </div> > Lots of thanks for those who can give any advice.</div> > </div></div></body></html> The output that you provided shows branch 1.13.6 being created, but it is not obvious that the tool knows that a merge took place. The text "1.14 merge of branch" is presumably from the commit message, not from the tool, right? cvs2svn definitely knows when branches are created and reconstructs them as Subversion branches. You will see equivalent diagrams after you have converted to Subversion. But cvs2svn doesn't reconstruct merges because CVS doesn't record the fact that a particular commit came from a merge. I've never heard of a tool that automatically infers merges from a CVS commit history in any way that is more robust than matching commit messages to regular expressions. It would be a very difficult task and probably would never yield satisfactory results. It may be that there are tools that can reconstruct merge commits on the instructions of a user (reposurgeon?). I myself have done manual reconstruction of merge commits when converting from Subversion to Git; it is possible using Git's excellent tools but it sure was a lot of work. I think that CVSNT makes some effort at recording merges in the repository, so it might be feasible to convert CVSNT merges into Subversion merges. Unfortunately, CVSNT is poorly documented and not freely available and cvs2svn does not officially support conversions from CVSNT. Michael -- Michael Haggerty [email protected] http://softwareswirl.blogspot.com/ ------------------------------------------------------ http://cvs2svn.tigris.org/ds/viewMessage.do?dsForumId=1670&dsMessageId=3053289 To unsubscribe from this discussion, e-mail: [[email protected]].