Managing non mergable files in Team System
Hi,
Today I met a very angry developer. This developer and his colleague are using some generator that creates a huge text file (XML based but with its own file suffix) and this file is saved in TFS source control.
One programmer checked out the file, modified and checked in.
The other programmer checked out (assuming he was working on latest version - well, guess again...), and then tried to check in. Then, check in operation failed because of confilcts. Merging was suggested, but It's almost impossible to handle the merging of this file.
This programmer was blaming Team system: "This problem could never happen in visual source safe..." - In visual source safe, checking out operation always fetched latest version, and multiple checkouts were always disabled.
What's the best solution for this issue? Well, setting team system behaviour to work like VSS is a very bad idea. Martin Woodward wrote a great post about team system check out behaviour: http://www.woodwardweb.com/vsts/000179.html
Another suggested solution : Education... We must remember to check "Latest" indication in
Source control explorer before checking out.
I prefer this solution that seems to fit: If we decide that files of a specific type will never be merged, we can set them to non mergable files: Right click on TFS server, "Team Foundation Server Settings" -> "Source Control File Types..."
Then, click Add (or edit)
We can set for each file type wether merging and multiple check out will be enabled or disabled.
Does this functionality answer this programmer needs? Unfortunately, No.
Once a file is known as non mergable, multiple check outs and merges are disabled,
but still - check out does not fetch latest version...
So if we check out non mergable file *without getting latest version*, we can work all day on an obsolete version, and check in operation WILL FAIL on conflicts, without an ability to merge.
My suggestion to Microsoft: Please add the ability for automatic get latest on checking out a non mergable file.
Example:
