 An FAQ for the Dresden L4 CVS repository

 Dresden OS Group

Where can I learn more about CVS and version control?
#####################################################

* http://www.cvshome.org/docs/manual/
* Under Linux, there is a GNU info page: 'info cvs'
* CVS manual: 'man cvs'
* CVS program help: 'cvs -H' or 'cvs -H <command>'

* http://tldp.org/REF/CVS-BestPractices/html/index.html
* http://www.linux-magazin.de/Artikel/ausgabe/1998/10/CVS/cvs.html (in german)

How do I get my working copy of the repository?
###############################################

# Choose a directory to put the source in, e.g. ~/src: mkdir ~/src
# Go to this directory: cd ~/src
# Check out the basics to begin with: cvs -d /home/cvs co l4env
  This gives you an 'l4' directory under 'src'
# Start digging into ~/src/l4

How do I work remotely?
#######################

If the CVS repository is not under /home/cvs you can access it via ssh
(e.g. at home, on your notebook, etc.).
Do the following:
# export CVS_RSH=ssh
# use cvs -d :ext:erwin.inf.tu-dresden.de:/home/cvs ...
  instead of cvs -d /home/cvs

How do I commit a new package under 'l4/pkg'?
#############################################

# Correct obvious typos
# Review your directory structure, it is nearly final in CVS as _move_ means
  _remove and re-commit_
# Check if 'make', 'make clean' and 'make cleanall' work correctly. There
  must not remain any additional files (as those considered for commit) after
  'make cleanall'
# Prevent compiler warnings
# 'make cleanall'
# Change directory to your package directory (e.g. 'myl4/pkg/new_pkg')
# Import the new package to the L4 CVS
  ! cvs -d /home/cvs import l4/pkg/new_pkg a_vendor_tag initial_release

:See also: 'info cvs "CVS commands" import'


I fixed a bug - how to commit my changes?
#########################################

# Check if you _really_ fixed anything using
  ! cvs diff fixed_file.c
# Commit your changes and write a meaningful comment via
  ! cvs commit fixed_file.c

Some hints:
* Replacing TABs with whitespaces is no fix.
* Changing coding style needs agreement of the maintainer.
* Inserting trailing whitespaces, TABS, newlines, or whatever does not fix
  anything.


How to commit 'contrib' sources?
################################

Contrib sources are considered to not change and will be updated more or less
frequently. 'cvs commit' is unsuitable for this purpose; so use 'cvs import'
for contrib code.

:See also: 'info cvs "CVS commands" import'


I have to commit a binary file. What should I do?
#################################################

CVS is primarily for text files but rarely binaries must be kept in the
repository. In this case use the '-kb' command line switch:

! cvs add -kb bird.png
! cvs commit bird.png

:See also: 'info cvs "Binary files"'


How can I generate a .tar archive of the sources?
#################################################

Sometimes one wants a clean source tree without the "CVS" directories, for
example, to prepare source for shipment off-site.

! cvs -d /home/cvs export -rHEAD l4/pkg/the_pkg
! tar czf l4.tar.gz l4

:See also: 'info cvs "CVS commands" export'
