VDT SVN Location, Via HTTPS:
VDT SVN Location, AFS (UW CS department only):
Browse repository: https://vdt.cs.wisc.edu/svn/
Subversion book: http://svnbook.red-bean.com/nightly/en/index.html
Subversion for CVS users: http://svnbook.red-bean.com/nightly/en/svn.forcvs.html
export SVN_EDITOR=emacs export SVN=https://vdt.cs.wisc.edu/svn/ (or however you would like to define your shortcuts)
The svn binary that we recommend using is located in
which svn to see the full path to your svn binary.
Configure your shell environment for a default SVN path and commit message editor:
export SVN=file:///p/condor/workspaces/vdt/svn export SVN_EDITOR=vi
In the examples below, it is assumed that you set up a
SVN environment variable as shown above.
svn checkout URL
Check out part of the repository filesystem hierarchy (doc); example:
svn checkout $SVN/software/osg-build
svn list URL
The equivalent of doing an `ls` within the subversion repository (note that `ls` will not work) (doc); example:
svn list $SVN/software/osg-build/trunk
svn status [file, path, etc]
This is the command to use instead of `cvs up`. It will tell you the status of files in the directory, without pulling in the newer versions (doc);
svn update [path]
When you don't just want the status of files, but actually want to pull in the newer versions from the repository, this is the command (doc);
svn commit [path]
Same as cvs (doc);
svn resolved [path]
Tell subversion that your file is no longer in conflict (files can get in a conflicted state from an update or merge) (doc);
The VDT web repository is
https://vdt.cs.wisc.edu/svn/. It is world-readable, so
anyone can check out from our repository using the instructions
If you think you need remote write access to the repository, please contact the VDT team by email to email@example.com. Assuming we grant you access, you'll need to send us a user-name and password. To generate your password, run the following command:
htpasswd -c passwd.file USER
Then send us the contents of the
Here are some examples of Subversion checkout commands for the VDT. Use
svn list to find other branch or tag names.
|Branch||Remote Command||Local Command|
|2.0.0 Production branch||
|2.0.0 Test branch||
|2.0.0 Development branch||
|Nightly test harness||
Oops, you just made a typo in your commit message. What do you do? First,
figure out the revision number. You could look in the email that is sent, or
svn log on a file that changed. Suppose the revision
number is 6311. Put a new commit message into a file called msg.6311.
Now run this command, after editing the highlighted part:
svnadmin --bypass-hooks setlog /p/vdt/workspace/svn -r 6311 msg.6311
Note that the hooks will not be run: This means that the RT ticket (if any) will not be updated, and no email will be sent about your change.
If you add a new file to subversion that is executable, then Subversion will remember it. If you want to make a file executable after it’s already in SVN:
svn propset svn:executable 1 TARGET
Access to our Subversion repository is controlled by an AFS group, condor:vdt.
Members of that group have full read-write access to the repository. Thus,
access control is done through AFS commands, specifically
You must be logged in as the
condor user to run these commands.
For more information, see our page about running AFS
For example, to add a new user:
pts adduser -user USER(S) -group condor:vdt
If you want to provide access to our Subversion repository via HTTP to an external user, follow the steps below. Note: Currently we only support password access.
htpasswd -mn USER
where USER is their user ID on a CSL system.
Have the user send you the line of output, which should look something like this:
Edit the file, and add the user to the appropriate group, and update the comments to list their full name and purpose for adding them. Since we are getting UNIX usernames, we should be vigilant about noting who people are.
cd /p/condor/workspaces/vdt/svn-access git commit -av
Be careful! If you make mistakes when editing this file, you'll break access for everyone. If the file cannot be parsed correctly, no one is allowed access. This will result in problems like:
% svn ls $SVN svn: access to 'https://vdt.cs.wisc.edu/svn' forbidden
You can see this kind of error by looking at
[Mon Oct 24 09:57:45 2011] [error] [client 126.96.36.199] Failed to load the AuthzSVNAccessFile: /p/vdt/workspace/svn-access/svn-acl-file:1: Section header expected [Mon Oct 24 09:57:45 2011] [error] [client 188.8.131.52] Access denied: - OPTIONS svn:/
The repository is located at /p/vdt/workspace/svn
Each of the SVN directories will have a corresponding trunk, branches, and tags directory. Subversion does not create physical directories the way that CVS does, but there is a command to explore a repository (svn list).
/p/vdt/workspace/svn/hooks/log_svn_commit_to_rt.pl. It is based on the perl code in the rt-cvsgate (
/p/vdt/workspace/perl-libs/bin/svnnotify. This relies on the SVN::Notify module, also installed in the perl-libs directory. The script is called from the post-commit script (
Backups are stored in an AFS volume at
Backups are run as the cndrutil user on ingwe. This means that the condor:condor-admin group needs to be given full ACL permissions to
/p/vdt/workspace/svn/locks directories (because cndrutil is a member of condor:condor-admin, but not condor:vdt)
Backups run at 10:30 PM from the cndrutil user's crontab on ingwe. This time was picked because the CSL runs their nightly backups at midnight. The svn backup takes less than 20 minutes to run, so it should complete with plenty of time prior to the CSL AFS backup. To modify the cndrutil user's crontab, log on to ingwe, run ksu, then run 'crontab -u cndrutil -e'
The script is at
/p/vdt/workspace/svn-backups/backup_svn_repos.pl. The script is configurable, and currently the last 7 days of backups are stored. If there are more than 7 backup directories, the script will delete the oldest ones, keeping the newest 7. An email is sent to the vdt-dev mailing list indicating success or failure.
See information here.
https access to the repository is maintained by the
https://vdt.cs.wisc.edu/svn URL it not
/p/vdt/public/html/, but only exists
/etc/httpd/conf/httpd.conf. If you look there,
you'll find the following fragment (accurate as of 24-Oct-2011):
<VirtualHost 184.108.40.206:443> ServerName vdt.cs.wisc.edu ... <Location /svn> DAV svn SVNPath /p/vdt/workspace/svn AuthzSVNAccessFile /p/vdt/workspace/svn-access/svn-acl-file AuthName "SVN Repositories" AuthType Basic AuthUserFile /p/vdt/workspace/svn-access/.svn-auth-file <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> </Location>Note that it documents the locations of the authorization files.