tags:

views:

25

answers:

1

I'm on a Windows XP system, and I execute this command from the command line:

cvs -d :pserver:CharlesAnderson@ServerName/RepositoryName login -p <pw>

which generates this response:

Logging in to :pserver:CharlesAnderson@servername:2401:/RepositoryName

If I then type:

cvs logout

I get this message:

cvs logout: bad CVSROOT - Cannot specify port: ":pserver:CharlesAnderson@ServerName:2401/RepositoryName"

Rebooting my PC didn't help. How have I got into this state, and how can I get out of it?

+2  A: 

As you did not specify a CVSROOT (i.e. -d option) for the logout command, CVS can only get this either from the environment block or from the metadata of an already checked out working copy (i.e. the ./CVS/Root file). Could it be you specified the CVSROOT via an environment variable and forgot the second colon (i.e. the one after the port number)? Also, specifying port 2401 explicitly shouldn't be necessary as it is already the default port for :pserver: (and in your example you actually did not specify the port when you ran the login command).

In any case logout will only work when the specified CVSROOT matches the one that was used for login.

Finally, you should be aware that login and logout do not delimit a "session". CVS uses a session-less protocol. What the login command actually does is locally cache your password so you won't have to reenter it for every command (CVS implicitly reads it from the cache each time). Logout removes the password from the cache again so the next time you run a command you will have to enter it again.

Oliver Giesen
You are quite correct. My CVSROOT was missing the second colon. I have now adjusted it so it doesn't specify a port at all, and cvs logout no longer complains. I had never needed to do a cvs logout before, as I usually use TortoiseCVS, but I was playing around yesterday on the command line and discovered the odd behaviour mentioned in my question. Many thanks.
Charles Anderson