Working with TortoiseSVN and Google Code Projects

Posted on Wednesday, October 08, 2008
2 commentsAdd comments

This week I began working with TortoiseSVN, “The coolest Interface to (Sub)Version Control” according to its web site. TortoiseSVN provides remote access to code files for the management of the collaborative efforts by a developer group working on a project.

The project used to familiarize myself with TortoiseSVN usage was stack-johnson. This project is remotely hosted at Google Code. Stack-Johnson is a basic stack implementation developed by my software engineering professor Philip Johnson at the University of Hawaii at Manoa.

Learning the Ropes
TortoiseSVN simplifies the tasks of subversion control to a great extent versus using command line arguments, so I appreciated not having to work from the MS-DOS shell. After setting up a C:\svn-google directory from which to work with the code repository files for the stack-johnson project, it was a simple task of checking out the project files. Since TortoiseSVN is a GUI application that is accessed directly from the Microsoft Explorer short-cut menu, it was just a matter of selecting SVN Checkout... from the menu. To complete the checking out of the files requires the user to enter his username and password needed, which is provided by Google Code from the user’s Profile > Settings tab.

The first step any contributing developer wants to take after checking out project files is a check of the build status. In this case, I ran Ant against the verify.build.xml file to ensure the build was still viable from the updates other developers have been contributing to the project.

To understand the edit and checking in aspect of subversion control, I made a minor change to the project by restating the getIterator() method declaration in class ClearStack. It was a trivial change, but this allowed me to see some of TortoiseSVN’s visual cues it provides to developers. Upon checking out of project files, TortoiseSVN flags the files with a green checkmark icon in Microsoft Explorer. Once a file has been edited by a developer that icon gets changed to a red exclamation point. This visually identifies the files or directories the developer needs to check in to the repository.

Checking files back in becomes a simple task as well in TortoiseSVN. Again from the short-cut menu provided by Microsoft Explorer, I selected SVN Commit... to upload the changed ClearStack.java file to the stack-johnson remote repository. Again this process will prompt the user to provide his username and password, however, the user has the option of having his password retained by TortoiseSVN eliminating the task of needing to retrieve the unique and random password assigned by Google Code.

On My Own
With a comfortable feel from the successful use of TortoiseSVN’s basic operations and familiarity with Google Code’s remote project hosting site, I decided to embark on my own. If you’ve been keeping up with my blogs, you should know that I have been working on a similar project to stack-johnson. That project is my stack-reeves project which I have been working on over the past few weeks as I have journeyed through the exploration of coverage testing and manual and automated quality assurance methodologies.

Setting up a remotely hosted project on Google Code in itself is not a difficult task, however, there are some pitfalls to watch out for. I had initially gone through the steps of setting up my stack-reeves project. This had gone smoothly until I decided to reset my project from the Source tab. This caused all the subdirectories to be deleted from the project. I had not uploaded my project files yet, but it caused the branches, tags, and trunk subdirectories to be deleted. There was no direct way to recreate the subdirectories or undo the operation, so I only had an svn directory.

This wasn’t at all what I had wanted, and not knowing for certain if just recreating the accidentally deleted subdirectories in the local repository that I would be uploading to Google Code would be adequate, I decided to delete the project and start anew. Well, this only maked matters worse. First, projects are only flagged to be deleted, and that deletion is scheduled for some undetermined future date and time. This meant that even if I had wanted to recreate the stack-reeves project that I’d need to wait for the personnel at Google Code to drop the project first.

I decided to do some quick searches in the help function provided by Google Code only to discover that even once a project is deleted (by Google Code personnel) that the project name would still be unavailable. I found this completely frustrating that not only was I unable to delete the project as the project owner, but I wouldn’t be able to reuse the project name once it actually gets dropped from the hosting site.

I went through the process of creating another new project, stack-ronnreeves and ensured I made none of the mistakes that led to my befuddlement in my first attempt. The stack-ronnreeves project can be accessed here.

Conclusion
Overall, there were no major challenges to using TortoiseSVN or Google Code. The GUI interface and integration of TortoiseSVN in Microsoft Explorer makes it a trivial learning task for experienced users of the Microsoft Windows OS. Google Code is adequate for a free, open source project hosting site, but it appears to me that one of the main challenges it faces is resolving the issue of providing project owner’s true administrative rights.

Comments (2)

Stefan Küng  

You can ask the Google guys to reset your repository (i.e., you're starting from scratch).
Just go to
http://groups.google.com/group/google-code-hosting
and post your request there. No need to delete the project.

Ronn Reeves  

Stefan, thanks for your comment, it is most appreciated. You are absolutely correct in that is the process I should have taken under "normal" conditions. This project was for an assignment due the following day, being my first experince with Google Code, and that I'm in the Hawaii time zone (GMT-10:00), I was unsure when my request would have been addressed. So, I opted to create a new project to complete my homework assignment at that time, and it gave me the opportunity to go through the process a second time. I should have explained this further in my blog; thanks for pointing this out.

Subscribe to: Post Comments (Atom)