-->

Tuesday, April 1, 2008

Repeat After Me...

...If I circumvent the way a system is designed to work, it's my own fault when it doesn't work as designed.

It amazes me how many people who design and build software don't actually seem to understand this concept.

A little background: Team Foundation Server source control uses "workspaces" to manage version-controlled fies locally. A workspace maps the source control folder structure and files with local copies on a one-to-one basis. TFS keeps track of what version of each file you have locally; the local files are all marked as read-only (using the file system flag) until they are checked out for editing. This prevents accidental edits and overwrites when the file is not actually checked out for editing. TFS cannot track changes made to the file if it is not checked out first.

This was explained in plain and clear detail when we migrated to TFS: Do not modify source-controlled files without going trough the source control system.

Recently, a couple of developers have argued with me that when they "get latest" from TFS on particular files, they aren't always actually getting the latest version. Suspicious, I began asking questions, and after a very short time the problem was revealed. These developers have been manually browsing to their local workspace files, unchecking the "read-only" flag, and making changes to source-controlled files, effectively circumventing the source control process.

Of course, after making these "unseen" edits, they expect that "get latest" will replace their modified copy with the latest version. The problem is that if TFS already thinks that they have the latest copy (remember that it keeps track of this), it will not try to get it again, satisfied that you're already set up with the version you want.

And somehow, despite being told not to do it for this very reason, they did so anyway, ...and then proceeded to justify their reasons for doing so, and blamed TFS for not working properly.

Well, DUH.

If you circumvent the way a system is designed to work, don't expect it to work as designed.

0 comments: