# How to Commit changes and avoid Surprises

CVS is a great tool allowing multiple developers to work simultaneously on the same code base. However, in order to avoid surprises, it is crucial that everybody follows this work policy for how to commit changes to the libwww CVS codebase.

### Before you Start

Send a mail to <www-lib@w3.org> about what you are working on
  We don't want to do double work!
Check that the legal stuff is settled!
  Before W3C can accept any diffs we need you to send us this form so that we know we can give out the code for free.
Do never do any pretty printing of the code
  Read the Programming Style Guide for more details why things are the way they are.

### Preparing the Commit

Make sure that everything compiles
  Do a "`make`" on everything in the libwww package and make sure there are no warnings, errors and the like
Make sure that all changes are the ones you expect
  Do a "`cvs diff`" between your work version and the repository in order to filter out unwanted comments and other stuff that you may have left
Resolve any CVS conflicts by sending a mail to <www-lib@w3.org> asking for input
  Don't just remove other people's edits!
Send a mail to <www-lib@w3.org> when you are ready to commit
  Include the diffs and explain what other people should look out for and ask for feedback

### Doing the Commit

Do never commit as the last thing Friday night or before a vacation!
  If there are problems then you better be there!
Document what you have done by writing extensive CVS logs
  Other people must be able to understand it as well
Add new files to CVS
  You can check this by doing a "`cvs update`". All unknown files are marked with a "?". Note that `.h` files are not in CVS - only `.html` files!

Again, following the rules are very important in order not to waste any time