Subversion: Managing files among multiple team-members
Note that this article is about managing actual source-files in a project (for example programming), not collaborative writing and the likes (for which I would recommend applications like Buzzword or Google Docs).
Fact: Having several people work on the same file within a project can be a real pain in the shades.
At the course I’ve seen people ’solve’ this issue by using Blackboard, FTP-servers, working from one shared portable harddrive, copy/pasting files around, and even uploading files to a Wiki (what!?).
It was not until my internship began that I was introduced to the brilliant concept of Subversion (sometimes also abbreviated as SVN).
Basically, Subversion is a system that lets multiple users work on the same file, with less hassle. With a client-application users can have the shared file-structure in a folder on their own computer and easily update the files after they’ve made changes.
In the rest of this post I’ll walk you through making a project ready for Subversion, let’s get started:
Do note that most of the following is mostly windows-oriented (I’m still stuck with a pc here), with a view osx-hints.
Get this: Hosting
In order to manage your files with Subversion you’ll need a central point where all of your project its files will be stored: hello Subversion hosting. Now my guess is that not all of you will feel that setting up a Subverison server is fun fun fun (I know I don’t), but do not fret: hello Assembla!
Assembla is a website that “provides tools and services for building software quickly using global teams”, including Subversion-support! Now Assembla is probably not the only site that provides free Subversion hosting, so feel free to make use of another service, otherwise go sign up for an Assembla account and login.
Done? Good! Now proceed by creating a new space for your project (‘Spaces’-tab on your start-page and then the ‘create a new space’-button). Give your project’s space a cool name and a nice URL and make sure that you at least select the first option (‘Software developers (trac)’). After that just keep hitting the ‘Next’-button and fill in your preferences.
Install that: Client
Assuming that you’re not into managing your subversion files through the commandline, you’re probably going to want to install a Subversion client-application. Let’s use TortoiseSVN (if you’re on a mac then I think SvnX should be a good alternative), simply download (choose the 32 bit installer if you’re unsure) and install it. The installation-wizard is über-simple and not much more than hitting ‘Next’ a couple of times, I trust that you’ll be able to manage that.
Do it: Usage
Now that you’ve got your own hosting and installed a client you’re all set to go. Create a new folder for your project on your computer, right-click it and hit ‘SVN Checkout’. A new dialog will appear:

Right now, the only thing we’ll want to fill in in this dialog, is the repository-URL, let’s go get it. Go back to your Assembla start page and go to your project’s space. On the current tab (‘Wiki’) the Subversion-URL for your project will be displayed:

Paste the URL into the repository-URL field in the Tortoise checkout-dialog and hit ‘OK’. A new dialog will appear telling you that data is being downloaded, once it’s done, hit ‘OK’:

If all went well (and if you have your system set to display hidden files/folders) then your project-folder will have one new folder called “.svn”. Every subversioned folder will carry an .svn-folder (they keep track of subversioned files), so get used to those
Now let’s start tossing files around. Create a new file in your project-folder, right-click the project-folder and select ‘SVN Commit’. A new dialog will open with an overview of created, changed and deleted/missing files since the last time your commited/updated your project, this time the only change is the file you just created, make sure it’s selected and click ‘OK’:

Mind that as a best-practice you should always make sure that the file you edited was in fact the latest version of that file.
Now that you’ve commited the changes you made, another team-member (who has also executed a checkout of the same project) can right-click the project-folder and hit ‘SVN Update’ and your changes will be downloaded to that folder. Isn’t it beautiful?
Here are a few tips that you might want to consider baring in mind:
- If you want to turn your subversioned folder back into a non-subversioned folder then delete (move to trashbin, not ‘real’ delete) all the .svn folders in it.
- If Tortoise somehow doesn’t recognize a newly created folder, then right-click it and select ‘Add…’ from the ‘TortoiseSVN’ menu.
- If you’re using Assembla and you’re a compulsive control-freak (like I am), you can verify that your Tortoise installation isn’t messing with your mind, and look up the Subversion-URL in your browser.
- You can commit/update an individual folder by simply right-clicking that one instead of the project-folder itself.
- It’s best not to update a folder while there are still uncommited changed files in it.
- Agree with your team-mates on regularly updating and commiting files (for example update in the morning, commit at the end of the day).
Of course there’s so much more about Subversion than what I wrote in the above, but this post is already getting a bit too lengthy.
If you have any questions then please do not be shy to ask them through the comments.
December 6th, 2007 at 10:55 pm
[…] Assembla - Although we mainly use Assembla as a server for file-synchronization among groupmembers (SVN/Subversion - I wrote a post about it here), it’s much more meant to be used as a workspace, much like ActiceCollab. Do note that Assembla seems to offer much more of a robust and advanced service, whereas ActiveCollab feels much more polished and easy to grasp. […]
March 6th, 2008 at 4:19 pm
[…] Dan bij deze! Mijn eerste post. Aangezien toch van mij verwacht wordt dat ik enige interresante dingen met mijn medestudenten deel zal ik vandaag eens beginnen met onze setup. Of setup, ik weet niet zeker of dat de goede definitie is. Als iemand suggesties heeft hoor ik het graag. Let us begin!SVN, ik heb het leren kennen en mee leren werken in het afgelopen half jaar tijdens mijn stage. Het is een techniek waarmee een team op een makkelijke manier aan dezelfde bestanden kan werken. Noem het toeval, ons product bestaat uit vrijwel niets dan bestanden! Een ideale combo dus.Nu was het alleen even zoeken naar de ideale SVN-server. Ik heb wat gerommeld met iets lokaals, maar daar werd ik ook niet echt blij van. Laat staan mijn teamleden wanneer ze een keer thuis aan de slag willen gaan of als ik mij in een bestolen/zieke staat zou bevinden. Gelukkig kwam ik op de blog van ex-speakonomiër Ruben de prachtige gratis diensten van Assembla tegen. En binnen enkele minuten was onze repository aangemaakt.Vervolgens de SVN-client. De client die op mijn stage-bedrijf gebruikt werd was Subclipse als plugin binnen de IDE Eclipse. Deze combinatie vond ik beter werken dan alle zelfstandige en geplugde clients die ik later heb geprobeerd. Bovendien bestaat er een stevig verbouwde versie van Eclipse, genaamd Aptana, die een hele reut extra tools en functionaliteiten mee levert om dingen met Ruby on Rails te ontwikkelen (met de plugin RadRails that is). En jawel, noem het wederom toeval, Speakonomy is er één; een heuse Rails-applicatie. Nou moet ik zeggen dat ik wel negatieve berichten over Aptana heb gehoord met betrekking tot de snelheid en stabiliteit, maar toen ik zonder mijn terminal te openen met 1 klik de Speakonomy server aan de praat kreeg was ik om.Als macbook-bezitter (de enige binnen mijn team!) wil ik hier graag nog aan toevoegen dat MAMP toch wel op een hele simpele manier een mySQL server toevoegd aan het geheel, echt een aanrader. Iedereen die bovendien in het bezit is van versie 10.5 van het mac-besturingssysteem beschikt met bovenstaande tools over een complete ruby on rails werkset, want rails is daar al bij mee geleverd.Om samen te vatten:Assembla + Aptana + RadRails + Subclipse (+ MAMP + Mac OS 10.5) = een voorlopig utopia!Mocht dit allemaal iets te snel of bondig zijn gegaan, schroom dan niet mij aan te schieten of een comment te plaatsen, ik kan het wel hebben. […]
March 21st, 2008 at 9:31 pm
Wow! What a great tutorial! Mind if we link to it from Assembla?
March 21st, 2008 at 9:33 pm
Hey Amanda, no not at all, quite to the contrary, I’d love to see a link to this post on assemba.com