How can I always block checkin of a specific file in TFS
TfsTfs Problem Overview
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.
Tfs Solutions
Solution 1 - Tfs
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 theCheck In
permission.
Solution 2 - Tfs
For TFS 2012, just use the .tfignore file.
> When you add ignored files to folders that are mapped in a local > workspace, they do not appear in the Pending Changes page in Team > Explorer.
Solution 3 - Tfs
Visual Studio 2013 (and 2012)
This feature is available by selecting the file(s) and going to:
File > Source Control > Advanced > Exclude ... from Source Control
Solution 4 - Tfs
You can just exclude the file from Source Control
1. Select the file in Solution Explorer
2. Go to File -> Source Control -> Advanced
and here it is
Solution 5 - Tfs
There are 2 ways.
- You can "Uncheck" it in the "Pending Changes" window, it should then remember this next time you load Visual Studio. This is a bit cumbersome if you like to "select all" and Check/Uncheck the items in the list and prone to error.
- Don't "check-out" the file, go into Explorer and remove the Read-Only attribute yourself. Then edit the bits you want. The caveat is, that TFS doesn't know about it and doesn't always update the file correctly. Also, if you edit that file in VS (for anoter change), it will be "checked out" and you may then check it in by mistake.
I don't like either option in TFS / VS 2010, so I actually avoided doing this (I used to have a large "ignore-on-commit" when we used SVN). Now I am using VS11 Beta, the Excluded list does exactly what I want, I move something to it and it stays there, and I can easily put other changes on and off that list and not checkin that file.
Solution 6 - Tfs
Another option is using a custom check-in-policy. You can build your own or use Forbidden Patterns Policy from the TFS 2010 Power Tools. Of course you would need to be an TFS admin to install it and it might not be the thing you want in your situation. Also any check-in-policies can be overridden.
Solution 7 - Tfs
if you are using "Local" workspace type, that is new to TFS 2012 - your source-controlled files are not set "read-only" at all. But in this case no matter where you edit them, they are seen by TFS as changed and included into pending changes. Would be great to have option like "auto-exclude" from pending changes by default. And include them only when you want this.
Solution 8 - Tfs
Hidden Folders never gets detected as a change by TFS use this feature if you are using VS2010. The folder that you don't want to be a part of TFS Mark it as hidden.