Saturday, October 4, 2008

Configuration Management

Introduction
This week's assignment is a continuation of the class' introduction to the tools of software development. To manage the source code throughout the coding phase we are going to use Google Project Hosting which uses Subversion for configuration management. The exercise involved the installation of a SVN client, modification of source code from Professor Johnson's stack project, and creation of our own Google Project page.

Install
Download the latest version of SmartSVN, yes, I have a Mac and enjoy using the machine's UNIX box. Did not experience any problems with retrieving and installing SmartSVN. The installation portion of the assignment gave me the least amount of frustration.

Modify code from Google project
Retrieving and making changes to source code required some effort on my part. SmartSVN, in my opinion is not intuitive, it took a few minutes to figure out how to connect to ICS 413's repository. The area I had difficulty was with setting up the repository profile. I had issues with locating the menu for adding profiles (see the screen shot below), maybe I should have looked at the tutorial first. After a moment of swearing at the computer, I was able to connect and download all the necessary files to make a changes to the stack's source code. Did not find anything meaningful to alter within either the stack implementation or the unit test. The best thing I could come up with was altering the JavaDoc comments in one of the methods. Upon checking for a successful commit, I found the update section of Google Project Hosting a nice feature. I like that everyone can see who did what to the project. That way you can shoot an email to someone for a job well done or lambast them for screwing up the class.


Screen shot of the update page from stack-johnson.


Screen shot of the trunk from stack-johnson.


Screen shot of the changes I made to stack-johnson.


Screen shot of SmartSVN with the profile manager.

Create a new Google project
Setting up a new Google project seemed like an easy task, adjusting the page and adding members to the site. What should have been a twenty to thirty minute task took over an hour. I was trying to commit my stack-arakaki directory into the repository and was repeatedly denied access. SmartSVN, was attempting to open the project site using the http protocol. After poking around SmartSVN, I discovered when attempting a commit the application was using the wrong setting from the repository profile for my Google Project Hosting site. SmartSVN was trying to call up the site using http. After more searching I found the relocate command and was able to change the protocol to https. It was frustrating to spend so much time on such a simple task.

My Thoughts
Configuration management is not a new topic for me, in ICS 212 (program structure), Ravi Narayan introduced the class to source code management on UNIX using SCCS or Source Code Configuration System. Using SCCS on UNIX is not fun especially when you are bad at keeping track of which version of the source code x.x was updated the previous night. Or a programmer may decide to go with a previous version but has no idea which file holds the code that is needed, which will lead to ineffieciency. So having a GUI configuration manager like SmartSVN is sweet, no need to guess where a paticular version of code is ever again.
With regards to figuring out the issues with protocol and profile I just poked around SmartSVN until I found a solution. Did not feel the need to jump on Google and do a search. Despite being frustrated with portions of the assignment I still find this exercise as well as other tasks thus far, to be valuable. I think it is important to have your patience tested every once in a while for two reasons 1) to keep you humble and 2) to appreciate the small victories when learning something new.

Conclusion
Configuration management through SVN is a necessary tool in software development even when the coding team consists of one programmer. The need to keep track of the constant updates made to a project without the by-products of locking or clobbering is crucial to developers. As will save time and headache allowing the programmers to spend more time in developing code instead of managing code.