ChatGPT解决这个技术问题 Extra ChatGPT

How to have TFS 2010 detect changes done to files outside of Visual Studio?

I'm using Team Foundation Server 2010 with Visual Studio 2010.

Whenever I modify a file outside of Visual Studio, TFS doesn't seem to detect the change done to the file, and thus doesn't offer me the option to check-in the file after it has been modified.

How can this be solved?

Subversion or Git (and maybe others) are comparing hashes of files instead of API to check in/out a file. Far more simpler, and far less risky !
worse TFS doesn't even noticed a changed file needs to be checked in, so you can often forget it.. until your colleague checks it out and realises your code doesn't compile or work. No wonder people say TFS is "VSS on steroids" - better, but still got many of VSS's problems.
It's VSS on steroids, in the same way that steroids destroy your body.

m
mhu

TFS has a "Reconcile" command for this:

Open the Source Control Explorer Right-click on the folder with the changes and choose Compare Select the files you want to reconcile (press CTRL+A to select all files) Click on the Reconcile button Set the options in the Reconcile Folder Differences dialog. Make sure Files that do not have pending changes is set to Check Out Click OK If you have local changes the Check Out dialog will be shown. Set the preferred Lock type Click Check Out

https://i.stack.imgur.com/BzvnH.png

See also: Reconcile differences between folders


This is the best answer as it does not require the command line or a risky 'Undo pending changes'.
Saved my day! I followed your steps precisely and it worked exactly as expected. :-)
Worked as described. Should be the best answer.
Unfortunately, when doing this over my whole project, I get the error The specified path, filename, or both are too long. The fully qualified name must be less than 260 characters, and the directory name must be less than 248 characters. Selecting individual folders is not an option for me, because I cannot remember all the files directories that I have changed. Any idea?
Working perfectly in VS 2015 update 3, thanks a lot. Should be the best answer, no tricky commands to make it works
A
Asbjørn Ulsberg

If you have a network connection to your server while you're working outside of Visual Studio, it's probably best to go ahead and check the file out before editing it, either using the tf command line client, or using the Windows Explorer shell integration that's available in the TFS Power Tools release. (Plus an increasing number of other tools have TFS integration that makes this automatic, but if you're just using notepad, this still needs to be a manual step.)

Of course, there are many times when you're working and you don't have a network connection available that allows you to check out the files.

If you know what files you've modified, you can just check them out from within Visual Studio, then you'll be able to check them back in.

If you don't know what files you've edited, you can detect the changes by running the tfpt online command (also part of the Power Tools release). This will locate the files that have been modified locally and check these files out from the server.


Visual Studio doesn't seem to detect changes to files just by checking them out. I just tried checking out a folder and the contents showed up in pending changes as edits. Then I deleted the folder in File Explorer and refreshed the pending changes but Visual Studio didn't say the files were deleted in pending changes. Also, the files were still present in Solution Explorer.
A
Adam Batkin

This worked for me, using the TFS Power Tools:

tfpt online /adds /deletes /diff /noprompt /recursive directory-name

(where directory-name is the path to the directory to be updated, otherwise it will detect changes throughout your entire TFS repository)

If you want to know what it would do without it actually making any changes, you can force it to do a dry run by adding the /preview switch.


Thanks for the tip @Adam Batkin. Worked like a charm and I'm now fixed up! +1
Beware, this command line will also include unwanted files: *.user, BIN\, obj, etc...
Cheers, I was looking for a command line way so I can automate updating the company's TFS from my local Git repo!
@SteveB there is a /exclude:fld_name/*,filename switch that can be used for excluding unwanted files .. that halped me alot
I run like this tfpt online /deletes /noprompt /recursive directory-name and got thousand files to be `changed`, so have to undo. But I never ever touched these, just deleted folder.
h
hugbe8
*1- make changes outside of Visual Studio
2- go to Visual Studio and open Source Control Explorer
3- right click on the folder > "Check Out for Edit" > "Check Out"
4- right click on the same folder > "Undo Pending Changes..." > "Undo changes" > "No to All"*

I tested this workaround on a branch and it helped me a lot. But there are only new files and new folder who has to be done manually.

I recommend to create a branch before the operation. It isolates you the time of the operation.

Note: This technique does also the files identical cleanup that TFS always marks as modified.


This should really be a comment on alga's post, not a new answer. In any case, I'd still recommend against doing this for the same reason I recommended against it when alga suggested it above.
Utterly brilliant ! Exactly what I was looking for (after our company moved our TFS server, and TFS/VS2010 were baffled by it). Now, I just have my edited files checked out. Thanks!
This works, but MS should provide better ways to do this. Command line and hacks should not be necessary on a good product (especially if this is embedded into VS). SVN and Mercurial do this for fun...
Instead of point 4, you could use tfpt uu stackoverflow.com/a/544285/10245
This just undoes what you did. It doesn't make Visual Studio aware of what you did.
O
Oleksandr G

Try this. It's some sort of workaround, but it works:

make changes outside of Visual Studio go to Visual Studio and open Source Control Explorer right click on the folder > "Check Out for Edit" > "Check Out" right click on the same folder > "Undo Pending Changes..." > "Undo changes" > "No to All"

That's it. The changes are visible now.


I'd really recommend against this - my biggest worry would be that I'd fat-fingering this one and accidentally undoing all my legitimate changes. In addition, you're checking out all the files which, depending on your client and server configuration, will probably take a lock on some or possible all files and could do a get latest on check out which could certainly be annoying.
This just undoes what you did. It doesn't make Visual Studio aware of what you did.
And if you created or added new items, in that session: Gone baby, gone!
C
Cristian Lupascu

There's also another solution to get TFS to figure out the files that have changed outside of Visual Studio:

Open the solution offline In Solution Explorer select the solution file and then press the Go Online button ()

TFS will automatically scan the solution for changes after this.

Step one can be achieved in a number of different ways. Here are some:

Use the GoOffline Extension - very simple and effective.

If you're asked for TFS credentials when opening the solution (no automatic domain auth), then don't enter the credentials. The solution will open offline and you'll login after pressing the Go Online button

(extreme solution) Disconnect your network cable; Open the solution; Connect the network cable.


C
CheckRaise

Visual Sourcesafe works like this too and the way I get VSS or TFS to notice the change is by checking the file out once inside Visual Studio.


g
g t

Open Source Control and go to your TFS folder. Right-click on the folder and choose 'Compare'.

Notice that your edited files show up marked in red.

I find this is better than tfpt online which also gets you files that are not readonly and not edited.


J
Jaider

I had this problem in the past, when my Internet was down and I worked offline, and most of my changes didn't appears in Team Explorer.

https://i.stack.imgur.com/5tqMF.png

*.cs;!obj\;!bin\;!packages\;

In this example, it will include in the search only C# files and exclude in the folders: bin, obj and packages.

Notice the column Pending Change has the info whether the file is marked as edit, add, etc... or nothing...

To mark as edit (when the local item has a matching server item), select the file and choose Check out for Edit...

To mark as add (when the local item doesn't have any server item), select the file and choose Add Files

Finally, I am not sure why the projects are not listed here (after I remove *.cs filter, still doesn't show up), so rebuild the solution to make sure the projects updates as well

+ In the solution, click the connect button (if shows up) that said Go Online.


G
Graham Laight

I found that in Visual Studio 2015, with the project open, Visual Studio discovered for itself that files had been modified externally, and automatically checked them out without me having to do anything. Checking in the project in the normal way saved the external modifications.


s
snumpy

In my case, the following worked (at least the one time I tried it):

Go to the Pending Changes panel Select View Options under either Included or Excluded changes. Switch between Show All and Show Solution Changes Switch back if desired

https://i.stack.imgur.com/pEnOJ.png

Changing the View Option appears to force a refresh of modified files.