Access to the kaos repository at the
svn.cc.gatech.edu server
Evaluation
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:
http://www.htaccesstools.com/htpasswd-generator/
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:
http://svn.research.cc.gatech.edu/kaos/project/trunk
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 http://svn.research.cc.gatech.edu/kaos/project/trunk 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, svn_notify_create.pl in the chaos_base project, is run nightly on
the svn server to refresh this yml file. svn_notify_create.pl contains a
mapping from svn username to Email address. The email addresses to which
commit notifications are sent are determined by:
- looking in the SVN logs for each project and determining which users have
done a commit in the past year and mapping those usernames to Email
addresses.
- if the project has a top-level file named .svn_notify this can be used
to customize commit notifications. In particular:
- The file can contain entries that are white-space delimited
- Entries that are SVN usernames are translated to Email addresses and
added to the notification list
- Entries that contain a '@' are added directly to the notification list
- If the entry '-' is present, the SVN log entries are ignored and the
contents of .svn_notify provide the complete commit notification list
- if the methods above result in an empty list (common for inactive
projects) commit notifications are only sent to the admin
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 http://svn.research.cc.gatech.edu/kaos/my_dir, 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
http://svn.research.cc.gatech.edu/kaos/my_dir/papers 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.