 An FAQ for the Dresden L4 Subversion repository

 Dresden OS Group

Conventions
###########
Allover this document, the following variables are used:

!$REPOS = os.inf.tu-dresden.de/srv/svn/repos/tudos/trunk/

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

* Read the SVN Redbook from [http://svnbook.red-bean.com/]
* The SVN FAQ is at [http://subversion.tigris.org/faq.html]
* Manual: 'man svn'
* Help for specific commands can be gathered using
  'svn help <command_name>'
* A tutorial on using SVN can be found at 
  [http://artis.imag.fr/~Xavier.Decoret/resources/svn/index.html]

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: 
  * The basic L4 tree: 'svn checkout svn+ssh://$REPOS/l4'
  * The IDL Compiler: 'svn checkout svn+ssh://$REPOS/dice'
  * The Fiasco kernel: 'svn checkout svn+ssh://$REPOS/kernel/fiasco'
# Start digging into '~/src/l4'

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

# Correct obvious typos
# Review your directory structure -- although you may correct mistakes later on
  using 'svn move'
# 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' (Check your local build directory!)
# Prevent compiler warnings
# 'make cleanall'
# Change directory to your package directory (e.g. 'cd myl4/pkg/new_pkg')
# Import the new package to the L4 SVN
  ! svn import . svn+ssh://$REPOS/l4/pkg/new_pkg

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

* Changing a package _always_ needs agreement of the maintainer. (See '<pkg>/MAINTAINER')
  Instead of committing changes at will, you should rather send a patch to the
  maintainer and give him the opportunity to review your changes.
* If you are the maintainer:
  # Check if you _really_ fixed anything using
    ! svn diff fixed_file.c
  # Commit your changes and write a meaningful comment via
    ! svn commit fixed_file.c
* Replacing TABs with whitespaces is no fix.
* You can commit whole subdirectories by giving a directory name as parameter.
* Inserting trailing whitespaces, TABS, newlines, or whatever does not fix
  anything.


How do I write a commit message?
################################

* The commit message should be expressive enough for other people to understand
  what problem existed and what you did about it.
* If you fixed a bug from our BugZilla repository, please refer to the bug ID.
* For being used in our regular snapshots, tag important parts of your commit
  message with one of the following tags:
  * 'FEATURE' - This commit adds a new feature to an application.
  * 'BUGFIX' - This commit fixes a certain bug.
  * 'INTERFACE' - This commit changes the application's interface. This can
    be either a change in the IDL interface or in the application's header files.
  * Other changes (style, ...) don't need to be tagged.


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

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


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

SVN automatically detects binary files and handles them separately.


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

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

! svn export svn+ssh//$REPOS/<dir> new_l4
! tar czf l4.tgz new_l4
