[Cvsnt] Cannot run tag following rtag using same connection/process under remote protocol

Schmidt, Martin mschmidt2 at alldata.net
Tue Jun 18 18:46:50 BST 2002


The following is an issue with the past and current Unix CVS code, and
currently exists in CVSNT as ported.  I have submitted this as an issue to
the ccvs project at cvshome.org, so if you are still picking up fixes from
there this message is probably redundant.

We are writing some custom cvs client code that uses the remote protocol and
have been receiving an error when running the tag command following a run of
rtag while using the same socket connection.  I have tracked this down to
what I believe is a bug in server.c.  When rtag is run, serve_rtag sets
command_name to "rtag", but then when tag is then run (in the same process),
serve_tag has no code to set command_name to "tag" and it is left as "rtag".
The code for serve_log, serve_annotate, and server_co, shares this
deficiency as well.  I would like to suggest changing these functions to set
command_name appropriately, like their counterparts for rtag, rlog ,
rannotate, and export do.  Here is an example:

OLD serve_tag:

static void
serve_tag (arg)
    char *arg;
{
    do_cvs_command ("cvstag", cvstag);
}

NEW serve_tag (more like serve_rtag) :

static void
serve_tag (arg)
    char *arg;
{
    /* Tell cvstag() to behave like tag not rtag.  */
    command_name = "tag";
    do_cvs_command ("cvstag", cvstag);
}

Doing multiple commands in a session is sensible for our purpose of
automatically migrating code from one development environment to another,
where we have many CVS (tag, rtag, export) commands that need to run at one
time.  And it is a legitimate mode of CVS access according to this excerpt
from the CVS protocol document, cvsclient_5, Examples section:
"The current client implementation would break the connection here and make
a new connection for the next command. However, the protocol allows it to
keep the connection open and continue..."

Thanks,
-Martin


_______________________________________________
Cvsnt mailing list
Cvsnt at cvsnt.org
http://www.cvsnt.org/cgi-bin/mailman/listinfo/cvsnt




More information about the cvsnt mailing list