In order to use this, you must be willing to consider the Macintosh
a trusted host to the UN*X box where the CVS server resides.
This is a really dumb thing to do if you have security concerns.
I don't, so I can live with the problem. Until there is reasonably
trustworthy security in MacOS, there is not a good solution.
For the following example, "twinpeaks" is the repository host, and
"cicily" is the Macintosh client. "maggie" is the login account on
twinpeaks
* 'twinpeaks' must have a login account which trusts 'cicily'. For
me this is 'maggie', and 'maggie' has a .rhosts file that contains
the line 'cicily joel'.
* 'cicily' must have the Sharing Setup control panel configured
to have "Owner Name" set to "joel" and "Macintosh Name" set to
'cicily'.
If (and *only* if) you want to use a non-standard port for the shell
connection (the normal port for such connections is 514), then you
must copy the included 'services' file to the "Preferences" folder in
your System Folder. You must rename this file to '/etc/services'.
2. Usage
MacCVS can either be launched from the finder or via AppleEvents.
Do Command: Execute a CVS command
Do Command string -- Command to execute
[Mode AE/File] -- Mode (AE, File).
[Environment string] -- Environment variables.
[Filename string] -- Output file path.
[Pathway string] -- Starting pathway.
[NoLineBuffer boolean] -- if true, send each result line as separate AE.
The enclosed MacPerl script (AE_example.pl) provides all the information
necessary to roll your own MacCVS front end. In order to test code in the
AE_example.pl script, you must have MacPerl 5.0.7r1m and
MacPerlToolbox_10Apr96 (or later). The fragments make use of the new
Toolbox interface, and plain MacPerl will not work.
The AE support in MacCVS does not (yet) provide for getting user input (e.g. log
messages). Make sure you provide that info via a file directive or "-m".
If you launch MacCVS from the finder, it allows you to enter the command
line and redirect the output of CVS to the screen or to a file. If you send it
to the screen, you can choose to save it to a file when you quit.
Due to the strange way it is implemented in CVS, the 'release'
command does not work. Tell me if fixing this should be a priority.
Gzip compression works if the server supports 'Gzip-stream'. This support was
added to the CVS source on July 12, so you need cvs-1.8.6 from that date or newer.
Due to the braindead way I worked around a problem in the CodeWarrier ANSI library,
you can't have file names on the Macintosh longer than 21 characters. If I don't see
a fix from MetroWerks soon, I'll devise a better workaround.
To change the file type and creator of files that MacCVS creates, you
need ResEdit 2.1.3. Edit the MacCVS application, and open the GUZI resource
and make the changes you want.
3. Building MacCVS
I have included the MacCVS CW project files as a binhex stuffit archive ('maccvs.projects.sit.hqx').
I have a "Projects" folder, where I keep the cvs folder and the CWGUSI folder. If
you have a different arrangement, you will need to modify the access paths in
"preferences" in order to find GUSI include and library files.
You will need CodeWarrier 9 and GUSI 1.7.2. I have a report of a successful build
under MPW, but don't support it directly.
There are problems with the CodeWarrier Plum-Hall ANSI libraries and CW9
compilers that I have worked around. Certain failure and exit modes (most nobably,
exiting after help and usage commands) trigger the problem, which manifests itself as
the DONE flag not being set in result AppleEvents, and loss of the last data packet. Metrowerks has reproduced the problems, and hopefully will have a fix soon.
4. Feedback
Please tell me how this works for you (criticism, praise, flames, etc.).
Any ideas for improvements, stuff for the 'README.MacOS' file, or