Version controlled files

This chapter explains which files have to be version controlled. It also explains how to configure CVS to skip certain files that are generated by the compile/build process but should not be stored in the repository.

Files that must be stored in the repository

All files that form an application (e.g. source code, header files, icons, documentation, etc.) that are necessary to compile, build and run the application must be checked into the central repository.


Before you add a file to the repository you must check it's format. If it's a binary format the special option -kb must be appended to the cvs add in order to inform the central repository to leave the file as it is

Files that should not be stored in the repository

All files that are automatically generated by the build process (e.g. object files, libraries, executables, Makefiles, etc.) should not be checked into the repository because they can easily be reconstructed by the developer. In very rare circumstances it might be necessary to checkin an automatically generated file. This is always an exception.


I mentioned Makefiles above because I assume that autoconf and automake are used. Using autoconf and automake supplies the project with a configure script that creates the Makefiles. The necessary input files are called Makefile.am that must be checked into the repository as source to the Makefiles.

If you do not use autoconf and automake and write your Makefiles directly, they have to be checked in as they are not automatically generated. Nevertheless, using non automake generated Makefiles should be avoided.