Here’s my problem. Our source code is in a huge directory structure. Developers unzip the source tree onto their own systems and then checkout files on top of it. The problem is that once or twice a week a new source code checkpoint is published. If the developer needs to update his own environment, he has to make backup copies of the files he’s working on, delete his copy of the build tree, extract the source checkpoint, and then copy back the files he’s working on. This is a messy process and causes a lot of accidents.
What I want to find is some sort of virtual filesystem on Windows that can combine two directories into a single directory view. One directory would be read-only and have the build environment. The other directory would be read-write and that’s where the developers would checkout their files. But to the build tools that compile the code, it would just seem like one directory.
So what I want is this:
**BackingDir **-> read-only directory that has the entire source tree
**WorkingDir** -> Sparsely populated read-write directory that only has the source files I have checked out
**BuildDir **-> A union of the BackingDir and WorkingDir into a single directory view. If the same file exists in both WorkingDir and BackingDir, then the one in WorkingDir is visible here.
This way I could easily replace the contents of BackingDir at any time without worrying about affecting the files I’m working on. Is there anything that does something like this? I know there are some sccs tools that make this easier, but I can’t make that sort of change. I need something that I can put on top of our existing build env.
Maybe I’m misunderstanding, but your description of the “new source code checkpoint” is such a violation of the principles of source control that I have to wonder why you use source control at all. IMO if you try to solve this problem with some filesystem-specific trick you’re just making the problem worse.
Is there a reason for the source code dump that can’t be solved with a label in source control? Are you guys using a concurrent versioning system like cvs or does it use exclusive checkout?
Sorry I don’t have a GQ answer to your actual question. I will think about it and post if I can think of anything that does something like that.
I guess instead of souce code checkpoint I really should have said build checkpoint. It’s the latest build of all the changes which have been integrated into the build. It’s not the latest version of the source code. The build group takes all the tracks marked by the project admins as ready and builds them. It’s useful for developers to build against this code base since it means we are building with all the latest tracks which are completed.
Somebody will probably come along with a much better recommendation, but it might interest you to know that one of the new features in Windows 7 would somewhat cover this. “Libraries” are essentially virtual folders that contain multiple other folders. I don’t know how they handle duplicates (or if that handling is customizable), though, so I’m not sure if your scenario could be handled. And, obviously, you’d have to upgrade to Windows 7.
Are these “Libraries” like using symlinks in Unix/Linux? If so, that’s sweet—NTFS has supported hard links for years, but they never had a good analog to symbolic links.