TF.exe equivalent to TFPT.exe scorch

7.8k views Asked by At

I have been looking for the TF.exe command line equivalent to git reset. I found TFPT scorch, however this is for use on a build server (jenkins), and I cannot seem to get the power tools installed (in a standard manner) or working (non standard, copy across).

Is there either

  1. A way to install tfpt.exe on a build server (that does not, and must not, have visual studio)?
  2. A way to emulate this command with a collection of TF.exe commands?
4

There are 4 answers

1
Edward Thomson On BEST ANSWER

If you're open to writing your own "scorch" functionality, you can do so against the TFS Java SDK, which does not require you to install Visual Studio.

The basic mechanism behind scorch is to get a list of items that are in the workspace version and a list of items that have pending changes, comparing that with the list of items on-disk, deleting any item on-disk that is not on the server (or has a pending change).

(You need to union the set of server items with the set of pending changes to avoid deleting pending adds. However, if you want this special cased for a build server and you will never have pending changes, feel free to omit this step.)

You can collect a list of items on the server using Workspace.QueryItems at the workspace version.

1
Sumo On

You don't specify which version of TFS you are using. However, there is an equivalent: tf reconcile /clean.

As per the tf documentation:

Microsoft (R) TF - Team Foundation Version Control Tool, Version 12.0.30501.0
Copyright (c) Microsoft Corporation.  All rights reserved.

Compares the current state of the workspace on disk with the server's view,
either to clean the workspace or to promote unpended local changes.

tf reconcile /clean [/diff] [/noprompt] [/preview] [/recursive] [/ignore]
             [/unmapped] [/exclude:itemspec1,itemspec2,...] [itemspec]

tf reconcile /promote [/adds] [/deletes] [/diff] [/noprompt] [/preview]
             [/recursive] [/noignore] [/exclude:itemspec1,itemspec2,...]
             [itemspec]

Running: tf reconcile /clean /diff /noprompt /recursive *.*

Is equivalent to: tfpt scorch *.* /noprompt /recursive /deletes /diff

Interesting fact is that this command is absent from current tf.exe documentation.

Also, as @Jonathan mentions, there is now a tf scorch command as well which is eerily similar to tf reconcile. If there are differences, I cannot find the documentation to back it up. It's very possible it has something to do with working with Local vs. Server workspaces, which was added in 2013 to allow true "offline" development.

0
Dan Csharpster On

I just added a Delete Files task to the end of the build process with ** as its parameters. So that way each build should be getting latest from scratch, without having to fuss with the the TFS utilities that may not be properly installed on an agent ahead of time. This solution seemed a lot simpler for me.

5
Jonathan On

I install TFPT automatically in my build agent install script:

msiexec /qb /i "tfpt.msi" ADDLOCAL=CLI /l*v tfpt-log.log

And then find it easily using the TFSPowerToolDir env var. Update: This does require Visual Studio - I install a subset of it, just vs_teamExplorer.exe and vstf_testagent.exe.

Also, tf.exe now has a /scorch option as well. It wasn't there in VS2013, but it's there in VS2013 SP4.