CVS :fork: connection method
The paper discusses
:fork: connection method support
in NetBeans IDE
CVS integration.
What is :fork: connection method?
The
:fork: connection method is one of
well known ways how CVS establishes client to repository
(server) communication channel:
- :local: accesses repository direcly using build-in cvs server
- :fork: like :local: but executes cvs server and then uses C/S protocol
- :server: connects using internal rsh [obsolete] (XXX)
- :pserver: connects using internal pserver client (plain passwords on wire)
- :gserver: (also :kserver:) connects using internal GSSAPI (requires
client and server with Kerberos support) [rare]
- :ext: connects using external program (shell)
:fork: is typically used to simulate C/S protocol
communication. Advantage is that it can be understood by
cvsclients using pure C/S protocol and tools thay rely
on command line CVS output parsing (messages differ
between local access and C/S protocol based access).
With :fork: CVS first reads CVS_SERVER environment
variable that defines cvs server executable (possibly script.)
Then CVS executes the server passing server
arguments and hijackes its I/O streams. Finally it
uses C/S protocol over the streams.
Pure :fork: support
IDE could follow command line client approach
starting and stoping external cvs server.
IDE UI Implications
In checkout wizard and CVSROOT manager there must be
a field that accepts path to the cvs executable capable
of server mode. Setup errors must be propagated to user.
Simulated :local: support
:local: is better recognized than the
:fork:
method in spite of fact that both allow local
versioning. IDE could accept
:local:
cvs roots and behind scene translate to
:fork:
(data on disk must stay consistent).
IDE UI Implications
:fork: UI implications apply.
Petr Kuzel on 11th May 2005