Daily Archives: March 27, 2009

Delete workspace from no longer existing TFS

A week ago I started to use a new TFS server (TFS 2008). The old TFS server got phased out yesterday after moving all sources to the new TFS server. Doesn’t sound like a problem, does it? However, I forgot to remember my laptop: my old workspace was still in there, but to delete a workspace the normal way the TFS server should be available. At itself, this is still not much of a problem, however: when you would like to map your new source control folders to the old ones on disk, this is not possible since the old workspace is still mapped to that location. Arghhh!!!

Luckily, there is a tf.exe command tool switch (discussed a few minutes ago in my previous blog post) to cope with this problem: use ‘tf workspaces /remove:*’ and all cached workspaces will be gone! Problem solved!

TFS command line (tf.exe)

Now and then in my life as a lead developer/architect, I have to cope with TFS the ‘hard’ way: the user interface is not always as complete as one would want it to be. One of the greatest tools Microsoft has delivered us is tf.exe, a command line tool to do almost everything impossible with the user interface. However, tf.exe comes with one big draw-back. It does not offer a complete help. Just minutes ago I discovered the documentation I need at one Microsoft guy’s (Noah Coad’s) blog (http://blogs.msdn.com/noahc/archive/2007/01/22/real-tfs-command-line-help.aspx).
 
Just to be sure the help will never disappear, I printed the entire help file below, as well as did I include the help documents as text files.
 
I hope this helps you too.
 
tfhelp.txt (120 characters)
tfhelp.txt (80 characters)
 

COMMANDS

Add        tf add itemspec [lock:none|checkin|checkout] [/type:filetype]

              [/noprompt] [/recursive]

Branch     tf branch olditem newitem [/version:versionspec] [/noget] [/lock]

              [/noprompt] [/recursive]

Branches   tf branches [/s:servername] itemspec

Changeset  tf changeset [/comment:comment|@commentfile] /s:servername

              [/notes:("NoteFieldName"="NoteFieldValue"|@notefile)] [/noprompt]

              ([/latest]|changesetnumber)

Checkin    tf checkin [/author:authorname] [/comment:("comment"|@commentfile)]

              [/noprompt]

              [/notes:("Note Name"="note text"|@notefile)]

              [/override:reason|@reason] [/recursive] filespec …]

Checkout   tf checkout|edit [/lock:(none|checkin|checkout)] [/recursive]

              [/type:encoding] itemspec

Configure  tf configure pathtoproject /server:servername

Delete     tf delete [/lock:(none|checkin|checkout)] [/recursive] itemspec

Difference tf difference itemspec [/version:versionspec] [/type:filetype]

              [/format:(visual|unix|ss)] [/ignorespace]

              [/ignoreeol] [/ignorecase] [/recursive] [/options:"options"]

           tf difference itemspec itemspec2 [/type:filetype]

              [/format:(visual|unix|ss)] [/ignorespace] [/ignoreeol]

              [/ignorecase] [/recursive] [/options:"options"]

           tf difference [/shelveset:[shelvesetowner;]shelvesetname]

              shelveset_itemspec [/server:serverURL]

              [/type:filetype] [/format:(visual|unix|ss)] [/ignorespace]

              [/ignoreeol] [/ignorecase] [/recursive] [/options:"options"]

           tf difference /configure

Dir        tf dir [/s:servername] itemspec [/version:versionspec] [/recursive]

              [/folders] [/deleted]

Get        tf get itemspec [/version:versionspec] [/all] [/overwrite] [/force]

              [/preview] [/recursive] [/noprompt]

Help       tf help commandname

History    tf history [/s:servername] itemspec [/version:versionspec]

              [/stopafter:number] [/recursive]

              [/user:username] [/format:(brief|detailed)] [/slotmode]

Label      tf label [/s:servername]  labelname@scope [/owner:ownername]

              itemspec [/version:versionspec]

              [/comment:("comment"|@commentfile)] [/child:(replace|merge)]

              [/recursive]

           tf label [/s:servername] [/delete] labelname@scope

              [/owner:ownername] itemspec [/version:versionspec]

              [/recursive]

Labels     tf labels [/owner:ownername] [/format:(brief|detailed)]

              [/s:servername] [labelname]

Lock       tf lock itemspec /lock:(none|checkout|checkin)

              [/workspace:workspacename] [/server:serverURL] [/recursive]

              [/noprompt]

Merge      tf merge  [/recursive] [/force] [/candidate] [/discard]

              [/version:versionspec]

              [/lock:none|checkin|checkout] [/preview] [/baseless] [/nosummary]

              source destination

Merges     tf merges [/s:servername] destination [/recursive]

Permission tf permission [/allow:(* |perm1[,perm2,…]]

              [/deny:(*|perm1[,perm2,...])]

              [/remove:(* |perm1[,perm2,...])]

              [/inherit:yes|no] [/user:username1[,username2,…]] [/recursive]

              [/group:groupname1[,groupname2,...]]

              [/server:servername] itemspec

Properties tf properties [/recursive] itemspec

Rename     tf rename [/lock:(none|checkout|checkin)] olditem newitem

Resolve    tf resolve itemspec [auto:(AcceptMerge|AcceptTheirs|AcceptYours)]

              [/preview]

              [(/overridetype:overridetype | /converttotype:converttype)]

              [/recursive]

Shelve     tf shelve [/move] [/replace] [/comment:(@commentfile|"comment")]

              [/recursive] shelvesetname[;owner] filespec

           tf shelve /delete [/server:serverURL] shelvesetname[;owner]

Shelvesets tf shelvesets [/owner:ownername] [/format:(brief|detailed)]

              [/server:serverURL] shelvesetname

Status     tf status itemspec [/s:servername]

              ([/workspace:workspacename[;workspaceowner]] |

              [/shelveset:shelvesetname[;shelvesetowner]])

              [/format:(brief|detailed)] [/recursive] [/user:(*|username)]

Undelete   tf undelete [/noget] [/lock:(none|checkin|checkout)]

              [/newname:name] [/recursive] itemspec[;deletionID]

Undo       tf undo [/workspace:workspacename   [;workspaceowner]]

              [/s:servername] [/recursive] itemspec

Unlabel    tf unlabel [/s:servername] [/recursive] labelname itemspec

Unshelve   tf unshelve [/move] [shelvesetname[;username]] itemspec

View       tf view [/s:servername] [/console] [/noprompt] itemspec

              [/version:versionspec]

WorkFold   tf workfold localfolder

           tf workfold [/workspace: workspacename]

           tf workfold [/s:servername] [/workspace: workspacename]

              repositoryfolder

           tf workfold [/map] [/s:servername] [/workspace: workspacename]

              repositoryfolder|localfolder

           tf workfold /unmap [/s:servername] [/workspace: workspacename]

              [/recursive] (repositoryfolder|localfolder)

           tf workfold /cloak (repositoryfolder|localfolder)

              [/workspace: workspacename] [/s:servername]

           tf workfold /decloak (repositoryfolder|localfolder)

              [/workspace:workspacename] [/s:servername]

Workspace  tf workspace /new [/noprompt]

              [/template:workspacename[;workspaceowner]]

              [/computer:computername] [/comment:("comment"|@commentfile)]

              [/s:servername]

           tf workspace /delete [/s:servername]

              workspacename[;workspaceowner]

           tf workspace [/s:servername] [/comment:comment]

              [/newname:workspacename] workspacename[;workspaceowner]

Workspaces tf workspaces [/owner:ownername] [/computer:computername]

              [/s:servername] [/format:(brief|detailed)]

              [/updateUserName:oldusername]

              [/updateComputerName:oldcomputername] workspacename

 

ITEMSPECS

  Can contain wildcards *, ? and #

  Can contain relative path parts . and ..

  Can reference file system or UNC paths mapped to a workspace or server

  paths (which start with $/). You can usually specify more than one

  file separated by spaces for an itemspec (useful for edit, add, delete

  commands)

 

VERSIONSPECS

  Date/Time         Dmm/dd/yyyy

  Changeset number  Cnnnnnn

  Label             Llabelname

  Latest version    T

  Workspace         Wworkspacename;workspaceowner

 

ALIASES

  /changeset  /G     /noprompt   /I

  /comment    /C     /owner      /O

  /computer   /M     /recursive  /R

  /delete     /D     /server     /S

  /force      /P     /slotmode   /X

  /format     /F     /template   /T

  /help       /?,/H  /user       /U

  /lock       /K     /version    /V

  /login      /Y     /workplace  /W

  /newname    /N