How can I always block checkin of a specific file in TFS

tfs

Solution

One of TFS undervalued features is cloaking. Like SVN's `ignore`, cloaking will let you ignore a certain folder or files.

Cloaking a Folder

Cloaking a folder is easy: just right click a folder on the source control explorer and select `Cloak`

Cloaking a File

The UI doesn't expose cloaking on a single file, but sometimes you may want to cloak a certain file like `app.config`.

Go to `File` > `Source Control` > `Workspaces`

Select your workspace and click `Edit`.

Under the working folders, and a new entry with status `Cloaked` and enter the full server path of the file you want to cloak. (E.g.: `$/MyTeamProject/Dev/Src/SomeProject/app.config`)

Using Local Workspace .tfignore file (In TFS 2012, 2013, 2015 and up)

In Local Workspace, use you can use `.tfignore` file (the equivalent of `.gitignore` for Git)

.tfignore file example
 ######################################
# Ignore .cpp files in the ProjA sub-folder and all its subfolders
ProjA\*.cpp
# 
# Ignore .txt files in this folder 
\*.txt
#
# Ignore .xml files in this folder and all its sub-folders
*.xml
#
# Ignore all files in the Temp sub-folder
\Temp
#
# Do not ignore .dll files in this folder nor in any of its sub-folders
!*.dll

Blocking by Permissions

Another approach is deny check-in on the file (requires administrative privileges):

Right click the file > click `Properties` > `Security`

Add your user and mark `Deny` on the `Check In` permission.

Problem

There is one file that I always made changes to, but that I never want to be checked in. I would like TFS to block me from ever checking it in or committing the changes. How can I configure TFS to do this? Details: There is another developer on the project that has checked in some bad code that I prefer to comment out on my local machine. Since they are a client, I prefer to keep this a technical exercise rather than make it a political one.

Original source