CS384 HW#1

Due: Wednesday Jan 18 1:30pm, via svn repository electronic committal
The teams and their names are (in alphabetic order):
phunctional
Armstrong*/Curtis*/Evans*/Klas*/Major*/Wells/Bowles/Krussel/Weir
pummel
Beasley*/Dean*/Fletcher*/Rice/Johnson/Norris/Enfield/Summers

This is a team assignment. Turn in (via SVN commit) a {teamname}/doc/384-hw1.html that summarizes your activities, including a list of individuals' and subteams' tasks and outcomes. (It is sufficient to record DONE when the outcome is 100%).

Do the following exercises, culminating in setting up our initial SVN repository for our project work.

  1. Skim the Subversion book at http://svnbook.red-bean.com/
  2. Skim the SVN tutorials at
  3. Create a SVN repository. This will serve for demonstration purposes during the first few items in this assignment, then you can delete it.
         cd ~
         svnadmin create 384
         du 384
    
    Note the number reported by "du 384". Approximately how many kbytes does an empty SVN repository occupy? "Empty" repository is kinda big, but no big deal.
  4. Create a (temporary) SVN project in your repository. To do this, make and cd into a temporary directory ~/yourproj, and put a "hello, world" program in a file named (for example) hello.java (or hello.cpp, or whatever your preferred language is), and a makefile that can compile that program. Such a program directory is inserted into the SVN repository by running:
         svn mkdir file:///net/ugrads/yourid/384/yourproj
         svn import file:///net/ugrads/yourid/384/yourproj
    
    This will create a copy of your whole directory and any subdirectories, inside the repository. Note that you should make sure you don't have any junk files (.o, .class, .u, etc.) before doing an import. Note that at this step and many later steps, depending on your executing shell and environment, you may get an editor popping up asking for a comment to explain what you are doing, or an error message if svn can't tell what editor to launch. A -m followed by a message in quotes is an alternative way to supply the log with a record of what you were doing. See the example "svn commit" below for an example of using -m.
  5. Test your repository by creating a new copy of your project elsewhere.
         mkdir ~/test384
         cd ~/test384
         svn checkout file:///net/ugrads/yourid/384
    
    This will create a subdirectory under test384, named yourproj, that contains your distribution copy. cd into yourproj/ and "make" the program there. Edit the program (add a std:cout << "hello svn" to its main() function), save your change, and type
          svn diff main.icn
          svn update main.icn
          svn commit -m "added hello" main.icn
    
  6. Delete the test directories you created.
  7. Run the command
    groups
    
    to verify that you are a member of group cs384_svn (you should be already) along with your other groups (group ugrads, etc).
  8. Checkout a current copy of the your project. To do this change to your home directory (or a subdirectory of your choosing) and do the checkout, which will create a project subdirectory.

    Local
    cd
    svn checkout file:///usr/local/repos/cs384_svn_s12/teamname
    
    Remote The following worked for me but may need to be tailored to your environment!
    cd
    svn checkout svn+ssh://username@wormulon.cs.uidaho.edu/usr/local/repos/cs384_svn_s12/teamname
    
    Windows: you may have to follow these instructions to tell ssh about a non-default shh tunneler such as plink.exe or ssh2.exe

  9. Add (and commit) a corrected, amended version of your SSRS and SSDD to the SVN repository in {teamname}/doc/ssrs and {teamname}/doc/ssdd subdirectories. You should add/commit makefiles to build .pdf versions from your latex source. The documents should include all UML work in appropriate locations. All UML diagrams should be sized appropriately, introduced to explain what they explain, and followed by detailed text descriptions of the major components in the diagram. The UML diagrams are added/commited as separate files (you should add/commit both source and .png images) and then incorporated into the LaTeX source using \includegraphics or a similar LaTeX command.
  10. Each member of teach team should commit a line to {teamname}/src/credits.cpp containing a string with their username. Credits.cpp will just look like
    char * credits[] = {
       "your name",
       "your teammates' name",
    };
    
    with all team members' names in alphabetical order.