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, and 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.
- If you already know and prefer git, that's good that you know something about version control. We will be using svn. Experience has shown that when students make git forks of our svn repositories, it creates confusion.
- 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-2013" project. This will be used to distribute files (such as 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-2013", where "CNetID" is your CNetID. You should see your per-student sub-project listed at the "scivis-2013" 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-2013" 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. Email the scivis-2013-teach list if you are having a problem with this.
- We want to allow code in your per-student "CNetID-scivis-2013" sub-project refer to datasets in the top-level "scivis-2013" project. But we don't want you to copy those datasets into your sub-project (and then hand in those copies, creating grading hassles).
- We therefore want the "CNetID-scivis-2013" and "scivis-2013" projects to be checked out alongside each other, as sub-directories of the same parent directory. This way their relative locations will be predictable (for all students), and your the project code can use something like "../../scivis-2013/data" to always refer to the same dataset directory.
- 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-2013/svn checkout https://phoenixforge.cs.uchicago.edu/svn/CNetID-scivis-2013/- 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-2013 project, the only command you'll ever need is
svn update- For your CNetID-scivis-2013 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-2013/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-2013 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