Rosario April 2008 CTP Investigation (Part 4) - Version Control
Continue from http://dotnet.org.za/willy/archive/2008/05/29/rosario-april-2008-ctp-investigation-part-3-architecture.aspx.
The version control environment has already been a pretty complete and powerful environment, however, Rosario is currently introducing editable source location fields, last check-in column, hyperlinks to local working folders, drag-drop support, new history view showing labels applied across files and how merges were applied across branches, command-line check-in rollback and a welcome simplification of workspace mappings.
Let us use the mini-stories to look at some of these exciting features ... with lots more to come in later builds.
Source Repository and Workspace Mapping
Looking at the source control explorer we notice a similar looking landscape, however, the Source Location area and the Local Path "Not mapped" link draws out attention.
If we click the not mapped linked hyperlink, we are confronted with the MAP dialog:
We specify a local drop point and select recursive. Note that TFS now supports a recursive and non-recursive folder mapping. While the former is the normal mapping, the latter allows you to map only selected areas, without having to cloak a number of sub folders afterwards.
What is really cool, is that the mapped folder is suddenly also a hyperlink, which allows you to navigate directly to the file system.
If we select the Main hyperlink, we zoom off to:
If we map the Releases node as well as shown:
... only to realise that we do not need release 1 anymore, we can right-click on the node in source explorer and select cloak:
The result is a cloaked folder as shown.
In our sandbox, we also note that the Release 1 node is gone ... sorry, cloaked.
In 2008 this differed in that we had to edit the relevant workspace and then select cloaking. In Rosario we can right-click in source explorer, without having to do the detour via workspace editing and therefore have a huge productivity improvement!
Source Control ... adding files
Although we will notice the "Add Items to folder button" as in previous versions of the Source Control explorer, we can right click on a node or in the white space in the source control explorer, to select "Add Items to Folder"
The "Add to Source Control" dialog appears, giving us a number of options, such as mapping, excluding items and reviewing our decisions, before selecting Finish" and committing the code to the repo.
The other "neat" feature now supported in Rosario is the drag and drop. Simply drag a file or folder to the source control window and you are confronted with the same "Add to Source Control" dialog.
Merging
When we select merge in our source control explorer, we again are welcomed by known dialogs as shown:

However, when we select Finish, a progress bar appears and then a "Pending Changes" tool window appears with the conflict channel being active.
We can select "Compare Source to Target" ...

... to see a familiar sight again and to notice that for the demo, only the first and last lines have changed in most files. The terminology has been slightly changed, whereby the terms "theirs" and "mine" refer to source and target versions respectively. In addition the terms "take" and "keep" are slightly more actionable nouns.
The next step is to typically select "AutoMerge All" and cross your fingers ...

To be stuck with those files that cannot be auto merged. In the toolbar we select "Source History" (theirs) ...

... which reveals a new history window. Notice that the history is now displayed in a tree view, that we can expand the versions resulting from the branch or merge, and a labels tab, which allows you to view and find labels easily.
If we select "Target History" instead ...
we get the view from the target (mine) view point. Again we have the two tabs, namely changesets and labels.
When we select "take source" and "Accept Resolution" for the conflict which involved mainly a rename, we are left with the last conflict.
We take the source and select "Accept resolution" ...
... opening the conflict resolution tool, which can be the built-in merge tool, or a custom merge tool. When using the built-in ... as in this case ... we can select the "navigate conflicts only" checkbox at the bottom left, make ourselves through the conflicts.
Lastly we need to check-in the pending changes ... voila, the dust begins to settle and the source repository calms down again.
Visualisation?
Visualisation of branching is not included in CTP12 ... therefore we have not included it in our evaluation. Have a look at http://blogs.msdn.com/bharry/archive/2008/01/16/new-features-to-understand-branching-merging.aspx for more information on what is to come ion this area.
Conclusion
The source control environment in TFS has already been a solid and functionally rich environment in TFS2008. The features added to TFS/VSTS in this release, however, are addressing the productivity of the user and being able to perform the tasks in one IDE and being able to drag-drop artifacts, is introducing exciting productivity features.
The merge environment includes productivity and assistance features, making the often hair-raising merge experience and associated reverse integration less scary and problematic.
My personal rating for the version control improvements in Rosario at this stage is: 



/ 5 smiles. This environment rocks even more than before.
Next
... part 5 will look at Team Build.