- What is this CVS thing, and who would use it?
- Why are you guys giving away the source code?
- Isn't there already something called MacCvs out there? What's the difference?
- Why aren't you using the public cvs 1.9 source for your CVS client backend?
- Can I use MacCVS Pro together with another Macintosh CVS client on the same source tree?
- Where's the command line? I need to do a cvs co -xyz this_tag that_tag
- How to I remove a file from the repository with MacCVS Pro?
- I need to access a server that requires Kerberos/ssh authentication. Can I do this?
- I keep getting -49 errors when updating. What's wrong?
- What are all these invisible 'CVS' folders in my tree. Can I delete them?
- What's the deal with those 'ckid' and 'mcvs' resources in all my files?
- CVS looks like it would be really useful for maintaining my souce code/web pages.
Is there a CVS server for the Macintosh?
- How does MacCVS Pro cope with checking in resource files?
- What about CodeWarrior project files?
- Why do I lose the version information when I save files with PhotoShop?
- Why can't I get MacCVS Pro to connect via RSH?
- Why does the source code look such a mess? What sort of formatting is that?
- I've made some changes to the source code. Where can I submit them?
- I've got a question that is not answered here. Who can I ask?
1. What is this CVS thing, and who would use it?
CVS, which stands for Concurrent Version System, is a system used for
large- and small-scale software development projects, which tracks the
revision history of all files in the project, allows multiple developers
to work on the same source base, and allows for multiple versions of the
project to be developed concurrently from the same source tree.
CVS is mostly used now in commercial software development applications,
although increasing use for maintenance of large web sites is likely.
In CVS, the client and server usually run on different machines, and the
client communicates with the server over a local area network, or the
Internet. The CVS server software is available in source form, and
should compile on most flavors of UNIX.
For more information about CVS, see
cyclic's web site.
2. Why are you guys giving away the source code?
We believe that MacCVS Pro is an outstanding CVS client, and we want to make it
available to as many people as we can, for no charge. So we are releasing it
under the GNU General Public License (GPL).
That requires that we also release the source code, which we are happy to do,
in the spirit of free software. We hope that other developers on the net will
take the source code and make improvements and feature additions, which are
then contributed back to maccvs.org.
3. Isn't there already something called MacCvs out there?
Indeed, there are several Macintosh CVS clients, several of which are
loosely referred to as "MacCvs". MacCVS Pro (currently) shares no code with
and is not derived from the CVS client for Mac OS which is called
MacCVS, nor is
it related to other software called
MacCVSClient.
To distinguish our client from those, we chose the name MacCVS Pro.
The differences between all three clients are various.
(which I refer to
as GNU MacCVS) is an actual port of the GNU CVS source code using GUSI. It models
CVS far more closely than MacCVS Pro or MacCVSClient. So some of the more obscure features
of CVS will likely be supported in it.
MacCVSClient is a completely independent implementation (like MacCVS Pro) developed
in PowerPlant. The format it uses for storing CVS revision information is different
than either MacCVS Pro or GNU MacCVS.
4. Why aren't you using the public cvs 1.9 source for your CVS client backend?
MacCVS Pro was started from scratch, including the CVS engine backend that talks to
the server, and manages the files on disk. This was designed with modularity and
performance in mind, which meant that we were not as compatible as we could be
with other clients, or as good at reusing existing code. Since MacCVS Pro is a
multi-threaded GUI, the effort required to integrate the original GNU CVS source code
is significant.
Starting with MacCVS Pro 2.5 we will significantly
improve our compatiblity with
other CVS clients. Version 2.5 will store revision information and files on disk
using the specifications published in the CVS 1.10 documentation.
This means MacCVS Pro will work with source trees checked out by the
GNU MacCVS client version 3.1 and later.
5. Can I use MacCVS Pro together with another Macintosh CVS client on the same source tree?
We would strongly discourage this, since MacCVS Pro stores CVS information
in your local source tree in a different way to the other Mac CVS clients.
These differences are described in detail here.
Starting with MacCVS Pro 2.5 we will significantly
improve our compatiblity with
other CVS clients. Version 2.5 will store revision information and files on disk
using the specifications published in the
CVS 1.10 documentation.
This means MacCVS Pro will work with source trees checked out by the
GNU MacCVS client version 3.1 and later.
6. Where's the command line? I need to do a cvs co -xyz this_tag that_tag
We don't have command line processing in the current version of the client.
However, future developments may enable us to expose a command line interface.
7. How to I remove a file from the repository with MacCVS Pro?
This feature is now implemented in MacCVS Pro 2.2 and later. Simply choose Remove from the
Action menu. (it is located under the Admin sub-menu in MacCVS Pro 2.2)
8. I need to access a server that requires Kerberos/ssh authentication. Can I do this?
MacCVS Pro can now be compiled with Kerberos (KClient) support -- see the build documentation for
more details. It is also possible to run MacCVS Pro over an SSH connection
using 3rd party commercial software.
If you need a different authentication protocol, why not download the soure and implement
it yourself?
9. I keep getting -49 errors when updating. What's wrong?
When you update or check out, MacCVS Pro requires exclusive write access to all
the files, because it has to ensure the integrity of the files. So this error
probably means that you have a source or project file open elsewhere, like in
the CodeWarrior IDE.
10. What are all these invisible 'CVS' folders in my tree. Can I delete them?
They store information that MacCVS Pro needs, so you should not delete them. They
contain 3 files, which store, for example, the sticky tag for that folder.
If you are making a source distribution, and want to remove CVS information from
the tree, then you can use the 'Orphan files' menu option to remove both the CVS
folders, and the 'ckid' and 'mcvs' resources that MacCVS Pro puts in each file.
11. What's the deal with those 'ckid' and 'mcvs' resources in all my files?
Again, they store information that MacCVS Pro needs, so you should leave them be.
Then can be stripped out of built binaries; the MacOS Merge tool in the CodeWarrior
IDE allows you to ignore certain resource types, so you might want to add 'mcvs'
to that list.
12. CVS looks like it would be really useful for maintaining my souce code/web pages.
Is there a CVS server for the Macintosh?
No, although you can run either MkLinux or LinuxPPC on a Mac, and install a CVS server
on that. This is a fairly simple process.
CVS server software is only available for UNIX and Windows NT, as far as we know. You
might find more information on
Cyclic's software page.
13. How does MacCVS Pro cope with checking in resource files?
CVS has its origins on UNIX, and thus knows nothing about the Macintosh system of having
two forks per file, one for resources, and the other for data. We thus have to get it
to treat files with resource forks as binary files, and somehow encode both forks in one
stream for sending to the server. AppleSingle encoding is used for this, so files
with resource forks get added with the -kb
option, and sent to the server
as AppleSingle data. MacCVS Pro, however, needs to store locally the encoding used for
a file so that it can send the appropriate data during an update operation, and this
data is stored in the 'mcvs' resource, in which there is a flag that states whether
a file was checked in as AppleSingle or not.
When checking out, MacCVS Pro 'sniffs' the data of binary files sent from the server,
to determine whether to treat them as AppleSingle, and thus decode data and resource
forks. It does this by checking for a valid AppleSingle header at the start of the data.
Any file without this header is treated as a raw binary file.
You can use the 'Encodings and File mappings' settings to determine how MacCVS Pro
treats files of different types. As a general rule, source files should be checked in
as text, resource files, and files with both data and resource forks as AppleSingle, and
other files, in which only the data fork is useful (e.g. GIF files, StuffIt archives) as
binary.
The CVS server is completely ignorant of this AppleSingle encoding magic used
for Mac resource files. As far as it is concerned, these are just binary files.
If you live in a cross-platform world, and have engineers on other platforms
(Windows, UNIX) checking out Mac resource files, then this can cause problems.
Their CVS clients won't do AppleSingle en/decoding, so they will just get
binary files that look like garbage. They won't be able to modify them, and
if they mistakenly check in such files, there is a good chance that they will get
corrupted.
14. What about CodeWarrior project files?
Between IDE 1.7.4 and 2.0, Metrowerks made significant changes to the way
that object data is stored in projects, that were largely done to make source control easier.
IDE 1.7.4 stores object data (compiled code) in the project file.
It can thus get very large, and appear to keep changing to a source control system.
Also, if someone adds a file and checks in a new version, everyone has to rebuild a lot
of code. CodeWarrior Pro 2 improved the situation dramatically; now, all object data
is stored in the <project>.data folder, so the project file itself does not change
when you compile. Also, only the project file needs to be checked in to the repository,
and can be modified by others without causing all object data to be removed.
CodeWarrior Pro 2 project files should be checked in as binary files, since all their
data is stored in the data fork, and doing so allows Windows engineers to check
such files in and out without fear of corrupting them.
15. Why do I lose the version information when I save files with PhotoShop?
Adobe PhotoShop has a habit of eliminating resources that it does not know about
from the resource forks of files that it saves. This means that the resources
that MacCVS Pro uses to track file versions and status get wiped out every time
you edit a file with PhotoShop. This is a PhotoShop bug, and you should complain
to Adobe if it affects you. The ugly work-around is to keep a copy of the file,
and use ResEdit or Resorcerer to copy and paste the 'ckid' and 'mcvs' resources
into the edited file before you check it in.
MacCVS Pro 2.5 will store revision information in a separate file, eliminating
this problem completely.
16. Why can't I get MacCVS Pro to connect via RSH?
This really depends on the Unix implementation that is running on your server. Almost
always, errors such as "error -3158" are caused by improper permissions configuration on
the server side.
The first thing to do is make sure you have a '.rhosts' file in your user
directory and that it is properly configured. In some cases, the '.rhosts' file must
be only readable by the owner. So check the permissions of the file.
As a last resort, check the man pages on your server. Information is usually
listed under 'rsh' and 'rshd'. If you have a system administrator for your repository,
contact them for assistance.
17. Why does the source code look such a mess? What sort of formatting is that?
The MacCVS Pro source is formatted for a monospace font (e.g. Monaco 9) with 2-space tabs.
You should set your IDE preferences accordingly.
That's just the style that was used by the original developers. Please respect it, and
ensure that code you submit conforms to a similar style.
18. I've made some changes to the source code. Where can I submit them?
Before you submit changes, please ensure that they have been thoroughly tested
on as many servers as you have access to. Debugging tools like
Spotlight are
also useful here.
19. I've got a question that is not answered here. Who can I ask?
If your question is a general question about CVS, setting up a server, or is not Mac-specific,
have a look at the main.
After that, your best audience is probably the
CVS mailing list,
or the configuration management news group.
Note: Mention of, or link to any commercial software is for informational purposes only, and
does not constitute an endorsement.
Back to the documentation page.