Check out TFS files directly from SQL Server Management Studio

The other day I explained how to configure the external tools feature of Edit Pad Pro to allow direct checking out of files from TFS.

Today I did the same thing in SQL Server Management Studio.

Configuring TFS Checkout in SQL Server Management Studio

Here are pictorial instructions:

Command: we are using the environment variable created by VS2012 to provide a generic path to the TF.exe command line tool. If you are not using VS2012, open a command prompt, type "set" and see which path is closest. Alternatively, just put in the absolute path to tf.exe.

If you do not have Visual Studio at all you can install the standalone Team Explorer for Visual Studio 2012 which includes tf.exe.

Arguments: we are passing the "checkout" command to tf.exe with a parameter of the full path to the .sql file we are working on.

Use Output window: this is optional but it will show you the information returned by the tf.exe command line tool.

Using the External Tool

This is simple. The tool item you just created now shows up in the Tools menu. Just click it and it will checkout the current file you have open in the IDE.

Last Words

There is a small annoyance: SSMS will try to save all unsaved files before running the external tool. In this case, if we've modified the file then it will try and save over a Read-only file, causing it to try and Save As to a new file name.

I believe this is a bug in SSMS, or a well-intentioned, yet obstructive feature. I can't see a way to disable this behaviour. Just press Escape to avoid this - the external tool will then run.

Let me know in the comments if you need any more information!

How to automate TFS checkouts from EditPad Pro

I am a long time user of the great EditPad Pro from JGsoft. I use it for text file manipulation and basic programming. I starting using it when it was at version 3 or 4; purchased it at version 5, and even upgraded my licence to 6 and 7!

You may find Text Editors boring - understandable! They are one of those types of software that is not particularly exciting, but for certain people, they are an essential tool. And if they perform slowly or lack intricate features, they will be quickly superseded by something better.

Developers need a powerful text editor. End of story.

As a developer you have to deal with a multitude of file types - config files, data import/export files, source code, database queries, and so on. Often you need to quickly search files, or change their contents and produce a new file.

EditPad Pro is an awesome tool for getting in there and quickly doing what you need. As I mentioned, I've used it for many years

It's an indispensable tool for me. This is due to features such as:

  • Customisable syntax highlighting for a very wide range of file types, e.g. sql, vbs, sh, XML
  • Powerful regular expression search and replace (actually I also bought RegexBuddy from JGsoft to make constructing these easier)
  • Stable handling of very large text files
  • Fast operation - fast to load, never laggy
  • External tool support - which is the point of this post!

Integrating TFS checkout into EditPad Pro

In my current job, we use Team Foundation Server for source control. Visual Studio 2010 has great integration, in that it automatically checks out files when you try to edit them. 

However, we also store various other file types in TFS, which we do not edit in Visual Studio. Personally, I use EditPad Pro (EPP) to edit these. I have been manually checking out the files when I need to edit them using the Shell Integration provided by the TFS Power Tools. This works fine, but becomes tedious. 

Then I remembered that I could integrate the TFS command line application into EPP!

The screenshots below will show you how to do it, but in brief:
  1. Open a file from your TFS working copy, that is currently checked in (Read Only)
  2. Click on the Tools menu, then Configure Tools...
  3. Configure the command line and add a keyboard shortcut. If you want it in the toolbar, you can check 'Show caption on toolbar'
  4. Close the Tools dialogue and press your keyboard shortcut.
  5. Your file is now checked out!
Now a bit more detail...

Tool Definition

This is where you set up the command line to run, and add the placeholders which pass the information from EPP to the command line tool.

In this case it is very simple:

"C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\TF.exe" checkout "%FILE%"

Your path to TF.exe may differ - just search your C drive.

The important part to note is you need the "" around the %FILE% placeholder to ensure that if you have spaces in the path to the file, this will be handled correctly.

TF.exe does not require the working folder to be set.

Tool Definition - set up the command line here

Files dialog

You don't really need to set anything up here, but if you like, you can check 'Reload the current file'. This ensures the latest version checked out from TFS will be displayed. EPP should automatically reload the file anyway though, so it's not strictly required. (You can set this behaviour in the main Preferences dialogue, under Open Files: check 'Automatically reload the active file if it was modified on disk.')

This section may be more useful to you if you want to do something like save your local copy in another temp file before you check out. You could tick the second option to do this.

If you are setting up a TFS check-in task, then you would check the first option to make sure the file is saved before checking in.

Tool file actions - optional

Standard I/O Dialogue

This is useful in case we get any errors. In this case, I set up the standard error to redirect to the message panel. This means you will see any errors if they occur (e.g. TFS down)

You can also set this to save the standard output to the message panel or to a new file. We don't need it in this case, because the standard output just tells us the file was checked out!

These settings are most used for tools which take your file's contents, change them, and produce modified output. With these tools, it's ideal to set the standard output to capture to a new tab. I have done this when using perl scripts to format files, etc.

Standard I/O - where to send the command line output

So there you go - look how easy it is to integrate an external tool into your text editor - and save yourself a lot of tedious clicks AND time!

If you are interested in trying out EditPad Pro - it's your lucky day! You can get a 30 day trial of EPP right here. Once the trial ends, it just switches to the Lite version, so you can keep using it forever.