My experience of SVN


I never used source control before this class. In Lab01, when I got started on it, I thought it was just a repository and my partner and I could put our work into the same place, and then the TA could check our work from there. During Lab01, we were learning the basic command of svn(Subversion), a popular source version control system like CVS. I found that svn was very complicated and that I did not see any advantage when using it. It takes us lots of time to build a workspace and checkout. However, while deeply studying, I found I am totally wrong, since svn is actually pretty helpful and easy to use.

First of all, a source version control system is not only a simple repository, but a place that can store all the various revisions of the ideas that we commit. Therefore, it provides a project-wide undo button that we can easily roll back. For example, in Lab05, we erroneously replaced our source code "readInput.cpp" file by an automatically generated one. We were so worried at first about it, but it was svn that we were using. Consequently, we typed "svn revert readInput.cpp" in the command line to revert the local changes to the file.

I think the most beneficial feature of Subversion for us is that it allows us to edit files, same or different, in different places at the same time. For example, after checking out the files from the repository to my laptop, I can work without the CSE lab machines. So can my partner. Therefore, we do not need to schedule and find a place to work together all the time. We usually just split our workload and then work on our own time. Using update can help us get the latest files from the repository while using commit can help us submit our changes. Also, any conflict of editing the same files is easy to handle since version control provides a good conflict resolution system. For instance, sometimes I add small changes to our programs, just testing the functionality in my workspace, but do not commit the changes. Before my next update, Keng may have already edited the same files. It doesn't matter, because when I updating, svn will change the name of every conflict file, and every conflict part in the programs will be marked observably.

Our project consists of lots of iteration. The same files may have different revisions. Tags help us keep track of these files which are from different iteration. For example, we first work in the mainstream directory. After we finish the iteration, we copy the files to a new directory in the tags, like the "Iteration1", "Iteration2" and "Lab_06" directories that we already have. If bugs arose in one tag, we will just work in the specific tag as if we were working in the mainstream.

In general, Subversion is a really helpful source control system that we cannot work without it.


Yeah, I really agree with you that subversion is a really helpful source control system. But the storage maybe a problem, you know our svn cannot work last week since we commit too much stuffs Fan Yang

Yes. A source version control system allows us to edit files and to communicate with each other efficiently when we are thousands miles away. This is a big advantage for all programmers--we don't need to stay with our teammates all the time when we are working on a project! No matter where you are, if you finish your part on time, others can see your updates immediately!

Yujing Sun

I like all of the benefits that you noted about using SVN. I too found it to be quite confusing when first starting out but after I used it for the labs, I found it to be quite helpful. Even though there are some downsides to using SVN, like conflicts, I agree that it helps a lot when working on a project.

-Zachary Panzer

Leave a comment

About this Entry

This page contains a single entry by xuxxx728 published on October 31, 2011 11:09 PM.

Benefits and challenges when working in team was the previous entry in this blog.

Why Unit Testing? is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.


Powered by Movable Type 4.31-en