tags:

views:

3462

answers:

8

In TFS when you merge branch A to branch B and checkin, you get a single changeset on B (typically with a comment like "merged A->B").

This means B doesn't have any of the checkin history from A. So if someone created a new file on branch A, you can't tell who created it from branch B. And if someone updated a file on A, you can't tell who did the update from branch B.

Is there any way to see this kind of detailed changeset history across branches? Some kind of power toy, or third party tool, or anything?

Update: The TFS Power Toy tfpt history /followbranches tool does not "expand merges," it only "expands branches" and therefore doesn't solve this problem.

A: 

See the TFS 2008 power toy. It has a /followbranches option which returns the history of the file branch's ancestors.

Chris Lively
This tool doesn't solve the problem, see my answer: http://stackoverflow.com/questions/45882/view-tfs-checkin-history-across-branches#46272
Kevin Berridge
A: 

TFS SideKicks is another good tool for supplementing TFS default tools.

Greg Ogle
+1  A: 

The TFS 2008 power toys does come with the tf history /followbranches command. But that command doesn't expand merges.

All it does is show you the change set history from A before branch B was created. What it doesn't show you is what change sets were merged from A -> B after the branch was created.

In other words, what I want to see is all the change sets that were made on a source branch and then applied to a target branch as part of merge operation.

Kevin Berridge
The command in TFS power toys 2008 actually tfpt history/followbranches.
Justin Dearing
A: 

Might want to try the TFS Follow branch History tool:

http://www.codeplex.com/TFSBranchHistory

Cory Foy
A: 

The TFS branch history tool just wraps the tfpt history /followbranches command, so it unfortunately doesn't accomplish the goal either.

Kevin Berridge
A: 

I think you would find TFS Sidekicks helpful, especially the history area:

History Sidekick application pane provides the following features:

  • View version control tree with files and folders (similar to Source Control Explorer)
  • Search item (file or folder) by name and select found item in version control tree
  • View selected item history either for all users or filtered by user
  • Export history list to CSV file
  • Compare file versions selected in history
  • View selected item properties and pending changes
  • View selected item branches tree and selected branch properties
  • View selected item merge history; it is possible to view separately all merges performed with selected item as a merge target (merges to) or with selected item as a source (merges from)
  • Compare merge target and source file versions in history
  • View selected item merge candidates in a tree view; it is possible to select single merge source from the list
  • Compare merge candidate file version with latest version of target file
  • View selected item labels either for all users or filtered by user; the information displayed includes item version in label
  • Compare file versions between two labels
  • View changeset details supported in all lists containing changesets

Team Foundation Sidekicks

TheImirOfGroofunkistan
It would be a lot easier to read this if your list items weren't indented so much.
Ed Brannin
+3  A: 

Right now 'tf merges' and 'tf merges /f:detailed' provide the most complete merge tracking information. However, they are command-line only. And the only 3rd party tool I know of that attempts to provide a GUI is TFS Sidekicks.

This gets a lot easier in TFS 2010. See screenshots at:

Richard Berg
Thanks, but none of that actually does what I'm looking for.
Kevin Berridge
Did you try 'tf merges /f:detailed'? It's not the most user friendly command ever written, but it does do exactly what you asked for.
Richard Berg
+1  A: 

TFS 2010 will include support for this.

Brian Harry talks about it in this presentation.

You will now be able to see where a change originated and who made it after the change has been merged to a different branch.

Kevin Berridge