Everything you want to know about Visual Studio ALM and Farming
Brian Harry is a Microsoft Technical Fellow working as the Product Unit Manager for Team Foundation Server. Learn more about Brian.
More videos »
Back around the Holidays I promised 3 "surveys" but I actually only described 2 of them. I've finally gotten around to writing up the 3rd one.
In our next release, we are building a slew of new features designed to make managing branching and merging simpler. Right now I'm focused on features to help you understand what branches you have, how they relate, what merges have happened, what hasn't yet, etc. Our approach to this problem has been to do a scenario based analysis of the problems people face and build solutions optimized for different scenarios. This is as opposed to trying to build the swiss army knife of branch/merge visualization to try to solve every problem with one solution.
Of course the trick is that we need to make sure that we've identified the most important scenarios. Then, of course, we need to design good solutions to those scenarios. In this post, I'll share with you what we think the top scenarios are and some thoughts on what our solution will look like. I'm very interested in your opinions on both topics. Are the scenarios we've identified important to you? Did we get the scenario a bit wrong? Did we miss some very important scenarios? Is the direction we're headed for solving the solution good?
Solution...
The primary hook here is through history. When looking at changes in the history of a file, you can now drill into merges and see what changesets were included in that merge. Some of those change sets may also have been merge changesets and you can continue to drill until you get to the original changeset. Having found the original changeset, you can review it to see the changes, associated work items, checkin notes, user, etc.
In this screen shot we are looking at the history of Main.cs in the "Main" branch. Its history includes changes 7170 and 7150. Changeset 7170 is a merge from the "Dev Branch". It includes changes 7169, 7168, 7167, 7161. 7167 and 7161 are merges from the 2-TVShows and 1-Movies "Feature" branches respectively. You can continue to trace changes back to original checkins like 7160, 7159 and 7158. You explore change sets, compare them against each other, etc.
In this display we are showing changeset 600 that was originally checked into the VCClient01 branch. It shows the set of relevant branches which branches it was merged into (and what changeset it was integrated in). The timeline at the top gives you an easy indicator of "when" the various changes happened. The yellow color of the Lab26VSTS branch indicates that only parts of the change were merged and the red of the Aftershock branch indicates that the change has not yet been merged into that branch. Again, there would be various drill-ins and operations you can perform on these change sets/branches.
We're thinking something remotely like this. It would allow you to browse the tree, expanding nodes as you go. You'd be able to double click a branch to see properties of that branch - like a description, owner, etc. This isn't the exact rendering. It's actually an alternate view for scenario 2 but we think the scenario 3 UI would look very similar (take away the changeset numbers, color coding, etc).
We don't currently have a design or prototype of this.
OK, that's the 4 scenarios we've identified. That doesn't cover everything we'd like to do in the area of branching & merging but is focused on understanding my branches and merges. We have more features around acting on branches, checkins, etc. But, I would really like to get some feedback on whether or not you think we are headed in the right direction.
Brian
PingBack from http://msdnrss.thecoderblogs.com/2008/01/16/new-features-to-understand-branchingmerging/
All the ideas are great...
The view of Scenario 3 would be incredible. Being able to quickly visualize/conceptualize the branch structure I think is important. Something like the proposed view gives a real good snapshot of the folder structure and what's taken place. I like it ;)
When you say "future release" does that mean update or next major version?
thanks !
In this context, future release means that we are working on these for our next major release. These changes would not show up in a service pack. You should find some of it in the next Rosario Community Technology Preview. It's due out within a couple of months.
Number 1 would be excellent, though all of the above features would be usefull to us.
If we could then see the labels inlined with the view in #1, that would be even better.
Any chance of some of these features appearing in a Power Tool ahead of the Rosario release?
Have a look at http://blogs.msdn.com/bharry/archive/2008/01/16/new-features-to-understand-branching-merging
All 4 scenarios will be very helpful to us. And especially the last one. We often have problems merging branches but missing some important changes or discovering major conflicting changes when some critical changes need to be merged and deployed quickly.
Hi
My question might seem a little off-track but i would like to know what tools do you guys use to generate UI mockups and architecture diagrams? The diagrams/mocks are really slick. I would appreciate if you could share the name of the tool so that i can have it bought by our company.
Many Thanks.
Maruf Dolani
Yes! Rosario would be nice. A powertool for Orcas would be even better.
Hmmm. #4 is a hard one. Maybe a bar graph showing unchanged, new, deleted, added, merged and conflicts. Provide a view with both files and # of lines of code. And if you had a method for rating difficulting of a conflict you could do a color gradation from red to yellow in that bar.
Maruf, The vast majority of our UI mock ups are done in Visio. Our User Experience Team has created a bunch of Visio widgets for standard VS controls so that we can easily assemble mock ups. We've debated whether or not/when to try to create a product (Visio add-on) that would make it easy for others to do the same thing. Maybe some day, but it's not in the cards soon.
Josh, thanks for the feedback. Yes, we are hoping to get labels in there.
I never say never but I think it's really unlikely for these to show up as Power Tools. There would be a significant effort to get them separated and shipped.
I had a red / green color blind colleague look at the graphics (color blindness is a common problem in Norwegian males) and he could distinguish the difference between the bars in your examples. We just adopted Office Communicator internally for instant messaging and I also see that, for example, the "available" green button has a darker core that is visible to the color blind.
thank you.
Paul
another PingBack: http://teamexpand.com/ext/component/option,com_mojo/Itemid,3/
New features are always cool, and a lot more fun to work on and think about than boring stuff like reliability. But these tools are mission critical to us and we would appreciate some work on the boring bits too.
To be fair, many of the problems I'm having are in the IDE's integration with TFS SCC but those VS guys don't seem to have ever seen a large project so you may have to help them out.
I presume you guys own the SCC explorer. Give me some help in places where I'm doing things outside the daily development paradigm. Like importing a new version of a third-party source tree into my SCC forest. At a minimum I'd like to have a way to flush whatever you call the cache of what TFS thinks I have on my disk.
We're cleaning up a source tree that evolved under VSS to have quite a few "Share" tunnels in it. In the process we've decided to move one copy of a folder to replace another appearance of (some of) the same information. We have to commit the deletion of the target folder first, then go in manually and finish deleting the folder on disk, then move the contining instance to its new home and commit that change. Then I have to repeat all of those steps when I merge those changes into another branch!!!!!
And while we're on the merge topic, I'm seeing a fairly consistent over-estimation of the conflict count in the dialog immediately prior to the manual merge tool.
Beats stone knived and bearskins, I guess. Keep up the good work. If we didn't love you we wouldn't be complaining. :-)
Brian - Thanks for this information. Is it possible to get those Visio widgets either as a download package (free) or by placing a partner request (buy)? I would appreciate if you could point me to someone (email/url) who could help me with this.
Thank You.
-Maruf
=======================================
===================================
Thanks Steve, keep us honest :) We are doing lots of work on "boring" stuff too. TFS 2008 had lots of improvements to stuff like off line behavior, merge conflict generation, etc. We're also shipping quite a few new features in a TFS 2008 SP1 release later this year. They are all targeted at improving the user experience and addressing costomer complaints. I can't say everything you've listed is going to be better but some will. I'm not going to list the full TFS 2008 SP1 feature list at this point but I'll tease you with one since you brought it up.
SP1 will still support binding solutions the way it is done today, however, it will no longer limit version control operations to bound items. You can open any file anywhere on your disk and, if it is under TFS source control, full version control support will be available - including auto checkout, etc.
I'm pretty excited about SP1 it'll be a nice additional improvement. We'll keep working on the annoyances in addition to cool new features.
Thanks for the feedback,