MacCVS Pro


MacCVS Pro Frequently asked questions

  1. What is this CVS thing, and who would use it?
  2. Why are you guys giving away the source code?
  3. Isn't there already something called MacCvs out there? What's the difference?
  4. Why aren't you using the public cvs 1.9 source for your CVS client backend?
  5. Can I use MacCVS Pro together with another Macintosh CVS client on the same source tree?
  6. Where's the command line? I need to do a cvs co -xyz this_tag that_tag
  7. How to I remove a file from the repository with MacCVS Pro?
  8. I need to access a server that requires Kerberos/ssh authentication. Can I do this?
  9. I keep getting -49 errors when updating. What's wrong?
  10. What are all these invisible 'CVS' folders in my tree. Can I delete them?
  11. What's the deal with those 'ckid' and 'mcvs' resources in all my files?
  12. CVS looks like it would be really useful for maintaining my souce code/web pages. Is there a CVS server for the Macintosh?
  13. How does MacCVS Pro cope with checking in resource files?
  14. What about CodeWarrior project files?
  15. Why do I lose the version information when I save files with PhotoShop?
  16. Why can't I get MacCVS Pro to connect via RSH?
  17. Why does the source code look such a mess? What sort of formatting is that?
  18. I've made some changes to the source code. Where can I submit them?
  19. 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.


Last modified: