monotone-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Monotone-devel] Re: monotone CVS import failed.


From: Michael Haggerty
Subject: Re: [Monotone-devel] Re: monotone CVS import failed.
Date: Sun, 29 Oct 2006 01:21:02 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060922 Thunderbird/1.5.0.7 Mnenhy/0.7.4.666

Markus Schiltknecht wrote:
>> By introducing symbol dependencies (which svn2cvs does not do) you can
>> force the second change set sequence to be generated.
> 
> Uhm.. is there a reason for not adding such symbol dependencies? It
> seems obvious that branching and tagging should be handled by the
> toposort as well.

It's been planned from the first "cvs2svn 2.0" proposal.  It just hasn't
been implemented yet.  The toposort and blob splitting are relatively
trivial.  The remaining work is mostly in finding a way to supply the
deduced dependencies to the later cvs2svn passes in a form that they can
work with.

> In monotone's cvs_import I'm adding such edges to the graph to be
> sorted, I just have troubles because I have to find out what branch
> symbols belong to *before* toposorting...
> 
> I've been thinking a lot about this chicken-and-egg problem. Currently
> I'm tempted to try to add another graph of just all the symbols and
> branches (but not the commits). Toposorting this one would allow me to
> clearly assign a tag or sub-branch to a certain branch. I don't know if
> it's worth it, though. The simple alternative would be to throw it all
> into one huge Graph.

To do the absolute best job, one would have to put some work into
deducing the "true" graph of which branch is the source for each symbol
(at least for symbols where there *is* a graph that is consistent across
files!).  I think one would make a reduced graph of the dependencies
within each file, then resolve the ambiguities by trying to find a graph
onto which all of the single-file graphs can be mapped.  But it is an
ugly problem, especially considering all of the bizarre exceptions that
CVS allows.

But a pretty good job can be done with a few heuristics and a reasonable
amount of data collection.  I think the toposort should determine *when*
a symbol can be created, then the choice of source branch should be made
based on the contents of the repository at that time.

Michael




reply via email to

[Prev in Thread] Current Thread [Next in Thread]