Is it possible to automatically make check-outs from any VCS?

Let's take a web development environment, where developers checkout a project onto their local machines, work on it, and check in changes to development.
These changes are further tested on development and moved live on a regular schedule (eg weekly, monthly, etc.).
Is it possible to have an auto-moveup of the latest tagged version (and not the latest checkin, as that might not be 100% stable), for example 8AM on Monday mornings, either using a script or a built-in feature of the VCS?

18.08.2008 13:53:54

Certainly, but the exact product may be dependent upon the VCS you are using.

What you might want to do, is have a a few different branches, and migrate up as you progress. E.g., Development -> Stable-Dev -> Beta -> Production. You can then simply auto-update to the latest version of Stable-Dev and Beta for your testers, and always be able to deploy a new Production version at the drop of a hat.

18.08.2008 14:00:29

Anything you can do with cvs can be done with the command line, and I am pretty sure svn is the same. Just work out the functionality you want and stick it in a shell script or a command file.

18.08.2008 14:09:38

Yes, it is possible. This is usually a feature provided by continuous integration tools. Typically they will get the latest source from version control, build the project, test it (running unit tests) and possibly deploy it on a (test) server.

If you don't require all those steps, you can easily do the same thing with some shell scripting or similar (i.e. checkout from version control and copy to the production folder on the server).

18.08.2008 14:19:35

The only two I have experience with are SVN and Mercurial. For Mercurial, you specify which branch you want it to update from (let's say default) and then whenever you merge a branch into default, you can just have the server run:

hg update

Which updates your repository to the latest version of the branch you set it to.

SVN is the same concept, you only check out which branch you want initially

svn co http://host/repository/branchname/

then you have your server update that with a cron job, ala

svn up

In theory though, any VCS that supports branching (all the good ones do : git, mercurial, SVN, etc...), should be able to do something similar to this.

18.08.2008 14:23:59

I doubt many VCSs provide this ability directly, however it should be very simple to script. Either a date or branch based checkout.

18.08.2008 14:26:43

As a follow up,

I'm of the opinion that an app should do one job and do it well. Often if you start combining tools into one product, none of them will shine, and most of them will be "'alright, sort-of".

If I was doing something like this, I would get myself something like SVN, ANT, and Subversion Ant Library ( - your millage may vary though.

18.08.2008 14:50:34