Version control system



  • Now that there are 4 coders and 2 designers in my company we have started thinking how we need some kind of version control system (yeah, I know, we should've thought of that before). Nobody has any experience with any VCS, so we are free to choose the best tool for the job. But, the big question is should we use SVN or get some kind of distributed system? Also, does anybody have some suggestion where we can learn this, and some best practices? Especially problematic is the fact that all of us use Dreamweaver, and while coders could switch to Eclipse or some other tool that has good integration with version control systems, designers certainly cant. And besides the split Design/Code view is damn useful. So, any tips regarding VCS and web development? If we go SVN how would we accommodate the existence of devel and live servers?



  • I work on tools for video games, and the problems are pretty similar; we have designers and artists who aren't generally comfortable with version control tools, who use big and complicated software to do their work. 

    I'd recommend perforce if you can afford it.  There are instructions on the perforce site for using perforce with dreamweaver (basically, perforce acts as a virtual FTP server using p4ftp), but perforce has good integration with eclipse and emacs and passable integration with visual studio as well.  

    There is a good O'Reilly book "Practical Perforce" that's decent at explaining the most important points. 

    When using perforce as a repository for live and development code, you'll find yourself using branching heavily, and this works pretty well.  Perforce branches aren't very expensive, and allow each branch to both operate autonomously and receive proper updates from other branches to which it's related.  Of course, if you create conflicts, you'll have to solve them yourself, but perforce is better than average about smart merging.  You can write some simple scripts to automatically deploy code that was recently integrated into the server branches as well; using counters and the review command as in the 'p4review' python script.




  • I would go with Subversion with the Tortoise SVN client, and Ankh if you are using VisualStudio (I belive there are also Eclipse plugins?)

     1.) It's free, it's fast, lots of people use it, and it's easy to setup, works over HTTP / HTTPS, can use ActiveDirectory or custom authentication.

    2.) With Tortoise client, if you can use Windows Explorer, you can use subversion!

     3.) Lots of 3rd party tool support...

     Perforce is great, might be overkill though...

      

     



  • @Grovesy said:

    1.) It's free, it's fast, lots of people use it, and it's easy to setup, works over HTTP / HTTPS, can use ActiveDirectory or custom authentication.

    This is probably the best reason to use subversion if your team is inexperienced using and administering version control software.

    @Grovesy said:

     Perforce is great, might be overkill though...

    You may be right, also there are a lot of fine tradeoffs to using one or the other.  I find perforce easier to just set up and use, but subversion easier to do day-to-day administration on. 

    Among the artists I've had contact with, p4win is more understandable than TortoiseSVN. 



  • Actually, sorry I must appologise, I've used two variants of Perforce, SourceDepot and Vault (both of which I belive are compatible with the perforce protocol).. but nor Perforce itself... but I think the primary concepts follow through on both products.. (excepts SourceGear Vault's collection of tools is pretty crap) I think the story goes that MS brought the sourcecode from Perforce, made that into SourceDepot (an internal tool which much much later became TFS)... some people who worked on the project went of and created Vault.. So I know of Peforce, and know a couple of Perfoce like copies very well..

    Anyhow 

    The thing I like about Subversion, is that it as a source control program it is 'stupid simple' which is the kind of software I like, I can't remember any moment where I've gone 'If only it could do...', I find it very easy to do branches and merges, adminstrate and use on a day to day basis (It took me a while moving form SourceDepot and Vault.. but I like the idea that there is no concept of 'checkout')... i think though, it you are running a boxed software product where you have multiple major versions with multiple services packs and patches in multiple states, then that side of Subverison would be somewat lacking (sure someone would argue otherwisEe)... but if you simply work on a variation of a Live Branch, Just about to go live branch, and Dev / Trunk branch... then it's fine..

    Though, I am a big fan of Tortoise, I have to hates in this world... one is integrated source control into Visual Studio.. for some reason it feels so clunky and 1/2 the time the plugin is so badly coded that it hands VS.net. The other is  thick client source conrol IDE's where you have to go in and manullay checkout files and check them back-in... for me, the thick client seperate IDE is the lesser of the two evils..  I would rather use command line toosl....So when I found Tortoise and Subversion... I could just navigate within Explorer, find the director I wanted to check changed in.. right click.. .commit... comment... go... no conflicts. done.. (and it's all transactional on a changelist.. which is oddly enough if you have used things like VSS or any Serna product such as Dimmensions a luxury!)

     

     

     



  • @Grovesy said:

    Though, I am a big fan of Tortoise, I have to hates in this world... one is integrated source control into Visual Studio.. for some reason it feels so clunky and 1/2 the time the plugin is so badly coded that it hands VS.net. The other is  thick client source conrol IDE's where you have to go in and manullay checkout files and check them back-in... for me, the thick client seperate IDE is the lesser of the two evils..  I would rather use command line toosl....So when I found Tortoise and Subversion... I could just navigate within Explorer, find the director I wanted to check changed in.. right click.. .commit... comment... go... no conflicts. done.. (and it's all transactional on a changelist.. which is oddly enough if you have used things like VSS or any Serna product such as Dimmensions a luxury!)
     

    Ya, perforce integration with VS was so annoying I turned it off.  It must be that the API for source control plugins is a bit gross, otherwise somebody would write one that works well.  I notice that Perforce' visual studio plugin doesn't pick up the current clientspec correctly, causing all sorts of woe.

    p4 command line and p4win are perfectly analogous to svn command line and tortoise, when you're using 'out of the box' perforce. 

    They're good and also don't assume too much.  I'd say the main problem I have with perforce is as yours; that you have to be online to 'check out' a file.  Perforce' documentation and interface encourage integration with other software, and programmers get complacent and call it from inappropriate places (even the UI).  Imagine the sorrow when 100 artists spend an hour with an empty white rectangle where the art tool should be, waiting for a dead router to be reconfigured and put in place, so that perforce can set the 'checked out' flag on a file in the server.  Now imagine the further woe when the router comes back and all 100 do it at once :-).

    Despite this, network outages are rare enough, and if you don't write yourself into such a dreadful corner, the situation isn't bad. 


Log in to reply