I've finally had some time to look at this in more depth and
now I am
not convinced that this is a bug at all. See comments
below.
Jon Smirl wrote:
> My understanding of the problem is that in the current
cvs2svn code
> CVS revisions can only depend on other CVS revisions.
That is not a
> full picture of a CVS repository, CVS revisions also
depend on
> symbols. The xpcom test case is not exercising a bug,
it is revealing
> a weakness in the dependency chains since cvs2svn is
not tracking the
> dependency of revisions on symbols.
AFAIK the only time a revision depends on a symbol is the
case of a
revision on a branch, which has to depend (directly or
indirectly) on
the branch that it lives on.
> The essence of the test case is this
>
> symbol MANIFEST 3.2
> nsID.cpp 3.3
> nsID.cpp 3.2
>
> The symbol MANIFEST is created between nsID.cpp 3.3 and
nsID.cpp 3.2.
There is no proof that the symbol was created
chronologically between
nsID.cpp:3.2 and nsID.cpp:3.3. It is quite possible that
somebody
created the symbol after 3.3 already existed, referring to
a
no-longer-current version of nsID.cpp.
> When cvs2svn computed dependencies there should have
been a dependency
> from nsID.cpp 3.3 to MANIFEST to nsID.cpp 3.2. Instead
there is only a
> dependency from nsID.cpp 3.3 to nsID.cpp 3.2 and one
from MANIFEST to
> nsID.cpp 3.2. The nsID.cpp 3.3 to MANIFEST dependency
is missing.
I believe that the dependency that you propose is bogus,
because one can
create a tag on an old version of a file.
> The effect of the other eleven files is to order the
change sets such
> that the final repository was generated like this:
>
> nsID.cpp 3.2 / nsID.cpp 3.3 / symbol MANIFEST
The reason for this ordering is that the MANIFEST tag is
also applied to
export.mac:1.1, which was created 98.05.23.01.13.55, which
is after the
commit time of nsID.cpp:3.3 (98.05.22.21.48.50). cvs2svn
prefers not to
create the tag until after export.mac:1.1 has been
committed, so that
the tag can be created in a single commit. The price for
this is that
the tag is applied to a no-longer-current version of
nsID.cpp.
I have attached a test repository that is even simpler, and
which
exhibits (I think) the same effect that you consider to be
incorrect.
How do you think this repository should be converted?
I believe that you submitted another example of a cvs2svn
symbol
dependency problem in another thread. I'll try to track
that down and
look into it.
Michael
------------------------------------------------------------
---------
To unsubscribe, e-mail: dev-unsubscribe cvs2svn.tigris.org
For additional commands, e-mail: dev-help cvs2svn.tigris.org
|