Part of maintaining a development environment is deciding when to throw things away. Taking out the trash isn't anyone's favorite chore; it usually gets ignored for as long as possible, and the bigger the trashcan, the worse it smells when you do finally take it out. This section discusses how you can make this chore less tedious by carefully planning it beforehand and then automating it as much as possible.
Before deleting any file that took longer than an hour to generate, it's a good idea to compress and archive such files to CDs, DVDs, or backup tapes. If possible, do this yourself so that it's not a burden on an IT department. Then keep these archives in folders or boxes with something like "Discard after 2006" written on them.
The purpose of SCM tools is to store as much information about their contents as possible, so in some sense it's ironic that we have to clean them up. Storage space is finite, though this is rarely a problem unless you have many copies of binary files, or large files that differ greatly from each other. Backups are harder and take longer as repositories become very large, but that too can be dealt with as necessary. The real clutter in an SCM repository is actually dead branches and hundreds of dusty tags on files. This clutter can make it hard for people to see the changes of interest to them.
For a medium-sized project producing a few builds per week for testing purposes, some guidelines for removing tags and branches ...