[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: RFE: API for an efficient retrieval of server-side mergeinfo data

From: Julian Foad <julianfoad_at_btopenworld.com>
Date: Wed, 19 Feb 2014 15:06:06 +0000 (GMT)

Marc Strapetz wrote:
> Julian Foad wrote:
>> It looks like we have an agreement in principle. Would you like to file an
>> enhancement issue?
>
> Great. I've filed an issue now:
>
> http://subversion.tigris.org/issues/show_bug.cgi?id=4469
>
> Would you please review the various attributes (Subcomponent, ...)?

That's great, thanks. I added a reference to this email thread, added myself to the CC list, and tweaked the type from 'feature' to 'enhancement' (just my personal interpretation) and schedule from '---' to 'unscheduled' (which just indicates I've thought about it and am stating that it's not currently tied to any particular release, it doesn't mean it has to stay that way).

I talked with Brane about this and we discussed how it might make more sense to do a higher level API. Instead of asking "what is the absolute difference in the mergeinfo representations?" it could ask "What merges and other interesting events have occurred in the lifetime of this path?". There are a couple of reasons.

The API as sketched so far is pretty straightforward, but even so the effort needed to implement it is not trivial. It requires RA protocol changes as well as all the layers of API change. The mergeinfo representation is subject to change. It feels like a backward step to invest effort in adding more support that is tied specifically to the current format.

SmartSVN and other front ends like to be able to draw a merge graph. Even the 'svn mergeinfo' command-line command now draws a little ASCII-art graph showing limited information about the most recent merge. At present they all have to interpret mergeinfo themselves, at a pretty low level, and the interpretation is subtle and poorly understood. (I don't understand the edge cases related to adds and deletes properly, and I've been working with it for years.)

So it seems like a good idea to encapsulate the interpretation of mergeinfo a bit more, and expose data in a form that is geared specifically towards explaining the history in the way that users can understand it. Maybe think of it as an extended 'log' operation, adding a small number of new notification types such as:

  * there is a full merge into here, bringing in all the new changes
      from PATH up to REV;
  * there is a partial merge to here, bringing in some changes
      from PATH between REV1 and REV2;

What do you think of that sort of interface? Does your code already calculate something like that?

- Julian
Received on 2014-02-19 16:09:32 CET

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.