Section 4.3. Drawbacks of SCM


4.3. Drawbacks of SCM

You might agree that SCM is vital to your project, but at what cost? All tools seem to have some drawbacks associated with them, and SCM tools are no exception. This section mentions a few complications of using SCM tools, but it should be stressed that the benefits of SCM outweigh all these issues. I'm sure that there are trapeze artists who feel that safety nets take away some of the thrills of their act, but you never see them work without a net.


Disk space

Keeping track of the different versions of a large number of files soon begins to take up lots of disk space. Even storing just the source code for a product with a million lines of code can easily take 10MB. Naively keeping complete copies of every file will use up 10MB for each tag. SCM tools usually store only the differences between versions, which are much smaller in most cases. Even with just storing the differences, a total of 250MB would not be unusual for such a product after a year's worth of changes. The price of storage is cheap enough to allow us to ignore this argument.


Performance

Using an SCM tool to obtain a set of files to work with is generally slower than copying the files over from another directory. The SCM tool may keep the files on a remote server across a busy network, and it may have to regenerate in real time the precise versions of the files you requested. You may also have to wait for someone to finish making her changes before you can get the latest set of files. All that work takes a bit more time, but it's usually not much time.


Connectivity

Some SCM tools don't work when they are disconnected from a networkfor instance, when you are using your laptop on an airplane. If you are going to do a lot of development disconnected from a network, choose a distributed SCM tool that will work in that mode, or at least one that won't stop you from accessing your files without a connection to its central server.


Complexity

Some minimal training in how to use the SCM tool is likely to be necessary, and any infrequently used commands are quickly forgotten. Complicated activities such as merging different versions of files or merging whole branches of source code together are particularly hard to get right with many SCM tools. This is one reason why the quality of the documentation and support is important to consider when you are choosing an SCM tool.


Cost

If the SCM tool chosen is not free of charge, then the financial cost can become a limiting factor on how the project can grow, especially if a license is needed for each developer who uses the tool. Still, there are plenty of good SCM tools that cost nothing, and my opinion is that you can always find ways to get more money, but you'll never recover time lost to poor SCM practices.


Risk of corruption

Finally, and most disturbingly, if there is a bug in the SCM tool, or bad hardware, or even operating system errors, then your files could gradually become corrupted within the SCM tool itself. This nightmare scenario is thankfully very rare, but is a great reason to use SCM tools with checksums on their files and with tools to validate their files, and to do nightly backups of your SCM tool's files.



Practical Development Environments
Practical Development Environments
ISBN: 0596007965
EAN: 2147483647
Year: 2004
Pages: 150

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net