Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

CVS bug - invalid change text

142 views
Skip to first unread message

ulrich...@de.ibm.com

unread,
Jun 8, 2001, 10:25:25 AM6/8/01
to

Hi CVS gurus,

(1)
In a large project (hundreds of files)
I cannot checkout earlier versions (tags) any more.
I have used the command

cvs co -r <tag> <project_name>

The checkout process is aborted middle in the checkout process
with the error message

"cvs [server aborted]: invalid change text /xxx/xxx/messagehandlers.c,v"

I can retrieve only half of the files.
Fortunately I am still able to check out the current versions of the files.

(2)
Questions:

- what is causing this problem ?
- is it possible to force CVS to continue the checkout without deleteing
the file "messagehandlers.c,v" in the cvs repository ?
- is it possible to repair this file "messagehandlers.c,v" in the
repository ?
- is it possible to avoid such problems in the future ?
- does CVS check the integrity of the repository before and/or after a
commit ?
- if not is there a possibility to force CVS to do such a check ?

(3)
Principal questions:

This problem raises the question whether CVS can be used at all for
serious version management.

It seems CVS is able to corrupt older versions of a file by commits carried
out at some later point in time.
(that is what has actually happened).

It seems that this could happen unnoticed (there were no warnings that
the file "messagehandlers.c,v" became corrupt).
It also seems that the problem is restricted to parts of the files only
(since the current version can be checked out successfully).

This also means that it is impossible for a user to determine by simple
means
whether the data in the CVS repository are still valid or became invalid in
the meantime.

And this in turn would mean that one needs to save every version of a file
independently
just in case CVS might not give you back the old files.

Mit freundlichen Gruessen / With kind regards
Ulrich Straub

E-mail: ulrich...@de.ibm.com
Tel: (+49)-7031-16-2884 , Fax -3619


Karl-Heinz Marbaise

unread,
Jun 8, 2001, 11:00:38 AM6/8/01
to
Hi there,

> In a large project (hundreds of files)

This is not a large project....

> The checkout process is aborted middle in the checkout process
> with the error message
>
> "cvs [server aborted]: invalid change text /xxx/xxx/messagehandlers.c,v"

I have taken a look into the source text and this message can only be
created if
the diff output is not correct which i can't believe...but ...

> I can retrieve only half of the files.
> Fortunately I am still able to check out the current versions of the files.

How is CVS used? As :pserver: or :local: if it is used in local mode is
the
connection due to NFS? On Unix or NT ? Using WinCVS or something like
that?

Which version of CVS do you use?

> - what is causing this problem ?
> - is it possible to force CVS to continue the checkout without deleteing
> the file "messagehandlers.c,v" in the cvs repository ?
> - is it possible to repair this file "messagehandlers.c,v" in the
> repository ?

Might be? Using an Hex-Editor if it is not a hardware problem....

> This problem raises the question whether CVS can be used at all for
> serious version management.

Why not.... CVS is used in much bigger environments for development and
has no problems.... I've been using CVS since 1992 (started with CVS 1.3
on MS-DOS) and i have never seen such a problem which was caused by CVS
itself.
Later it is always appeared that the problem has been caused by other
things..
hardware...wrong editing etc...

> It seems CVS is able to corrupt older versions of a file by commits carried
> out at some later point in time.
> (that is what has actually happened).

Can you send me a copy of that file??? And the Label or the revision
which
results in problems...? May I can help?
Have you made a copy of that file and used RCS directly on that file?

Ever recovered an old version of that file from Backup?

> This also means that it is impossible for a user to determine by simple
> means
> whether the data in the CVS repository are still valid or became invalid in
> the meantime.
>
> And this in turn would mean that one needs to save every version of a file
> independently just in case CVS might not give you back the old files.

Have you ever thought about a backup strategie? BTW do you have a
working
daily backup?


--
Dipl.-Ing. Karl Heinz Marbaise | Phone: +49 (241) 4 13 26 - 48
QIS Systemhaus GmbH Aachen | Fax : +49 (241) 4 13 26 - 40
Juelicher Strasse 338 | Internet: http://www.qis-systemhaus.de
52070 Aachen | e-mail : kmar...@qis-systemhaus.de

Larry Jones

unread,
Jun 8, 2001, 12:12:22 PM6/8/01
to
ulrich...@de.ibm.com writes:
>
> "cvs [server aborted]: invalid change text /xxx/xxx/messagehandlers.c,v"

This indicates that your repository has been corrupted.

> - what is causing this problem ?

The most often reported cause of this by far is bugs in network
filesystem code -- if your repository is network mounted, I strongly
advise that you move either the repository or your CVS server so that
the repository is locally mounted instead. If not, then either someone
or something (other than CVS) has been messing about with your
repository, or you have a hardware problem. The exact form of the
damage may provide clues as to which is the case.

> - is it possible to force CVS to continue the checkout without deleteing
> the file "messagehandlers.c,v" in the cvs repository ?

Not that I know of.

> - is it possible to repair this file "messagehandlers.c,v" in the
> repository ?

Maybe. You'll need to be (or become) intimately familiar with the RCS
file format and either have a way to reconstruct the damaged
revisions(s) or be willing to delete them along with all their dependent
revisions. Essentially, you'll have to edit the RCS files by hand
(although RCS and/or CVS can also help).

> - is it possible to avoid such problems in the future ?

Yes: fix whatever's wrong.

> - does CVS check the integrity of the repository before and/or after a
> commit ?

Unfortunately, it does not (and neither does RCS); both assume that the
filesystem is reliable. In the most common case of corruption (network
filesystem errors), such a check would probably not help since rereading
the file would most likely get the data from the local system's cache
and thus not notice the corruption that occurred between the local
system and the server.

> - if not is there a possibility to force CVS to do such a check ?

Not per se, but see below.

> This problem raises the question whether CVS can be used at all for
> serious version management.

A fair question. I'd say it's as good as anything else.

> It seems CVS is able to corrupt older versions of a file by commits carried
> out at some later point in time.
> (that is what has actually happened).

No. To my knowledge, there has *never* been a report of CVS itself
corrupting a repository file; the damage has always been attributable to
some external agent.

> It seems that this could happen unnoticed (there were no warnings that
> the file "messagehandlers.c,v" became corrupt).

Yes, that's unfortunately true.

> It also seems that the problem is restricted to parts of the files only
> (since the current version can be checked out successfully).

That's a characteristic of the RCS file format.

> This also means that it is impossible for a user to determine by simple
> means
> whether the data in the CVS repository are still valid or became invalid in
> the meantime.

Donald Sharp has posted a perl script that will analyze a repository and
report any damaged files. See:

http://www.mail-archive.com/info...@gnu.org/msg11174.html

-Larry Jones

Girls are so weird. -- Calvin

ulrich...@de.ibm.com

unread,
Jun 8, 2001, 12:19:07 PM6/8/01
to

Hi all,

(1)
some more info:

The project has about 20 tags and several branches.
The current CVS version of the corrupt file is Revision 1.88.

The CVS repository lies on a UNIX server
the checkout problems occurs locally on that machine and also
when I try a checkout remotely on NT.

We are using CVS for over five years now.

I did use the command line version CVS 1.11 (on UNIX)
and CVS 1.10 on NT.

It is obvious that the problem lies in the repository file
"messagehandlers.c,v"
and it is obvious that the file got corrupted in a CVS commit process
(since the files in the repository are not changed directly).
After renaming this file in the repository the checkout process works,
but of course, this file is missing.

Please also note that I can checkout the current version of the project.

The repository file has a size of 460 KB, and it looks OK at first glance
(I cannot see an obvious error). It is a text file.

(2)
I need to repair the file in the repository since I do not want to loose
all previous versions of this file.
I also do not want to loose the possibility to checkout the
earlier versions of the project.

How can I find the offending lines in this file ?


Mit freundlichen Gruessen / With kind regards
Ulrich Straub

CommonStore Development

http//:www.ibm.com/software/data/commonstore


0 new messages