Wie kann TFS 2010 Änderungen an Dateien außerhalb von Visual Studio erkennen?

118

Ich verwende Team Foundation Server 2010 mit Visual Studio 2010.

Wenn ich eine Datei außerhalb von Visual Studio ändere, scheint TFS die an der Datei vorgenommenen Änderungen nicht zu erkennen und bietet mir daher nicht die Möglichkeit, die Datei nach dem Ändern einzuchecken.

Wie kann das gelöst werden?

Asmo
quelle
18
Subversion oder Git (und möglicherweise andere) vergleichen Hashes von Dateien anstelle von API, um eine Datei ein- und auszuchecken. Viel einfacher und weit weniger riskant!
Steve B
8
Schlimmer noch, TFS hat nicht einmal bemerkt, dass eine geänderte Datei eingecheckt werden muss, sodass Sie sie oft vergessen können. Bis Ihr Kollege sie auscheckt und feststellt, dass Ihr Code nicht kompiliert oder funktioniert. Kein Wunder, dass die Leute sagen, TFS sei "VSS gegen Steroide" - besser, aber es gibt immer noch viele Probleme von VSS.
Gbjbaanb
Es ist VSS bei Steroiden, genauso wie Steroide Ihren Körper zerstören.
Ian Kemp

Antworten:

48

Wenn Sie eine Netzwerkverbindung zu Ihrem Server haben, während Sie außerhalb von Visual Studio arbeiten, ist es wahrscheinlich am besten, die Datei vor dem Bearbeiten auszuchecken, entweder mit dem Befehlszeilenclient tf oder mit der entsprechenden Windows Explorer-Shell-Integration verfügbar in der Version TFS Power Tools . (Außerdem verfügen immer mehr andere Tools über eine TFS-Integration, die dies automatisch macht. Wenn Sie jedoch nur den Editor verwenden, muss dies immer noch ein manueller Schritt sein.)

Natürlich gibt es viele Male, in denen Sie arbeiten und keine Netzwerkverbindung verfügbar ist, über die Sie die Dateien auschecken können.

Wenn Sie wissen, welche Dateien Sie geändert haben, können Sie sie einfach in Visual Studio auschecken und dann wieder einchecken.

Wenn Sie nicht wissen, welche Dateien Sie bearbeitet haben, können Sie die Änderungen durch Ausführen von erkennen tfpt online Befehl ausführen (ebenfalls Teil der Power Tools-Version). Dadurch werden die lokal geänderten Dateien gefunden und diese Dateien vom Server ausgecheckt.

Edward Thomson
quelle
Visual Studio scheint Änderungen an Dateien nicht nur durch Auschecken zu erkennen. Ich habe gerade versucht, einen Ordner auszuchecken, und der Inhalt wurde in ausstehenden Änderungen als Änderungen angezeigt. Dann habe ich den Ordner im Datei-Explorer gelöscht und die ausstehenden Änderungen aktualisiert, aber Visual Studio hat nicht gesagt, dass die Dateien in ausstehenden Änderungen gelöscht wurden. Außerdem waren die Dateien noch im Projektmappen-Explorer vorhanden.
Kyle Delaney
160

TFS hat hierfür den Befehl "Reconcile":

  1. Öffnen Sie den Versionsverwaltungs-Explorer
  2. Klicken Sie mit der rechten Maustaste auf den Ordner mit den Änderungen und wählen Sie Vergleichen
  3. Wählen Sie die Dateien aus, die Sie abgleichen möchten (drücken Sie CTRL+ A, um alle Dateien auszuwählen).
  4. Klicken Sie auf das Abgleichen Knopf
  5. Legen Sie die Optionen im Dialogfeld " Ordnerunterschiede abgleichen " fest. Stellen Sie sicher , dass Dateien ohne ausstehende Änderungen auf eingestellt sind Auschecken eingestellt sind
  6. Klicken Sie auf OK
  7. Wenn Sie lokale Änderungen haben, wird das Dialogfeld " Auschecken " angezeigt. Stellen Sie den bevorzugten Sperrtyp ein
  8. Klicken Sie auf Auschecken

Ordnerunterschiede abgleichen

Siehe auch: Unterschiede zwischen Ordnern abgleichen

mhu
quelle
13
Dies ist die beste Antwort, da weder die Befehlszeile noch ein riskantes "Rückgängig machen ausstehende Änderungen" erforderlich sind.
NickH
4
Rettete meinen Tag! Ich habe Ihre Schritte genau befolgt und es hat genau wie erwartet funktioniert. :-)
Gilad Barner
4
Arbeitete wie beschrieben. Sollte die beste Antwort sein.
Nicolas
Wenn ich dies für mein gesamtes Projekt mache, wird leider der Fehler angezeigt. Der angegebene Pfad, Dateiname oder beide sind zu lang. Der vollständig qualifizierte Name muss weniger als 260 Zeichen und der Verzeichnisname weniger als 248 Zeichen enthalten. Die Auswahl einzelner Ordner ist für mich keine Option, da ich mich nicht an alle Dateiverzeichnisse erinnern kann, die ich geändert habe. Irgendeine Idee?
Kraftwer1
2
Funktioniert perfekt in VS 2015 Update 3, vielen Dank. Sollte die beste Antwort sein, keine kniffligen Befehle, damit es funktioniert
Nicolas Leucci
35

Dies funktionierte bei mir mit den TFS Power Tools:

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

(Dabei ist Verzeichnisname der Pfad zu dem zu aktualisierenden Verzeichnis, andernfalls werden Änderungen in Ihrem gesamten TFS-Repository erkannt.)

Wenn Sie wissen möchten, was es tun würde, ohne dass tatsächlich Änderungen vorgenommen werden, können Sie es durch Hinzufügen des /previewSchalters zu einem Probelauf zwingen .

Adam Batkin
quelle
Danke für den Tipp @Adam Batkin. Arbeitete wie ein Zauber und ich bin jetzt repariert! +1
iOnline247
9
Achtung, diese Befehlszeile enthält auch unerwünschte Dateien: * .user, BIN \, obj, etc ...
Steve B
1
Prost, ich habe nach einer Befehlszeilenmethode gesucht, damit ich die Aktualisierung des TFS des Unternehmens von meinem lokalen Git-Repo aus automatisieren kann!
Mark K Cowan
2
@SteveB gibt es einen /exclude:fld_name/*,filenameSchalter, der verwendet werden kann, um unerwünschte Dateien auszuschließen .., die mich viel halped
Kresimir Pendic
1
Ich laufe so tfpt online /deletes /noprompt /recursive directory-nameund habe tausend Dateien, die "geändert" werden müssen, also muss ich sie rückgängig machen. Aber ich habe diesen Ordner nie berührt, sondern nur gelöscht.
Dzmitry Lahoda
16
*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"*

Ich habe diese Problemumgehung an einem Zweig getestet und sie hat mir sehr geholfen. Es gibt jedoch nur neue Dateien und neue Ordner, die manuell erstellt werden müssen.

Ich empfehle, vor der Operation einen Zweig zu erstellen. Es isoliert Sie die Zeit der Operation.

Hinweis: Mit dieser Technik werden auch die Dateien identisch bereinigt, die TFS immer als geändert markiert.

hugbe8
quelle
3
Dies sollte wirklich ein Kommentar zu Algens Beitrag sein, keine neue Antwort. Auf jeden Fall würde ich immer noch empfehlen, dies aus dem gleichen Grund zu tun, den ich dagegen empfohlen habe, als Alge es oben vorgeschlagen hat.
Edward Thomson
Absolut genial! Genau das, wonach ich gesucht habe (nachdem unser Unternehmen unseren TFS-Server verschoben hat und TFS / VS2010 davon verblüfft waren). Jetzt habe ich nur meine bearbeiteten Dateien ausgecheckt. Vielen Dank!
Mike Gledhill
Dies funktioniert, aber MS sollte bessere Möglichkeiten bieten, dies zu tun. Befehlszeile und Hacks sollten für ein gutes Produkt nicht erforderlich sein (insbesondere wenn dieses in VS eingebettet ist). SVN und Mercurial tun dies zum Spaß ...
user2173353
Anstelle von Punkt 4 könnten Sie tfpt uu stackoverflow.com/a/544285/10245
Tim Abell
Dies macht nur rückgängig, was Sie getan haben. Visual Studio wird nicht darauf aufmerksam gemacht, was Sie getan haben.
Kyle Delaney
7

Versuche dies. Es ist eine Art Problemumgehung, aber es funktioniert:

  1. Nehmen Sie Änderungen außerhalb von Visual Studio vor
  2. Gehen Sie zu Visual Studio und öffnen Sie den Versionsverwaltungs-Explorer
  3. Klicken Sie mit der rechten Maustaste auf den Ordner> "Zum Bearbeiten auschecken" > "Auschecken".
  4. Klicken Sie mit der rechten Maustaste auf denselben Ordner> "Ausstehende Änderungen rückgängig machen ..." > "Änderungen rückgängig machen" > " Nein zu allen "

Das ist es. Die Änderungen sind jetzt sichtbar.

Alexander G.
quelle
3
Ich würde wirklich dagegen empfehlen - meine größte Sorge wäre, dass ich diesen fett fingere und versehentlich alle meine legitimen Änderungen rückgängig mache. Darüber hinaus checken Sie alle Dateien aus, die abhängig von Ihrer Client- und Serverkonfiguration wahrscheinlich einige oder möglicherweise alle Dateien sperren und beim Auschecken die neuesten Informationen erhalten, was sicherlich ärgerlich sein könnte.
Edward Thomson
1
Dies macht nur rückgängig, was Sie getan haben. Visual Studio wird nicht darauf aufmerksam gemacht, was Sie getan haben.
Kyle Delaney
Und wenn Sie in dieser Sitzung neue Elemente erstellt oder hinzugefügt haben: Gone Baby, weg!
Christian
4

Es gibt auch eine andere Lösung, mit der TFS die Dateien ermitteln kann, die sich außerhalb von Visual Studio geändert haben:

  1. Öffnen Sie die Lösung offline
  2. Wählen Sie im Projektmappen-Explorer die Lösungsdatei aus und klicken Sie dann auf die Schaltfläche Online gehen ( GoOnline-Schaltflächensymbol)

Danach überprüft TFS die Lösung automatisch auf Änderungen.

Schritt eins kann auf verschiedene Arten erreicht werden. Hier sind einige:

  • Verwenden Sie die GoOffline Erweiterung - sehr einfach und effektiv.
  • Wenn Sie beim Öffnen der Lösung nach TFS-Anmeldeinformationen gefragt werden (keine automatische Domänenauthentifizierung), geben Sie die Anmeldeinformationen nicht ein. Die Lösung wird offline geöffnet und Sie melden sich an, nachdem Sie auf die Schaltfläche Online gehen geklickt haben
  • (extreme Lösung) Trennen Sie Ihr Netzwerkkabel. Öffnen Sie die Lösung. Schließen Sie das Netzwerkkabel an.
Cristian Lupascu
quelle
3

Visual Sourcesafe funktioniert auch so und ich kann VSS oder TFS dazu bringen, die Änderung zu bemerken, indem ich die Datei einmal in Visual Studio auschecke.

CheckRaise
quelle
1

Öffnen Sie die Quellcodeverwaltung und wechseln Sie in Ihren TFS-Ordner. Klicken Sie mit der rechten Maustaste auf den Ordner und wählen Sie "Vergleichen".

Beachten Sie, dass Ihre bearbeiteten Dateien rot markiert sind.

Ich finde das ist besser als tfpt onlinedas bringt dir auch Dateien, die nicht schreibgeschützt und nicht bearbeitet sind.

user2572682
quelle
1

Ich hatte dieses Problem in der Vergangenheit, als mein Internet ausgefallen war und ich offline arbeitete und die meisten meiner Änderungen nicht im Team Explorer angezeigt wurden.

Nach diesen Schritten: Zuerst wird in der Lösung Explorer, wählen Sie den Ordner, den Sie erneut conciliate wollen (für mich, es war meine gesamte Lösung Ordner) und wählen Sie vergleichen ... Geben Sie hier die Bildbeschreibung ein Klicken Sie in Modify Filter und im Filter text- Feld könnten Sie eingeben:

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

In diesem Beispiel werden nur C # -Dateien in die Suche einbezogen und in den Ordnern bin, obj und packages ausgeschlossen.

Beachten Sie, dass in der Spalte Ausstehende Änderung die Information enthalten ist, ob die Datei als Bearbeiten, Hinzufügen usw. oder nichts markiert ist.

  • Um als Bearbeiten zu markieren (wenn das lokale Element ein übereinstimmendes Serverelement hat), wählen Sie die Datei aus und wählen Sie Sie Zum Bearbeiten auschecken ...
  • Um als Hinzufügen zu markieren (wenn das lokale Element kein Serverelement enthält), wählen Sie die Datei aus und wählen Sie Dateien hinzufügen

Schließlich bin ich mir nicht sicher, warum die Projekte hier nicht aufgeführt sind (nachdem ich den Filter * .cs entfernt habe, wird er immer noch nicht angezeigt). Erstellen Sie daher die Lösung neu, um sicherzustellen, dass auch die Projekte aktualisiert werden

+ Klicken Sie in der Lösung auf die Schaltfläche "Verbinden" (falls angezeigt) mit der Aufschrift "Online gehen" .

Jaider
quelle
0

Ich stellte fest, dass Visual Studio in Visual Studio 2015 bei geöffnetem Projekt selbst herausfand, dass Dateien extern geändert wurden, und sie automatisch auscheckte, ohne dass ich etwas tun musste. Durch das normale Einchecken des Projekts wurden die externen Änderungen gespeichert.

Graham Laight
quelle
0

In meinem Fall hat Folgendes funktioniert (zumindest einmal, als ich es ausprobiert habe):

  1. Gehen Sie auf die ausstehenden Änderungen Panel
  2. Wählen Sie unter Eingeschlossene oder Ausgeschlossene Änderungen die Option Ansichtsoptionen aus.
  3. Wechseln Sie zwischen Alle anzeigen und Lösungsänderungen anzeigen
  4. Bei Bedarf zurückschalten

TFS-Änderungen aktualisieren

Durch Ändern der Ansichtsoption wird eine Aktualisierung geänderter Dateien erzwungen.

snumpy
quelle