Excellent advice, Littleman. I've been doing this for years now, and it makes a huge difference in how much I can get done in a given ammount of time. My boss at my day-job has no idea how much extra it costs her to get things done because she won't let me have a Linux machine to develop on!

My biggest fear was and probably for most peoples is you can't mess up what you got. So as a alternative to a dual boot, grab an extra hard drive, pop your case and swap the drive plugs. Install your favorite version of linux and play. I keep a drive that I use for beta versions and testing. It takes less then five minutes to switch the drives.

I have started to put my sites in CVS - the Concurrent Revisioning System - even the sites only I work on. CVS comes from [cvshome.org...] . It is open source and free for all. It exists for windows too.

CVS has a rather steep learning curve, but the certainty that the files you're playing with are only a copy of something more stable is very reassuring.

With CVS you have a working copy of the files on you own system, while the main copy resides in the CVS repository, which can be on another computer. When you have made changes, you can see the changes easily with "cvs diff", you can update them (if they have been changed somewhere else) with "cvs update" and you can add your changes to the repository with "cvs ci" (check-in).

CVS automatically keeps track of concurrent development by several persons, so a checkin is only possible if your copy is up to date, and an update will merge the changes in the repository with your changes automatically. If there are conflicts, you're told so and they are clearly marked in the files.

There are many more advanced functions, for example to create branches in the development tree, which is useful for making experiments. If the experiments work out well, the changes can be merged into the main version (the 'trunk'). Otherwise they are just left, and the working copy reverted to the main version.

I have the CVS repository on a separate server and mirror it to another location hourly, so I always have an extra backup, should misfortune strike badly. I update the site on my own server directly from CVS, where I can use the functions of CVS to switch the server quickly between different version of the site, to try experimental branches for short periods or to revert to earlier versions, if problems arise.

Once you're used to working with CVS, it is indispensable. The only problem is the rather steep learning curve.

seindal, CVS cannot handle image files and that's a major factor of web development. It can store them, but you won't be able to track changes and merge revisions of binary files.

Also, the concurrent part really loses it's point with HTML.

When you have a c file with many functions, and one developer changes some function at line 100, while another one changes another function at line 500 - it's not that hard (most of the time) to merge the changes. With HTML, if you change some table layout at the top of the page - it affects the whole file. Besindes, how many sites out there have more than one person editing the same HTML file at once? Companies with such demands need something dynamic :)

It's a great tool, but I find it much easier to keep archives of HTML file versions than to create repositories.

I use CVS as well. It is rather comfortable to know that when things don´t work out you can revert back to a previous version. I keep my XML [w3.org] sources, PHP [php.net] code and Perl [perl.com] CMS in CVS. When my CMS uploads a new version it tags all XML [w3.org] and PHP [php.net] sources and the state of the CMS. That way I can revert back to any previous version of my websites.

Of course this will not work quite as good when you store all your content in a db. But I like to keep the more static content in XML [w3.org] files in the file system. Only the data that is changed dynamically via <added>a</added> web interface is stored in a db.

Even if you are running a Windows desktop it´s well worth the money to buy a simple box and install GNU [gnu.org]/Linux [kernel.org] on it. Once it is running you won´t even need a screen.

We use MS SourceSafe on a LAN and upload to our remote server from 'master copies' deployed from SS, and will, when we have time, set up a linux box locally for exactly the reasons outlined above. At that point we'll probably look at CVS too.

Just wondering if anyone has any take on SS versus CVS, or experience of using both, with relative pros and cons?

bcc1234 is probably right that a mostly static html site won't gain much from using CVS, but most of my sites are more program that static html. It seems my way of doing things is very much like Andreas' - programs and html-templates in CVS and dynamic content in a database.

I partly use CVS simply for backup reasons, instead of having .bak and .old files and directories all over.

Some resources and different ways of having Windows and Linux or FreeBSD on the same machine:

1) VMware. Allows you to have multiple operating systems booted up *at the same time*. No rebooting to switch from one to the other. Cost around $300

2) System Comander. Software that helps you to multiboot several operating systems on one box. Cost around $60 or so. This is really helpful if you are limited to one hard drive. It also allows you to resize existing Windows partitions. This means if you have Windows taking up your entire "C" drive, you can reduce the space Windows takes up to make room for installing Linux. Keep in mind there ARE versions of Linux you can install within a Windows partition. I don't recall the distro though. Maybe check out distrowatch dot com or linuxiso dot org -- or Google, of course!

Of course, it would be prudent to back up your current Windows installation with Norton Ghost or some similar "image copy" program before you go resizing your current windows partition!

3) Hard drive selector. These are physical devices which allow you to switch from one hard drive to another. So if you don't want to mess with your current hard drive having Windows, you can install a hard drive selector (and a second hard drive you install Linux upon of course) and then switch between hard drives easily. Some models let you lock out the hard drive not being used, so you can't mess up the hard drive you're not using.

Two I'm familiar with are the NickLock and the TRIOS. Here's a link to a pic of the NickLock at tigerdirect dot com; cost $20 and fits into a 3 1/2 inch bay:

There are two model TRIOSs. Both models allow you to switch between three hard drives. The first model fits into a 5 and 1/4 inch drive bay. You really need to worry about how many open 5 and 1/4 inch drive bays you have with that model. I have a Lian-Li PC-70 case, so it's no problem here, but YMMV.

In many computer cases you will find it imposible to mount the drives and run the supplied cables that come with the TRIOS I. You'll need to buy longer IDE drive cables from them to reach between the TRIOS I and your mounted drives in some cases (no pun intended). The first model/version TRIOS I cost around $50.

The TRIOS II, or second model is a $75 PCI card and cables setup that also permits you to select beween three hard drives. However, unlike with the TRIOS I where one drive is active and the others locked out, either one or two of the hard drives can be "active". Also, with the TRIOS I, all three hard drives spin up. With the TRIOS II, only the active hard drives spin up -- the other one(s) don't get power to them. This is all IIRC, so please see the website for latest details if you are interested. I've not had this model, but it looks like you would have less trouble running the supplied IDE cables between the PCI card and hard drives mounted in internal 3 1/2 inch drive bays as is more typical with most computer case configurations.

4) The Multi-Boot Configuration Handbook. Tells just about everything you would want to know about multi booting operating systems. Covers most all the methods -- especially those done with software/boot selectors.

5) Installing a second hard drive and manually installing Linux upon it and selecting install options that tell the Linux installer to put Linux on the second hard drive -- and not to mess with the first hard drive having Windows on it -- except for installing a boot manager, i.e. GRUB or Lilo, so you can select which OS to boot into during power up. You can specify all this during the RedHat Linux installation. Some other popular installations likely allow this too. Doing a Linux install is pretty easy for most folks nowdays. Most popular current distributions like Red Hat, Suse and Mandrake detect and work fine with mot hardware. You may have a problem of course -- winmodems come to mind -- but it takes less than an hour to install Linux these days on most computers. So why not just try and see it it works ok before worrying about it too much?