I have two sets of repos setup... common repos and user repos.  On the machine 
acting as the svn host, I have the common repos stored in /repos while the user 
repos are in /home/<username>/.repos/

I'm attempting to simplify svn+ssh access such that:

svn+ssh://<server>/Code/some_project_repo        serves up 
/repos/Code/some_project_repo
svn+ssh://<server>/<username>/some_project_repo  serves up 
/home/<username>/.repos/some_project_repo

I took the example of writing a shell script in /usr/local/bin that sets the 
umask and calls svnserve and modified it to include this path tinkering.  Here 
is that script:

##############################################
#!/bin/bash

umask 002

PATH="$@"
ROOT="/repos"
USER=`echo $PATH | /bin/sed "s/^\/\([a-z]*\)\/.*/\1/"`
PATTERN="^$USER:"

if  `/usr/bin/ypcat passwd | /bin/egrep -q $PATTERN` ; then
  ROOT="/home/$USER/.repos"
  PATTERN="s/\/$USER//"
  PATH=`echo $PATH | /bin/sed $PATTERN`
fi

exec /usr/bin/svnserve "$PATH" -r "$ROOT"
#################################################################

It just compares the first directory passed in against the users in the NIS 
domain and if it finds a match, builds a new Path and root path to the repos.  
It works just fine on the command line when I pass it paths and echo back out 
the parts, but when I attempt to actually run it (by accessing a repo with 
svn+ssh), $PATH does not get set to the path being passed in... it is just set 
to '-t'.  However, when I try to access a common repo (where PATH is left 
unadulterated), it serves up the repo just fine.  Is the path being passed 
encoded somehow?  Is there are way to access it?

thanks,
Matt

----------------------------------------
Matthew Beals
Michigan Technological University
Department of Atmospheric Sciences
1400 Townsend Drive
B019a Fisher Hall
Houghton, MI 49931
mjbe...@mtu.edu

Reply via email to