Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to unshelve another developer's changes that include dlls or other binaries?

Using Team Foundation Server 2010 I am trying to unshelve a series of changes made by another developer on my team. This shelve set includes some Nuget packages which include dlls. I am receiving multiple errors along the lines of:

The item $/file/path/some.dll is locked for check-out by USER in workspace MACHINENAME.

In 2008 Mac Noland asserted in his blog post Unshelving files that have File Merging disabled that this error is caused by having file merging being disabled. Which makes good sense to have file merges disabled for binaries. Based on the error I am assuming that TFS 2010 is still utilizing the merge utility when unshelving (makes sense as to why). That said I do not want to enable file merging for dll files.

Unfortunately, understanding what is going on and fixing it are two different things. In TFS is there a way to unshelve binary files which were shelved by a different user?

like image 956
ahsteele Avatar asked Oct 25 '13 17:10

ahsteele


People also ask

How do you Unshelve changes in Visual Studio?

Choose Unshelve Changes if you want to retrieve the changes in the shelveset into your workspace: For any file changes that you don't want to unshelve, open the context menu of the file, and then choose Exclude. If you want to delete the shelveset, clear the Preserve shelveset on server check box.

How do you Unshelve changes in TFS?

You can shelve pending changes (like a local check in) by right-clicking a file/project/folder/etc. and selecting Shelve Pending Changes. If you want to get your shelveset back or get other people's shelved changes. Go to File -> Source Control -> Unshelve Pending Changes….

How do I merge Shelveset to local?

Make sure your active directory is a directory that is mapped to your local workspace otherwise you may see "Unable to identify workspace". When you run the command you'll be presented with a dialog to choose your shelveset. After that, you will receive an additional dialog that allows you to merge conflicting files.


2 Answers

If the user created the shelveset, but left everything checked out locally, you will receive this error. Since TFS usually allows only a single checkout for binary files, a shelveset can't be unshelved if it contains a binary file which is locked by another user.

You can attempt to unlock the file with the following command -

tf lock itemspec /lock:none /workspace:OtherUsersWorkspace

You should be able to determine the workspace from the error message, and you'll also need to specify the user - /workspace:WORKSPACE;userid

like image 154
Dan Shield Avatar answered Oct 03 '22 23:10

Dan Shield


In my case my source code is located at below location in my work station

D:\TFS\Source\Development\Cars.

I opened Visual Studio Command Prompt under Visual Studio Tools and ran it as Administrator.

I changed my command prompt to move to

D:\TFS\Source\Development\Cars

Executed below line

D:\TFS\Source\Development\Cars> tf lock HE/* /lock:none /workspace:zigglerworkspace /login:ziggler /collection:ziggler1pxtfs01\WebProjects

zigglerworkspace - my workspace name

ziggler - my user name

ziggler1pxtfs01\WebProjects - TFS server url

This released locks on all files and folders under HE folder which is located at

D:\TFS\Source\Development\Cars\HE

like image 30
Ziggler Avatar answered Oct 04 '22 01:10

Ziggler