Hi! First, I've been accepted as a GSoC student for the summer of 2010. I'm really excited and look forward to a summer of coding.
I'm supposed to implement the git unidiff format for 'svn diff' and 'svn patch' and I'll start with the diff side. The git unidiff format can represent tree changes but unfortunately the diff code in it's current state makes it hard to detect those tree changes. What to do? ------------ 1) Just allow wc-wc diffs to create diffs with the git format. Use the available wc functions to retrieve info on tree changes. 2) Allow diffs involving the repos too by creating special ra functions for retrieving the missing information. Something like svn_ra_get_copyfrom_info(). 3) Start revamping the diff code to not use an editor but instead return text-modified and props-modified nodes as detected by the server. [1]. In the mail, Greg makes a case for not using an editor in the diff code since nothing is modified. As I've understood it, an editor is used for almost all repos communication. I see the complexity involved in using an editor and I understand that sharing the same code for merge and diff has drawbacks. But I'm not seeing how we will decrease complexity by not using an editor. We'll still have to detect all those tree changes and we'll have to create additional code for doing it. If we would just have have to check for text-modified and props-modified things would have been different. 4) Wait by the roadside for editor-v2 to be finished. It is supposed to automatically detect tree changes. Has anyone given any more thoughts to how the diff code could be improved? Unless someone has a clear idea about how to move forward, I'll go with option 1) and just allow the git format for wc-wc diffs. Cheers, Daniel [1] http://svn.haxx.se/dev/archive-2009-09/0341.shtml