2009-08-18 16 views
4

Ich entwickle in Visual Studio 2005 mit TFS als Quellcodeverwaltung. Wenn ich eine Weile nicht an der Lösung gearbeitet habe, mache ich immer einen rekursiven Get Latest im Solution Explorer.TFS- und Visual Studio-Integration - Get Latest funktioniert nicht immer?

Dies scheint jedoch nicht immer zu funktionieren. Wenn ich weiß, dass ich nicht die neueste Version einer Datei habe, klicke auch mit der rechten Maustaste auf diese Schaltfläche (im Projektmappen-Explorer), wähle die Option "Bestimmte Version abrufen" und aktiviere das Kontrollkästchen "Erzwinge".

Ich scheinen, um das TFS-Quellcodeverwaltung-Fenster zu öffnen, und dort erzwingen ein Get der fraglichen Datei.

Auch der Projektmappen-Explorer hat oft das kleine "Auschecken zu jemand anderem" -Symbol neben Dateien, aber wenn ich in der Quellcodeverwaltung einchecke, werden sie überhaupt nicht ausgecheckt!

Ich möchte nur wissen, ob diese Probleme weit verbreitet sind, ob sie in VS2008 bestehen (ich habe TFS noch nicht für ein großes Projekt im Jahr 2008 verwendet), und wenn es irgendwelche Fixes oder Workarounds gibt.

+0

Ich kann nicht auf "weit verbreitet" kommentieren, kann aber bestätigen, dass ich die gleichen Erfahrungen gemacht habe. Ich habe Code für Wochen von jemand anderem ausgecheckt, aber ich bin die einzige Person, die daran arbeitet. –

+0

Wir verwenden Visual Studio 2008 mit TFS 2012 für SSIS-Projekte, und wir haben das gleiche Problem. Manchmal werden Dateien, die niemand ausgecheckt hat, in Ihrem lokalen Arbeitsbereich nicht aktualisiert, wenn Sie im Projektmappen-Explorer die neueste Version abrufen. Es scheint immer zu funktionieren, wenn Sie die neueste Version des TFS-Versionskontrollfensters verwenden, aber wie lehren Sie n Projektmitgliedern, den Lösungs-Explorer, den sie seit fünf Jahren verwenden, nicht mehr zu verwenden? – cmenke

Antwort

4

1) Ich würde keine Gewohnheit aus Get Latest aus dem Projektmappen-Explorer machen. Selbst wenn es immer 100% fehlerfrei funktioniert, ist es viel langsamer und weniger zuverlässig als das über die Befehlszeile oder den Quellcode-Explorer. SlnExp hat Ihre gesamte Projektstruktur zu kriechen und Ausgabe von nicht-rekursive Aufrufen ... Pseudo-Algorithmus:

parse sln file 
foreach project in sln 
    TFS_GET makefile 
    parse makefile 
    enumerate sourcefiles[] 
    TFS_GET sourcefiles[] 
loop 

SCE erfordern kein Parsing und gibt einen einzelnen rekursive Webservice Aufruf. Neben dem Leistungsgewinn ist dies viel sicherer:

(a) Build-Time-Abhängigkeiten sind nicht immer Teil der Dateiliste eines Projekts. Ausführbare Tools, 3rd Party Assemblies und Deployment Scripts sind alle gängigen Beispiele. SCE wird sie herunterladen, SlnExp nicht.

(b) Scoping Anrufe, die bei bestimmten Dateien eingehen, führen nicht zu dem erwarteten Ergebnis, wenn eine Datei umbenannt oder verschoben wird. Im besten Fall wird der "alte" Name von der Platte gelöscht; im schlimmsten Fall scheint überhaupt nichts zu passieren. (Dies kann die Ursache für den von Ihnen gemeldeten Fehler sein.) Damit eine Datei wirklich synchron mit dem Server umbenannt/verschoben wird, müssen die alten & neuen Pfade beide im Geltungsbereich des Get enthalten sein.

2) Im Laufe der Jahre gab es viele Fehlerbehebungen bei den SlnExp "Glyphen". Ich werde nicht behaupten, dass VS2008 SP1 in dieser Hinsicht perfekt ist, aber es ist definitiv verbessert.

+0

Aber wie können Sie die neueste Version im Projektmappen-Explorer deaktivieren, um sicherzustellen, dass niemand in Ihrem Team sie verwendet? Andersherum wird es (der Wechsel zum TFS Source Control Explorer) niemals passieren ..... nicht in einem großen Projekt mit einer Historie, SLN Explorer für alles zu verwenden. – cmenke

0

Manchmal Get specific versionsogar beide Kontrollkästchen überprüfen erhalten Sie nicht die neueste Datei. In den meisten Fällen wird eine Datei geändert, und Sie möchten diese Änderungen rückgängig machen, indem Sie die neueste Version erneut abrufen. Nun ... das ist Undo pending changes ist für und nicht der Zweck von Get specific version.

Im Zweifelsfall:

  • rückgängig machen anhängig auf die Datei überprüfen in (s), bevor Sie tun ‚Abrufen‘
  • ein tun vergleichen anschließend Ihre Datei entspricht die erwartete Version
  • , um sicherzustellen,
  • Führen Sie danach einen rekursiven 'Vergleich' für Ihr gesamtes Projekt durch, um zu sehen, was anders ist.
  • Behalten Sie das Fenster für ausstehende Änderungen im Auge und manchmal müssen Sie die 'Serverversion übernehmen' überprüfen, um eine inkompatible, anstehende Änderung zu beheben

Und das hier ist mein Favorit, dass ich gerade entdeckt:

  • Kontrolle der Output Fenster für Meldungen wie diese:

    Warnung - Unable R aufzufrischen: \ TFS-PROJEKTE \ www.example .com \ ExampleMVC \ Beispiel MVC \ Beispiel MVC.csproj, da Sie eine ausstehende Bearbeitung haben.

Ja diese kritische Meldung erscheint im Ausgabefenster. Keine anderen Benachrichtigungen! Keine ausstehenden Änderungen und keine andere Dialogmeldung, die Ihnen mitteilt, dass die Datei, die Sie gerade angefordert haben, nicht explizit abgerufen wurde! Und ja - Sie beheben dies, indem Sie einfach Undo pending changes ausführen und die Datei abrufen.

+0

Aber das ist das beabsichtigte Verhalten in Visual Studio und ist kein Fehler. Get Latest Version soll Ihre lokalen Änderungen NICHT überschreiben. Das hier beschriebene Problem besteht darin, dass Get Latest Version manchmal nicht die neueste Version einer Datei abruft, die Sie NICHT bearbeitet oder anderweitig ausgecheckt haben. Das ist ein echter Fehler und ein sehr schwerer. – cmenke

Verwandte Themen