Private:ServersAndPartitions
/nsl Partition
Whether you are using Linux or Windows, all machines within NSL have access to a mounted shared partition that hosts all student and research material. The share can be found in Computer in Windows under the name NSL, and it can be accessed under /nsl/ on Linux machines. Within the partition, you will find a directory called students. Each student will have a directory under /nsl/students/ with his/her last name. Note that it is a lab regulation that all members keep a copy of all their data under their directory on the shared partition (this includes code, results, submissions, talks, theses, etc.). This is required to prevent possible data loss, since the partition gets backed up regularly by our IT help desk team in CS @ SFU Surrey, and for easy access to the lab's work. Please refer to the "Subversion Server" section below for details on how to create your own directory under /nsl/students/.
/nsl-nas Partition
NSL has a 2.7 TB Network Area Storage (NAS) accessible via the /nsl-nas partition on Linux machines. This partition can be used to store large datasets which may otherwise fill the scarce disk space on the home directories partition. Each user can have their own directory (if needed) under /nsl-nas/users/.
Subversion Server
All our projects and documents at NSL are under version control. Our Subversion server is cs-nsl-svn and it hosts two repositories:
- nsl-projects (https://cs-nsl-svn.cs.surrey.sfu.ca/cssvn/nsl-projects)
- nsl-members (https://cs-nsl-svn.cs.surrey.sfu.ca/cssvn/nsl-members).
nsl-projects
The nsl-projects repository is used to host all the projects that we are developing at NSL. It is accessible via the Trac Web-based project management system at (https://cs-nsl-svn.cs.surrey.sfu.ca/nsl-projects/). The repository is organized into a number of categories (e.g. P2P, HPC, etc.) and a project is placed under the corresponding category. When a new project is started, the lab admin will generate the skeleton tree on the Subversion server and assign write access for that project to the team working on it. All members of the lab will have read access to the entire repository and all the projects. The following example illustrates what the main structure for a project's tree should look like, other directories (e.g. scripts, logs, data) can be created but please keep the core structure there:
project-name/ |-- code | |-- client | | |-- trunk | | |-- tags | | `-- branches | `-- server | |-- trunk | |-- tags | `-- branches |-- documents | |-- submissions | | | | | `-- nossdav11 | | |-- fig | | `-- doc | |-- talks | `-- techReps |-- references `-- ReadMe.txt
Initially, the code directory is empty. You create a directory for each IDE project (note that the term "project" here refers to an IDE project hosting the source code) that you will develop in your research project. Each of these directories should follow the guidelines of Subversion by creating 3 subdirectories: trunk (the main development branch), tags (for those specific milestones that you reach during the development process), and branches (for experimenting with new ideas without affecting the main branch). If an experimental branch reaches a stable and working state, it can be merged back with the main branch.
The documents directory should contain a subdirectory for each submission you make. The naming convention we use is the acronyms of the conference name followed by the last two digits of the year (see nossdav11 example in tree above). Under each submission, two subdirectories should be created: fig (to hold all the figures) and doc (to hold all LaTeX related files, including the BibTeX file for the references). The talks directory is used to store all project-related presentations (e.g. presentations for conferences in which your paper was accepted :)). Finally, the techReps directory stores all technical reports (should also have a fig and doc subdirectory for each technical report) and the ReadMe.txt file should contain a description of the project and its contents as well as how to run the code.
nsl-members
The nsl-members repository is used to host any non-project related data and documents. A new lab member must checkout his/her directory from the nsl-members repository (https://cs-nsl-svn.cs.surrey.sfu.ca/cssvn/nsl-members/) to /nsl/students/. The member's directory is named after his/her last name. For example, if your last name is "smith", use the URL (https://cs-nsl-svn.cs.surrey.sfu.ca/cssvn/nsl-members/smith). The checked out directory will contain a basic structure for you to organize your material. The structure looks as follows:
hamza/ |-- projects | |-- references | |-- reports | |-- sample | | |-- doc | | `-- fig | `-- latexReportTemplate.zip | |-- talks | `-- thesis
After creating or adding new files/directories under this directory (with the exception of the ./projects subdirectory), you should use the SVN client of choice to add all that needs to be under version control and commit.
Some notes on organizing things
For course related material, you can create a courses directory that doesn't necessarily need to be under version control, meaning you just create the directory within the directory tree you checked out from nsl-members without using Add to place it under version control afterwards. The projects folder is meant for checking out research projects that you are working on from the nsl-projects Subversion repository. The only data meant to be in the projects subdirectory are those you check from the nsl-projects repository. This way, you get all the submissions, code, and references related to the project in one place under the projects directory. As for the papers that you read, you can organize those under the references directory (e.g. organized by topic or project). Progress reports and surveys that you write should be placed under the reports folder. And you can organize the tree under that folder in any way that makes sense to you (e.g. folder for every term/month).
The goal is to enable easy access to the material and to maintain a copy of the important files/directories on Subversion. This is why the directories on nsl-members are the main ones, but you can add any directories within them and selectively decide which of those would go under Subversion control as well. You can commit any changes you make to files within any of the directories in the tree by changing to that directory and committing. Note that: because the projects will be coming from the nsl-projects repository, committing from within the project's directory would send the changes to nsl-projects and NOT nsl-members (thus, you don't have to worry about duplicates).
If you need more information, need help with moving your data, or face permission issues with the new Subversion server, just drop me (the lab admin) a line.