I have
encountered a strange case in CVS where updating multiple subdirectories
will fail if the entry in the CVS/ROOT file in one of the subdirectories is
different from the others, including different case. The error message is
"cannot add new CVSROOT [different CVSROOT entry]". The error does not occur if
the offending directory is updated separately. For example, if most of the
subdirectories contain a ROOT entry of :pserver:user@server:/CVSROOT but one of
the subdirectories has a ROOT entry of :pserver:user@SERVER:/CVSROOT, the above
error message will appear. I found the error message in recurse.c; it occurs in
two places, after addnode(...) is called. I also noticed several other places
where there is a case-sensitive strcmp(current_parsed_root->original,
this_root) which may be part of the problem.
My ideas for a
possible fix:
Best: parse the two
root strings for semantic equivalence (including equivalence of \ and / in
the repository directory part).
Second best:
gracefully skip that one subdirectory as part of the
update.
Please!: at least
have a meaningful error message that includes the path of the offending ROOT
entry so the user can find and fix it easily.
Thanks for your
time,
Karl
Newman
