To be honest, I have no clue with what version control software is before taking this class. Indeed I am glad to have Subversion this great tool introduced to us all in this class because not only it provides great functionality to our iterations/projects, it also broadens my way of thinking how technology advancement can be so rapid.
Version control/source control is a system specifically designed for controlled access, information changes and storage of code and documents for software developers who work in a team. Subversion(svn) is exactly an instance of version control software. What I think is important to share with you readers are the advantages offered by Subversion.
Apparently the most significant advantage that I figured is that you can submit your updated files to a repository(online data warehouse) via a terminal. I still remember those days which I had to keep emailing myself the updates of my codes over and over again. With Subversion, not only you can store your data/code online, there is this project-wide undo button that you can always roll back to where you previously were to get rid of a big mistake. This is possible because Subversion keeps a record of changes made over time and thus you can easily check out the codes you submitted at a specific time(although I'm still not very sure how to do this).
Other than that, Subversion also allows multiple software developers in a team to work on the same project in a controlled and more convenient way. Say my partner just did some changes on the code and tagged these changes as "Revision #x". I can easily check out the corresponding tagged, revised codes and add/merge my code with his/hers. In case I somehow messed up or maybe even accidentally deleted my local copy of the code, I've always got a back up code stored securely at Subversion. Furthermore, the log function is very useful too. It can display the history of changes made to a file or directory associated with a time stamp. In this way, it becomes possible and easier for us to track down who has made the changes or possibly broken the code at a certain period. With regard to iterations grading in this class, this log function helps to avoid any unwanted possible arguments made between the TAs and us if we have issue with our code submission. This is because every submission had been timestamped and the TAs can easily pull out what we'd done in the latest submission before the due time and just grade that particular submission accordingly. Well, given that you submitted your code correctly.
Totally agree with not having to email code around. I remember doing that in 1902 and 2021, man was that a pain. I could never remember where I had left off or if I even had the most up to date version. Subversion definitely is a big plus over email.
ReplyDeleteEthan Waytas
Great description on advantages of version control systems!
ReplyDeleteAlso, a few things I think we should pay attention to when using VCS's:
- Only commit working code.
- Get ready for conflicts, best avoiding this at first place by good work division.
- Always post meaningful logs.
@Ethan: agree on the email point. Back there when using email, it was very hard to figure out which was the latest version and which was the latest working version.
-Huy Tran