28
votes

Even after installing Productivity Power Tools extension for Visual Studio 2017 I still cannot run tfpt.exe to execute the command suggested on this post:

C:\Development> tfpt unshelve "ShevesetName;UserName" /migrate /source:"$/Project/Source" /target:"$/Project/Target"

Where can I find this program?

4

4 Answers

14
votes

The Productivity Power Tools are not the same thing as the TFS Power Tools, so that's why installing it didn't help.

There is no set of TFS 2017 Power Tools. From the TFS 2017 release notes:

Issue: No Power Tools have been released for TFS 2017.

Workaround: We are excited to let you know that most of the previous Power Tools have been integrated into TFS 2017. The Process Template Editor is one that has not been integrated, but we are going to publish a Process Template Editor tool for TFS 2017 to the Visual Studio Gallery shortly after TFS 2017 is available. We will provide the link here as soon as it’s published

8
votes

Just as Daniel said, they are two entirely different things. A supplement :TFS 2017 Process Template Editor is available

In your case, you are trying to use the unshelve command to unshelve a shelveset to another branch in TFS. As a workaround you could use tf Unshelve and Rename command to achieve this in two steps.

Or just install a earlier version VS and Power Tools such as VS2015 and Microsoft Visual Studio Team Foundation Server 2015 Power Tools. After all you just need to match the version of the TFS Power Tools with your Visual Studio client.

3
votes

Possible workaround, which helped me!

  1. Create a new workspace and do not download all the files.
  2. Unshelve your changes to this new workspace, which would result in having only the modified files from your current branch.
  3. Compare and manually merge your changes into the other branch.
-4
votes

You can use git-tfs to accomplish this. The steps you should perform are (after git and git-tfs have been installed):

  1. create a git branch from the shelveset (git_branch_a).
  2. initialize a git branch (git_branch_b) based on the TFS target branch (tfs_branch_b).
  3. merge the git_branch_a into git_branch_b.
  4. based on the git_branch_b create a shelveset.
  5. the new shelveset can now be unshelved in the tfs_branch_b.