On Sun, Nov 28, 2010 at 01:27:28PM +0200, Daniel Shahaf wrote:
> [ sorry if I'm repeating; haven't read the whole thread ]
> Johan Corveleyn wrote on Sun, Nov 28, 2010 at 10:05:15 +0100:
> > FWIW, you do have a point, Andrey (and others), that this is a valid
> > use case (finding the rev in which a file was deleted) which isn't
> > well supported by svn currently. I think the svn devs are very much
> > aware of this, but it just isn't there yet. See also this issue:
> > http://subversion.tigris.org/issues/show_bug.cgi?id=3627 - FS API
> > support for oldest-to-youngest history traversal
> > It literally mentions this use case as one of the "high-level user needs":
> > " - allowing 'svn log' to fully traverse the entire history of a
> > given versioned
> > object, both for completeness' sake and to facilitate (for example) resurrection
> > of deleted items from their most-recently-existing forms."
> > Unfortunately, according to the current plans, it might be a while
> > before this is implemented. On the roadmap, it is listed as being
> > dependent on FS-NG ("Flexible Repository Storage"), on the list of
> > "most wanted features":
> > http://subversion.apache.org/roadmap.html#features-most-wanted.
> Just to clarify, this doesn't mean we don't like this feature; it means
> a non-trivial bit of work is needed to implement it, because this
> question is not easily answerable given the current state/design of
> the backends.
> There are two related questions here:
> * Given PATH_at_rN which exists, what is the largest rM such that
> PATH_at_rI and PATH_at_rN are the same node (no adds/replaces/deletes
> have occured in or above PATH) for all N≤I≤M?
> * What are all the (path,revision) objects that are the same line of
> history as a given PATH_at_rN? In other words, what are all the places
> PATH_at_rN has been copied to, and all the revisions where those copies
> were touched?
Of course, these questions can be answered by a human or a script if given
some time to crawl through the output of svn log. E.g. the trumerge
script does this: http://trumerge.open.collab.net/
The real problem is that we want to be able to answer these questions
very fast, and some design aspects work against this. For instance,
FSFS by design does not allow modifying old revisions. So where do
we store the copy-to information for a given path_at_N? The best idea we've
had so far was using an sqlite database. But that's really a hack
around a design that doesn't support all the features we want.
Received on 2010-11-28 16:49:15 CET