Access to the kaos repository at the server


First, decide if you really need to modify the files in the repository. If not, we have anonymous read-only access. Simply specify the username "anon" and the password "anon". Also, be aware that there are a variety of released source and binary images for download.  You need authenicated SVN access if you are going to make changes to chaos projects and commit those changes so that they become part of the project.  You don't need SVN access to use the stable, pre-built libraries on CoC machines (in /users/c/chaos/<ARCH>/{lib,include,bin}, or to build your own versions at home.

Getting access

If you determine that you need access, you must have an account on the SVN server.  Greg will set one up for you if you send him a desired username and an encrypted password acceptable to htpasswd.  You can use handy web pages to encode your password, like: or google up your own. SVN uses basic htpasswd encoding, so any generator that does that will work (including htpasswd on the command line).   (It isn't wise to use your regular CoC password or anything else you want to keep secure, particularly if you use the same username on SVN as your CoC account.  The SVN login protocols don't have any failsafes that prevent brute force attack, so it is potentially more easily broken.  It's better if it being broken just means that someone can mess up SVN, not leverage their way to rootkit CoC servers.)

Once the account is setup (or for anon access)

You should use an SVN URL of the form:
Notice the "trunk" after the project name. Our SVN repository keeps the trunk, branches and tags all under the project directory. Probably you only want the top-level trunk, however you probably don't want it to be named "trunk". So, for the command line tools, you should probably be using a command line like:
svn co project
I.E. tell svn to name the resulting directory 'project'. SVN will demand authentication (username and password) when necessary. If you check something out with 'anon', that username will probably stick with the directory and you may have to add '--username who' arguments to do a commit.

Repo organization

Some of the tools that operate on the repository assume a basic organization for the repo, so things will go a bit smoother if that is adhered to. In particular, most everything at the top level /kaos/ directory is a software project. Also at the top-level we have a 'papers' directory and a 'proposals' directory. Those are handled specially with respect to access and commit notifications, as described below.

Access policy

Access control is controlled by the kaos.policy file, which exists on the svn server and can only be modified by the admin. Generally, all GaTech people with accounts are given broad read/write access to the repo. You don't need permission to create a new project, just import your files. By default, projects at the top level of /kaos/, and in the kaos/papers/ directory are readable via anonymous access, and writeable by anyone with an account. If your project needs a different policy for some reason, just ask. Projects under kaos/proposals are considered sensitive, are available only to a specific subset of SVN users.

Commit notifications

We use the SVN::Notify perl package to generate commit notifications for projects in the kaos repository. SVN::Notify requires an svnnotify.yml file to exist on the svn server to control who receives notifications. A custom script, in the chaos_base project, is run nightly on the svn server to refresh this yml file. contains a mapping from svn username to Email address. The email addresses to which commit notifications are sent are determined by: Generally, the first method above results in commit messages being sent to active developers and is sufficient for most projects. However, the .svn_notify method may be better for users wishing to passively watch projects.

FOR THE PURPOSES OF COMMIT NOTIFICATION, a "project" is something at the top level of the kaos repo, something directly under kaos/papers or kaos/proposals, or a directory which is a child of a parent which has the SVN property 'has_subprojects' set to "true". I.E. if you have a personal repository at the top level, something like, but you are collaborating with different people on different things below that, you can set the has_subprojects SVN property on my_dir, and each directory underneath is will be considered separately for the purposes of commit notification. Further, if has_subprojects is set on directory A, we will also search it's immediate subdirectories for that propertly and consider each of their children separately if it is found to be set. So if you have and you collaborate with others on different things below that, you must set has_subprojects on by my_dir and on the papers directory. Then everything below my_dir/papers will be considered separately.