67
votes

I am new to TFS. At my job I mapped the TFS projects to local directories, performed a get, and everything works as I expected. When I edit files on my local copy, source control automatically checks them out for editing and tracks the files with pending changes via the pending changes window. Then I just check them in throughout the day using that window.

However, at home this doesn't appear to be happening. I have access to source control and using source control explorer, have mapped the projects to local directories. This appeared to work fine. However, when I open the projects and open files, changes I make are not automatically checking out files. In fact, visual studio isn't even changing their read-only status until I try to save my changes; at that point it warns me that the file is read-only and asks if I would like it to try to overwrite the permissions and save. I do and it works fine. But again, no changes register in the pending changes window. I'm kind of lost. The only source control experience I really have is subversion and the visual studio AnkhSVN plugin.

I've even opened my solution by double-clicking the solution file that is in source control explorer. You would think it would be fully-aware that the solution I'm opening should be tracked by source control.

Edit

Since people seem to be questioning my use of the phrase "at home", let me clarify. There are no problems with the network. I am on a VPN. I can browse source control just fine. I have since reinstalled everything for various reasons. All went well. I'm just having an issue with Visual Studio not tracking changes to files and allowing them to be committed back to source control. So to sum it up:

How could Visual Studio stop tracking changes after being mapped correctly, and allowing me to get latest? I can update from source control, I just can't commit. Pending changes window is empty even after making changes.

11
what do you mean by "However, at home this doesn't appear to be happening"? Are you accessing TFS remotely?Mitch Wheat
I am on a VPN to my work network. I have no problems accessing the network and TFS. I can browse source control. My problem is that VS isn't tracking changes and allowing me to commit them back to source control. Also, if it helps ease your mind about the VPN, this used to work at home just fine. I have reinstalled my OS, and now it's being goofy.Chev
My question is about visual studio and source control. I have been very clear in this. Forget about the VPN, or that I installed my OS. Is there any way that source control can stop tracking changes? Maybe a setting I'm overlooking.Chev
Not sure why I deserve -1. I have been very clear and specific. Just because you don't know the answer doesn't mean it's a bad question.Chev
You really did do a great job of explaining the problem. You also did a great job of adding the answer here.Man, this saved me some time. TFS is a pile.Adrian Carr

11 Answers

126
votes

Right-click on your solution node and go down to "Go online". For various reasons visual studio can mark your solution as tracked by source control, but "offline". It is still tracking changes behind the scenes waiting for you to go online again. After doing this my pending changes window populated and all is normal. I figured it was a simple setting somewhere.

22
votes

I found an interesting setting under File > Source Control > Advanced > Change Source Control.

If I bind the solution and project to my source control server (unbind first if it's already bound), then suddenly it works! Saving a file automatically checks out the file and tracks changes.


Edit: this seems like a bug in Visual Studio. If this workaround helps you, it would be awesome if you create a new issue at https://developercommunity.visualstudio.com with your Visual Studio version info, so that the dev team can fix this!

5
votes

Go into source control bindings (File->Source Control->Change Source Control) - you may notice only the project is bound - not the solution. Select the solution, click Bind.

3
votes

I've just found how to fix this when you are already online (there is no "Go online" option visible). Actually, there ARE pending changes listed but they are hidden below the huge "Comment" section. To view them increase hight of the "Pending Changes" tab and decrease hight of the "Comment" section: you'll see the list of pending changes that was hidden by poorly scaled VS :)

3
votes

in my case i solved issue by applying steps below:

  1. Right click your solution file on the solution explorer.
  2. click add solution to source control
  3. if you already added your files to tfs click ignore for file replacements popups
1
votes

I was getting the "Read Only" error like everybody else. I got the little red check next to the files I was editing, but when I went to save, it asked me to save the file b/c it was read-only. I moved the files from a different version control system and they were still read-only. But I don't think Git cares about keeping files read-only like my old source control did. So I just removed the read-only flags in Windows Explorer and was good to go.

1
votes

For me the solution was to go to Team Explorer Pending Changes window, and from there initiate the check-in. Did not see the go online option, i am on VS2013. Thanks to all for the pointers!

1
votes

I found one of my projects actually wasn't added to the source control at all - somehow that had been missed and so any changes to that project would not get checked out. I right-clicked on the solution node, clicked "add to source control" it warned me that some projects were already being tracked and I elected to ignore those projects and it proceeded to add the missing project(s) to source control. Now the check-out works perfectly. Sharing in case it helps anyone else!

1
votes

None of the answers/suggestions on this post helped me, but I've found a solution to the problem after hours of hair pulling.

  1. Locate your .git folder for your repository.
  2. Delete the index.lock file inside.
  3. Restart Visual Studio.

(I am using Visual Studio 2017.)

0
votes

Close the solution . open the solution file in notepad Then remove the below section.

GlobalSection(TeamFoundationVersionControl) = preSolution
        SccNumberOfProjects = 2
        SccEnterpriseProvider = {3CF58AB4-18FA-4F8D-95D4-32DDF27D189R}
        SccTeamFoundationServer = https://serverIP/Project
        SccLocalPath0 = .
        SccProjectUniqueName1 = Ecample\\Example.csproj
        SccProjectName1 = Example
        SccLocalPath1 = Example
EndGlobalSection

then open the solution once again it should prompt to bind, do the binding properly.