Tuesday, November 1, 2011

The Test

The siren song, that is svn, has been tantalizing me for the duration of this class. It seems like it'd be great, but then it steers my programming ship directly into a cluster of rocks. Needless to say, my relationship with svn isn't the best, but I think it's just the context in which I'm using it that makes me want to avoid it. 


For those that don't know, svn is short for subversion, and it what is called a version control system. What this does is let many people work on the same project from different computers, potentially at the same time. When you get done with what you're working on, all you have to do is commit the changes you've made, or files you've added, and then everyone else can update the version they have and see and/or edit what you committed. In theory, this sounds great, but what happens when two people are working on the same file and both try to commit it? This is only the first of a few problems that I've encountered with it. More examples will follow. 


As I said earlier, svn is tantalizing. What i mean by this is that it sounds great on paper, and maybe it is great if everyone working on a project that is using it fully understands it, but in practice, for me, it hasn't worked all that well. I concede that I might just think it's stupid because I have done almost all the work on the project in the presence of my partner, and thus have never actually needed to use it. It could also be that I am not the most adept svn user and thus do not understand why I get errors like this:
svn: Commit failed (details follow):
svn: Server sent unexpected return value (405 Method Not Allowed) in response to MKCOL request for '/svn/F11C3081-40/!svn/wrk/5f9b1812-ca24-41bd-95f3-0f07f2abfb3e/project/tags/Iteration2'
I still don't completely know what that one was telling me. 

There is also the problem of conflict resolution. For those who haven't used svn, when more than one person tries to make changes to the same file, you get, what svn calls, a conflict. This can be resolved by merging the two files(although this is something that has to be done manually, as svn does not give you the option when a conflict arises), just using the file you're trying to add, or just using the other person(/people)'s file. If you and the other person making changes were working on different parts of the file, the merge function works great. In the more likely scenario, however, you and your teammate(s) were trying to fix some bug, and both thought you had the solution to it, so who's do you go with then? Of course both people would just use the file they tried to commit, because they both think they are right. This works fine if they are, in fact, right, but if they aren't, people get unhappy when you overwrite the work they've been doing. 

The last problems I'm going to talk about are server problems. I'm not going to go into much detail on these, because I have no idea what causes them or how to resolve them. What I will say, though, is that it is terribly inconvenient when you try to commit something, and it tells you it can't because the server is down. I don't know about everyone else, but when I get error messages regarding servers I pretty much just call it quits, because I have no idea what I can do about it. 

Having said all that, I think svn could be a great tool if everyone working on the project was properly instructed in the workings of svn, and also if everyone had their own separate files to work, as to not cause conflicts. I'm not sure if that's actually a very likely scenario, but it would be the ideal one. So despite my own personal problems with it, I'd recommend it if you're willing to take the time to get to know all it's workings, and are fairly adept with computers. Personally, however, I'm going to tie myself to the mast as to resist the allure of its song. 

8 comments:

  1. I've also had a problem with the SVN servers this semester. I was trying to commit some files that I edited on for an iteration so my partner could continue down his way. I had to resort back to the old way of emailing the files.

    Ryan Franklin

    ReplyDelete
  2. I'm not sure if this is a server problem but I did encounter an "unusual" phenomenon while using Subversion. At one time I did the checkout from the repository to my local copy and everything was fine until after I logged out of the cselabs machine and re-login to the same machine within a few minutes, one of the directories that I previously checked out was gone to nowhere and I had no idea why that happened. Perhaps it's just me who is still not yet sure how to deal with Subversion, other that to find it to be inconsistent.

    Lucas Low

    ReplyDelete
  3. I've also had my fair share of problems using source control. My problems have not been with SVN, but with setting up repositories for other classes. The first time around I tried setting up a Mercurial repository that would be hosted by bitbucket. Mercurial is written in C and Python. When I tried to set it up on the CSE labs computers, I noticed that Mercurial is installed, but the correct version of Python is not. Needless to say, Mercurial did not work on the lab computers. I had to use the repository on my mac, and manually copy over the files for the remainder of the project. It defeated the purpose of source control. Instead of trying to get Mercurial to work, I switched to Git. Maybe switching to a different version control system will change your mind about version control.

    Dylan Bettermann

    ReplyDelete
  4. I have had good luck with subversion so far, but this could be that me and my partner, like you and your's, often worked side-by-side instead of on separate computers.

    However, I have heard that this classes' repositories are spread across multiple virtual servers and some of those servers have been filling up. That doesn't look like the problem with the error message you've shown us, but hey, computers can be cryptic sometimes.

    I wish you luck with Subversion throughout the remainder of the semester, and if necessary, beyond that!

    -Derek Anderson

    ReplyDelete
  5. You have a point Matt, SVN does have lots problems which can in turn cause us students to loose valuable points on important assignments; It is something I too wrote about, perhaps we should all discuss this with the Professor.

    Edem C Sessou

    ReplyDelete
  6. SVN is obviously not perfect and it seems as though many people have been having strange problems. My partner and I had problems with files not being updated correctly. I wish there was a better software we could use, preferably something with a GUI to help us see what is going on.

    Jon Anderson

    ReplyDelete
  7. Just with every other piece of technology, SVN works great if everyone involved completely understands what's going on, and communicates with each other. Unfortunately, just like every other piece of technology, no one really understands how to use it. When coding something, you never assume that the user will always give correct input, you code assuming they're dumb. I feel like SVN wasn't designed this way, and as a result, the merge function in particular is fairly lacking.

    It gets the job done, but it certainly isn't pretty while it does it.

    -Will Myott

    ReplyDelete
  8. I feel that I too may not be using svn correctly or to its fullest capabilities. But overall I think its better than having to be side by side with your partner all the time.

    ReplyDelete