SVN for CMSC 23710/33710 Scientific Visualization
- We will be using SVN as the mechanism for distributing files to and collecting files from students. Our instructions will assume that you are using the command-line svn program, as opposed to one of the many svn GUIs.
- Please read all of the following through once before running any svn commands to create your working copies.
- You are responsible for learning the basics of SVN if you haven't already used it.
- Some basic SVN tutorials are here, here, and here.
- You can search for svn tutorial and svn introduction to find others.
- The canonical reference is the SVN book here, which includes HTML and PDF versions; you might want to start with Chapter 1.
- We will be using Phoenixforge to manage the SVN projects associated with the class. Your authentication on Phoenixforge, and the svn commands that connect to phoenixforge, will by via your University CNetID and its password.
- As a student in SciVis, you will be dealing with two different “projects”:
- The "scivis-2015" project. This will be used to distribute files (such as pre-compiled libraries and datasets) to you. You won't be able to modify these files (or more precisely, you won't be able to commit any local changes you make to these files).
- A per-student sub-project named "CNetID-scivis-2015", where "CNetID" is your CNetID. You should see your per-student sub-project listed at the "scivis-2015" project (that listing of all students is hidden from anyone outside the class). You will hand in files by adding and committing files to this svn project.. We will create sub-directories within this project for each homework and project.
- The creation of per-student sub-projects within "scivis-2015" is done automatically, once a night, based on the electronically accessible course registration information at that time. Therefore, it may take one or possibly two days for you to show up here, if you have registered for the class recently. Post a question in the “svn” folder on Piazza if you are having problems.
- We want to allow code in your per-student "CNetID-scivis-2015" sub-project refer to datasets in the top-level "scivis-2015" project. But we don't want you to copy those files into your sub-project (and then hand in those copies, creating grading hassles).
Note that when using the CSIL Macs, a new home directory is created for you each time you log in, so you will need to re-run these commands each time you start work on a CSIL Mac. You must svn add and svn commit files you create here, or else your work can be lost. For the homework assignments that do not require any programming work, you will be handing in a PDF files, so it doesn't matter where you're running the svn commands; feel free to keep an addition checkout of CNetID-scivis-2015 in a Linux environment where there is more persistence to your files.
- We therefore use an environment variable $SCIVIS to identify where you scivis-2015 checkout is. Set $SCIVIS to the full path of your scivis-2015, ending with "scivis-2015".
- The easiest way to set this up is to create a directory that you'll use for for SciVis coding, such as with:
And thenmkdir scivis-workOnce you are in scivis-work or whatever directory you will use to contain your SciVis coding, you run the following two svn checkout commands; first:cd scivis-workand second, after replacing "CNetID" with your CNetID:svn checkout https://phoenixforge.cs.uchicago.edu/svn/scivis-2015/ pushd . cd scivis-2015 export SCIVIS=`pwd` cd teem-install/bin export PATH=`pwd`:${PATH} popdsvn checkout https://phoenixforge.cs.uchicago.edu/svn/CNetID-scivis-2015/- From then on you really only need to know three or four svn commands. You execute these commands from within the directories created by the svn co commands above.
- For the scivis-2015 project, the only command you'll ever need is
svn update- For your CNetID-scivis-2015 project, you'll need:
to see files that we distribute to you (typically stubs or templates for the files you'll have to edit further). You'll hear on the mailing list when you have to do this. To add (hand-in) file X, you'll first need to dosvn updateonce, and then for all subsequent updates to X,svn add XTo see if you have local uncommitted changes, run:svn commit XThis lists files that have uncommitted changes (marked with an "M"), and files that have not been added or committed (marked with a "?"), called "untracked" files in SVN.svn status- Because svn commit is how you are handing in your work, be careful with it. Its proper use is your responsibility. In particular:
- If you haven't done an svn add and svn commit, it hasn't been handed in. Use svn status to see uncommitted changes and untracked files. Make sure that you have done an svn add on all the files you want to hand in.
- You can double check that the files you think you have handed in, have really been handed in. Associated with every per-student subproject is a web-based view of the SVN repository: https://phoenixforge.cs.uchicago.edu/projects/CNetID-scivis-2015/repository, but that URL won't actually work until you replace CNetID with your CNetID. To make this simpler, the directories in your CNetID-scivis-2015 will include a 00-checkme.html file that contains a link to a web page that shows the contents of that directory in the SVN repository. Use this to confirm what the graders will see when they use an svn update to collect your files, and to make sure that you have not submitted an empty ("0 Bytes") file by accident.
- Avoid accidentally changing files and running svn commit again, after the deadline. The graders do not want to do detective work to see if some files were committed by the deadline, but others were not. The time that matters for determining the lateness penalty is the time (on the SVN server) of your last commit within a given assignment subdirectory. You can prevent accidental late hand-ins by not making any changes after your final svn commit; that way there are no changes to commit.
- "What time is it on the SVN server?", you might ask, if you suspect that the SVN server's clock is running fast, thus putting you at a disadvantage. You can figure this out, well before the deadline. After a local modification to file X, you can do something like:
The top entry in the "svn log" output contains the SVN server's record of the commit time, which you can compare to what your local computer reported via "date" just before the commit.date svn commit -m "time testing" X svn log X