List Info

Thread: Re: CVSItem dependencies and symbols




Re: CVSItem dependencies and symbols
user name
2007-01-27 17:55:01
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-unsubscribecvs2svn.tigris.org
For additional commands, e-mail: dev-helpcvs2svn.tigris.org
  
[1]

about | contact  Other archives ( Real Estate discussion Medical topics )