info-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: pserver and cvswrappers


From: Dan Kegel
Subject: Re: pserver and cvswrappers
Date: Mon, 06 Nov 2000 09:43:51 -0800

"Derek R. Price" wrote:
> > When using pserver mode, which side obeys {~/.cvswrappers, $CVSWRAPPERS, 
> > CVSROOT/cvswrappers}?
> > Does the client pay any attention to CVSROOT/cvswrappers (which may or
> > may not be on the local machine)?
> 
> I don't remember.  I'm not sure CVSROOT/cvswrappers isn't sourced only for a 
> local client.
> 
> > Does the server pay any attention to ~/.cvswrappers or $CVSWRAPPERS?
> 
> Not exactly.  You may notice some effects on the server (read, 'archive files 
> in the repository')
> but the processing was done by the client.
> 
> I believe the order they are processed is CVSROOT/cvswrappers (when 
> processed), 
> ~/.cvswrappers, $CVSWRAPPERS, wrappers specified on the command line.   ...
>
> > Where is this doc'd in the FM?
> 
> http://www.cvshome.org/docs/manual/cvs_18.html#SEC162 ,
> http://www.cvshome.org/docs/manual/cvs_9.html#SEC80 ,
> http://www.cvshome.org/docs/manual/cvs_12.html#SEC98 ,

On which machine?  You don't specify, nor does any of the doc you mention.
OK, back to the source code.  Man, it's hard to figure this source out.

I think add() on the client does things in the following order:
  wrap_setup();   // read CVSROOT/cvswrappers, ~/.cvswrappers, $CVSWRAPPERS
  parse args;     // read commandline
  start_server(); // ask server for its wrappers
  send_files();   // for each file, sends the filename; 
                  // reads ~/.cvswrappers, sends Kopt B if filename indicates 
it's binary
          
start_server() always sends wrapper-sendme-rcsOptions.
The server responds at serve_wrapper_sendme_rcs_options() with 
its complete set of wrapper settings (from CVSROOT/cvswrappers, ~/.cvswrappers, 
and $CVSWRAPPERS).

Thus the order wrappers are processed in is:

 CVSROOT/cvswrappers on client, 
 ~/.cvswrappers on client, 
 $CVSWRAPPERS on client,
 wrappers specified on the command line on client,
 CVSROOT/cvswrappers on server, 
 ~/.cvswrappers on server, 
 $CVSWRAPPERS on server,
 ~/.cvswrappers on client if files were specified explicitly on client 
commandline?!
 (see client.c line 5035!)

at least for this client and server.  (I haven't checked, say, jcvs to
see if it also queries the server for the wrappers.)

This should be documented.  Should I submit a patch to cvs.info-7 to describe
this more fully?  Comments and corrections welcome.  This code is so
confusing at first look that I'm sure I'm missing something.

Looking at the source reminds me of the old saying:
One who is fond of sausage should not visit a sausage factory.
- Dan



reply via email to

[Prev in Thread] Current Thread [Next in Thread]