Local Filestructure 
  The quarkcat user 
We create a system user called 
quarkcat to maintain consistency among developers.  
On a Linux system, create this user as
$ sudo adduser --system --group quarkcat
This will add 
quarkcat as a user and a group and will create its home directory 
/home/quarkcat/ where we will keep e-Lab development files.  The 
--system flag tells the OS this user isn't a real user and won't have a password or login.
  Local files 
Once 
~quarkcat/ is created, create subdirectories
  ~quarkcat/sw/
  ~quarkcat/sw/i2u2svn/
[with, e.g., 
$ sudo -u quarkcat mkdir -p sw/i2u2svn/ ].  The 
sw/ directory is where we store e-Labs-related software; the 
i2u2svn/ directory will contain a local working copy of the e-Labs source code SVN repository.
You will also need the 
sw/local-settings/ and and a 
sw/vds/ directories and the files they contain, in addition to the four scripts
.vdsrc
setenv.sh
deploy-from-svn
internal-deploy-from-svn
that are kept in the 
~quarkcat/ directory.  
See below for descriptions of what these things are.  You can obtain copies of these directories from one of the other developers or from one of the server VMs 
i2u2-dev or 
i2u2-prod.
  Getting local files from the VMs 
To copy the files you need from (for example) 
i2u2-dev to your machine, you can use 
tar and 
scp as shown:
# On the remote VM (i2u2-dev)
$ cd ~quarkcat/
$ sudo -u $USER tar -chzf $HOME/swdirs.tar.gz .vdsrc setenv.sh deploy-from-svn internal-deploy-from-svn sw/local-settings/ sw/vds/
The 
vds/ folder is a symlink to 
vds-1.4.8/, a setup originally intended to make it easy to switch VDS versions by switching the symlink.  As of 2021, VDS development has been long since abandoned, so you don't need to worry about versioning for local development.  The 
-h flag to the 
tar command will make 
tar grab the symlinked content, and not just the symlink itself.
Pull the 
swdirs.tar.gz archive (or whatever you named it) to your machine, inserting your username from the remote VM as needed:
# On your local machine
$ cd ~quarkcat/
$ sudo scp {remote username}@i2u2-dev.crc.nd.edu:/home/{remote username}/swdirs.tar.gz /home/quarkcat
$ sudo tar --same-owner -xzf swdirs.tar.gz 
The original 
tar recorded quarkcat's ownership of the archived files; using the 
--same-owner flag while extracting them keeps them quarkcat's instead of root's so that you don't have to mess with 
chown or 
chmod.
  Tomcat symlink 
After 
Tomcat is installed, which it should already be if you've been following this guide in order, you'll create a directory symlink within 
~quarkcat/sw/ to the Tomcat installation so that "live" website files are accessible within the 
~quarkcat/ directory.
$ ln -s /var/lib/tomcat{X}/ ~quarkcat/sw/tomcat
(the command shown is for Ubuntu, insert the appropriate version of Tomcat).  The 
-s flag creates a "soft" symlink, which is the only kind possible for directories. The first argument is the source filepath, while the second is the new symlink that's created. (Note that the command won't work if the second argument filepath ends in a 
/. A symlink is a 
file, not a directory, even though in this case it's a file that represents a directory).
If your Tomcat installed to a different location than 
/var/lib/tomcat{X}/, the important thing is that the 
~quarkcat/sw/tomcat/ symlink points to the directory within which 
/webapps/ROOT/ resides. It might be called 
tomcat/ or 
tomcat{X}/ or 
apache-tomcat-(version)/ depending on your system.
  Finished product 
By the time you're finished, the 
~quarkcat/ directory should have the following structure:
~quarkcat/
    |-- deploy-from-svn
    |-- internal-deploy-from-svn
    |-- setenv.sh
    |-- sw/
    |   |-- i2u2svn/
    |   |-- local-settings/
    |   |-- tomcat -> /var/lib/tomcat/
    |   |-- vds/
    |-- .vdsrc
sw/ presumably stands for "software," referring to the website software, all of which will be contained within it.
local-settings/ will contain configuration files unique to your local environment - the settings that make your development machine different from the VMs the code is normally deployed on, so that we can deploy the same code to different machines just by changing a few config files.
vds/ stands for "Virtual Data Systems." It's something some of the original e-Lab authors came up with (Mike Wilde, I think), and it's unique to ELabs/QuarkNet as far as I can tell. I don't understand it. You don't need to, either. Probably.
i2u2svn/ is where quarkcat's working copy of the source code repository will be written. NB: This is different from your personal working copy, which should be outside of the 
quarkcat/ folder!
tomcat/ is a directory symlink to wherever you install Tomcat on your system, as described later in the 
Tomcat installation page.  This symlink allows us to have both the repository files in 
i2u2svn/ and the live site files in 
tomcat/webapps/ under the same 
~quarkcat/ umbrella folder.  You don't need to create the 
tomcat/ directory at this time, because you'll do that when you make the symlink.  It's included here for completeness.
The contents of 
local-settings/ and 
vds/ will be included in the archive (
vds/ in particular is extensive; take a look at it with 
tree to see). The contents of 
tomcat/ are determined by the Tomcat installation, and the contents of 
i2u2svn/ will be created when the deployment scripts copy the repository to it.
-- Main.JoelG - 2016-07-29