Customizing SVN

Setting up ~/.subversion/config

The "svn status" command tells you what files you have modified. It also tells you about files that you have added to the repo. However, it reports all files that are not being tracked by SVN, including .so's, etc. You can turn many of these off by editing the ~/.subversion/config file.

Uncomment the miscellany section:

[miscellany]

Then change your global-ignores to be the following:

global-ignores = *.o *.lo *.la *.so .depend .pardepend Makefile *_moc.C *.a *.so.* config.* moc_*.C moc_*.cxx *~ #*# CMakeFiles cmake_install.cmake

This will prevent SVN from reporting status of unversioned files matching this pattern (i.e. the "?" marking using svn status). Furthermore, it will not automatically attempt to add these files when performing an "svn add" on a directory. This will not cause SVN to ignore all files matching this pattern, though -- if it is versioned, SVN can not ignore it.

(Jeremy notes: for items like ./exe/viewer and ./include/vtk that are generated as part of the build process, the global-ignores is not quite the right place to hide these. Instead, we can add svn:ignore property to the exe and include directories with their own set of globs, which will apply to everyone as they are attached to the repo. See the section "Ignoring Unversioned Items" in the SVN book, currently here.)

NOTE: staying on top of all of the extensions has been too difficult and most developers resort to using "svn status -q"

Setting up passwordless SVN

The svn+ssh protocol requires passwords to be issued for each transaction (sometimes multiple times for a single transaction!). I highly encourage you to bypass this with passwordless ssh. Of course, your account on portal-auth.nersc.gov has a restricted shell, so that makes getting the files in place there tricky. Here is a sequence that will work:

  1. Start on your local host.
  2. ssh to portal-auth.nersc.gov.
  3. Do an ls and confirm that a directory called .ssh was created. (If not, abort!)
  4. Exit, so you are back on your local host.
  5. cd to $HOME/.ssh
  6. Make a file called authorized_keys
  7. It should contain the contents of id_rsa.pub
  8. If you do not have a file named id_rsa.pub in $HOME/.ssh, you can generate one by running ssh-keygen -t rsa. Make sure the passphrase is empty.
  9. If you want to ssh in from multiple locations (i.e. machine on LC, machine on B-Div network, home machine, etc), then put the contents of each of their id_rsa.pubs into the authorized_keys file.
  10. Issue a secure copy to place the authorized_keys file onto portal-auth.nersc.gov. (scp authorized_keys hrchilds@portal-auth.nersc.gov:~/.ssh)