2011-10-13 28 views
59

Jak mogę się dowiedzieć, jaki zestaw zmian obecnie mam w moim lokalnym obszarze roboczym?Uzyskaj bieżący identyfikator zestawu zmian w obszarze roboczym dla TFS

Oczywiście, mogę wybrać jeden plik i wyświetlić jego historię. Jeśli jednak ten plik nie był ostatnio aktualizowany, jego zestaw zmian jest prawdopodobnie starszy niż nowsze zaktualizowane pliki w tym samym rozwiązaniu.

Jedną z możliwych pomyłek, które możemy popełnić, jest przeglądanie historii w pliku rozwiązania, jednak plik rozwiązania rzadko się zmienia, chyba że dodajemy nowy projekt/wprowadzamy zmiany na poziomie rozwiązania.

W końcu, aby znaleźć zestaw zmian, muszę pamiętać, jakie były najnowsze pliki i zobaczyć ich historię.

Czy jest lepszy sposób to zrobić?

+0

Która wersja TFS? –

+0

Dlaczego chcesz znać swój obecny zestaw zmian? –

+0

Co się dzieje, gdy obszar roboczy nie jest reprezentatywny dla zestawu zmian? Weź pod uwagę, że masz zmapowane '$/A', a wyszukujesz zestaw zmian A, a masz mapowane' $/B', a otrzymałeś zestaw zmian B. Jakim zestawem zmian jest twój obszar roboczy? –

Odpowiedz

0

Jeśli chcesz użyć PowerShell (see also; równoważne odpowiedź @kroonwijk):

  1. umożliwić TFS przystawki (raz, jeśli nie już)

    add-pssnapin Microsoft.TeamFoundation.PowerShell

  2. użycie TFS cmdlet, aby uzyskać bieżący identyfikator changeset

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

0

Wspólna odpowiedź do użytku tf.exe history . /r bezpośrednio działa, ale może być strasznie powolny. W naszym przypadku zajmuje to 10-15 sekund. Używam teraz sprawdzianu dwustopniowego, najpierw sprawdzając wersję niektórych arbitralnych plików (używam plików w folderze głównym).

Z 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] 

A potem, potem z flagą/r, ale ograniczyć wyszukiwanie zacząć od przeglądu stwierdzono powyżej:

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

#result: 
Write-Host $id2 

Cztery naszą bazę kodu, to obniża całkowity czas z 10-15 do 1,4-1,5 sekundy.

O ile rozumiem, nie ma żadnych wad ani ograniczeń, ale przypuszczam, że może to być wolniejsze w małym repozytorium. - Cieszę się, że wiem.

Powiązane problemy