Since we provide rsync read-only access to the CVS repository, one may expect to also get write access. But we do not provide direct write access to the CVS repository for several reasons:

  • integrity: changing or removing the history of a Savannah project should be exceptional, and moderated. For example, in the event a project goes proprietary, we would want to keep the repository of the latest published free version available. Changing the history can also lead to situations where it's not clear who exactly sent a given commit.
  • security; we do not provide shell access to Savannah, so that users cannot send arbitrary commands to the system (fork bombs, twisted calls to ptrace, many more). Granting CVS direct write access would provide a way to do so by creating a distinct CVSROOT/ directory. Such CVS root could also be used to trick CVS users into executing malicious hooks under their username.

So providing cvs write access is currently something we refuse.

Users actually need write access in few cases:

  • CVS migration, CVS clean-up after first (misdone) import: this is quite rare, just file a support request
  • -x permissions changes: CVS doesn't support permissions, and recommands that you set permissions using installation scripts (such as ./configure). CVS has a nasty feature, though, making a file executable if it is executable in the user working directory on first commit or import, without the ability to change that permission later on. However, there is a discussion about providing a way to change this permission from the CVS client, so if you really want this feature you should contact the CVS team and possibly offer help for its inclusion in the very next release :)

Last, if you want to work offline, we suggest you move to a different version control system. Savannah supports several.