Aktuelle Änderungssatz-ID für TFS im Arbeitsbereich abrufen

80

Wie finde ich heraus, welchen Änderungssatz ich derzeit in meinem lokalen Arbeitsbereich habe?

Klar, ich kann eine Datei auswählen und ihren Verlauf anzeigen. Wenn diese Datei jedoch nicht kürzlich aktualisiert wurde, ist ihr Änderungssatz wahrscheinlich älter als die zuletzt aktualisierten Dateien in derselben Lösung.

Ein möglicher Fehler, den wir möglicherweise machen, besteht darin, dass wir den Verlauf in der Lösungsdatei anzeigen. Die Lösungsdatei ändert sich jedoch nur selten, wenn Sie ein neues Projekt hinzufügen oder Änderungen auf Lösungsebene vornehmen.

Um den Änderungssatz herauszufinden, muss ich mich am Ende daran erinnern, welche Dateien zuletzt geändert wurden, und ihren Verlauf anzeigen.

Gibt es einen besseren Weg, dies zu tun?

Boyan
quelle
Warum möchten Sie Ihren aktuellen Änderungssatz wissen?
Ewald Hofman
Was passiert, wenn Ihr Arbeitsbereich nicht für einen Änderungssatz repräsentativ ist? $/AStellen Sie sich vor , Sie haben eine Zuordnung vorgenommen und das Änderungsset A abgerufen. Sie haben eine Zuordnung vorgenommen $/Bund das Änderungsset B abgerufen. In welchem ​​Änderungssatz befindet sich Ihr Arbeitsbereich?
Edward Thomson
8
@Ewald Überlegen Sie, in die Vergangenheit zu reisen, um herauszufinden, wann ein Fehler aufgetreten ist. Dies kann erfordern, dass Sie in Ihrem Arbeitsbereich mehrmals "Spezifische Version abrufen" ausführen, um zu früheren Änderungssätzen zu gelangen, die sehr langwierig, langwierig und fehleranfällig sein können. Es ist äußerst nützlich zu erkennen, welches genaue Änderungsset sich derzeit im Arbeitsbereich befindet, um Ablenkungsfehler zu vermeiden und den Schuldigen zu bestätigen. Ich bin froh, dass ich diesen Befehl heute gefunden habe.
Louis
1
Ich empfehle diese Frage!
Fernando Espinosa
Willkommen bei 5+ Jahren später. Um die Frage von @ EwaldHofman zu beantworten, habe ich in meinem Szenario mehrere Änderungen in meinem Arbeitsbereich vorgenommen und möchte sehen, was sich auf dem Server seit meinem letzten "Get" geändert hat. In meinem Fall weiß ich nicht, welche Version ich zuletzt "bekommen" habe.
JMD

Antworten:

4

Die übliche Antwort, die tf.exe history . /rdirekt verwendet wird, funktioniert, kann aber schrecklich langsam sein. In unserem Fall dauert es 10-15 Sekunden. Ich verwende jetzt eine zweistufige Überprüfung und überprüfe zuerst die Revision einiger beliebiger Dateien (ich verwende die Dateien im Stammordner).

Mit Powershell:

$tfexepath = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\tf.exe"
$localpath = "C:\some\tfs\directory"

$result = & $tfexepath history $localpath /noprompt /stopafter:1 /version:W 
"$result" -match "\d+" | out-null
$id = $matches[0]

Suchen Sie dann mit dem Flag / r vom Stamm aus, beschränken Sie die Suche jedoch auf die oben gefundene Revision:

$result2 = & $tfexepath history $localpath /r /noprompt /stopafter:1 /version:$id~W        
"$result2" -match "\d+" | out-null
$id2 =  $matches[0]

#result:
Write-Host $id2 

Für unsere Codebasis reduziert dies die Gesamtzeit von 10-15 auf 1,4-1,5 Sekunden.

Soweit ich weiß, gibt es keine Nachteile oder Einschränkungen, aber ich nehme an, dass es in einem winzigen Repository langsamer sein könnte. - Ich würde es gerne wissen.

Johan Lundberg
quelle
1
Ausgezeichnete Alternative. Ich habe meine Laufzeit von 55 Sekunden auf 1,5 Sekunden verkürzt. Vielen Dank!
Bobroxsox
1
.... im nachhinein - erstaunt, dass ich mit msvc leben konnte und froh, dass ich mich nur mit der vergangenheit befassen musste.
Johan Lundberg
3

Führen Sie eine Visual Studio-CMD aus (in meinem Fall heißt VS2015: "Developer Command Promp for VS2015"), wechseln Sie in Ihren Projektordner und führen Sie den folgenden Befehl aus:

tf history . /r /noprompt /stopafter:1 /version:W
xero399
quelle
2
Vielen Dank! Ohne diese Antwort hätte ich mich immer noch gefragt, warum der Befehl im Bereich "Befehlsfenster" in Visual Studio nicht funktioniert.
Ojdo
Vielen Dank!!!!!!
Inga
1

Wenn Sie PowerShell verwenden möchten ( siehe auch ; entspricht der Antwort von @kroonwijk ):

  1. Aktivieren Sie das tfs-Snapin (einmal, falls noch nicht geschehen ).

    add-pssnapin Microsoft.TeamFoundation.PowerShell

  2. Verwenden Sie das Cmdlet tfs, um die aktuelle ID des Änderungssatzes abzurufen

    Get-TfsItemHistory <PATH_TO_PROJECT> -Recurse -Stopafter 1 -Version W

Fuma
quelle
0

Wenn Sie wirklich keine Ahnung haben, welche Version Sie haben, sollten Sie eine der anderen vorgeschlagenen Methoden verwenden. Wenn Sie sich nicht sicher sind, ob Sie eine bestimmte Version haben oder zwischen einigen Änderungssätzen unsicher sind und lieber über die VS TFS-GUI arbeiten möchten, können Sie die folgenden Schritte ausführen:

  1. Wählen Sie den Änderungssatz aus, bei dem Sie sich sicher sein möchten, und führen Sie einen Vergleich durch: Geben Sie hier die Bildbeschreibung ein
  2. Wenn Sie keinen Unterschied haben: Geben Sie hier die Bildbeschreibung ein

    oder, wenn die einzigen Dateien, die sich unterscheiden, Dateien sind, bei denen Änderungen anstehen: Geben Sie hier die Bildbeschreibung ein

Das heißt, Sie sind mit der betreffenden Version auf dem neuesten Stand.

  1. ** Wenn Sie nicht sicher sind, ob eine Datei mit einer ausstehenden Änderung tatsächlich auch nicht aktuell ist, können Sie diese Dateiversion mit den folgenden Eigenschaften überprüfen: Geben Sie hier die Bildbeschreibung ein
Ravid Goldenberg
quelle