Scal polecenie (Kontrola wersji programu Team Foundation)
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Visual Studio 2019 | Program Visual Studio 2022
Polecenie tf merge
stosuje zmiany z jednej gałęzi do innej w kontroli wersji programu Team Foundation (TFVC).
Nuta
Wyniki tego polecenia nie zostaną odzwierciedlone na serwerze usługi Azure DevOps, dopóki nie wykonasz operacji zaewidencjonowania. Aby uzyskać więcej informacji, zobacz Tworzenie kodu i zarządzanie oczekującymi zmianami.
Warunki wstępne
Aby użyć polecenia merge
, ustaw uprawnienie Wyewidencjonuj na Zezwalaj na dla folderu obszaru roboczego, który zawiera destination
, oraz uprawnienia Odczyt ustawioną na Zezwalaj dla folderu obszaru roboczego zawierającego source
. Aby uzyskać więcej informacji, zobacz Domyślne uprawnienia serwera TFVC.
Składnia
tf merge [/recursive] [/force] [/candidate] [/discard]
[/version:versionspec] [/lock:none|checkin|checkout] [/preview]
[/baseless] [/nosummary] [/noimplicitbaseless] [/conservative] [/format:(brief|detailed)] [/noprompt] [/login:username,[password]] source destination
Parametry
Argumenty
argumentów
opis
<versionspec>
Udostępnia wartość, taką jak C2
dla opcji /version
. Aby uzyskać więcej informacji na temat analizowania specyfikacji wersji w celu określenia, które elementy znajdują się w jego zakresie, zobacz Use Team Foundation version control commands (Używanie poleceń kontroli wersji programu Team Foundation).
<source>
Określa plik lub folder, który ma działać jako źródło scalania.
<destination>
Określa plik lub folder, który ma działać jako miejsce docelowe scalania.
<username>
Udostępnia wartość opcji /login
. Wartość username
można określić jako DOMAIN\username
lub username
.
Opcje
opcji
opis
/recursive
Pasuje do specyfikacji elementu source
w bieżącym katalogu i wszystkich podfolderów.
/force
Ignoruje historię scalania i scala określone zmiany ze źródła do miejsca docelowego, nawet jeśli niektóre lub wszystkie te zmiany zostały scalone wcześniej.
/candidate
Drukuje listę wszystkich zmian w źródle, które nie zostały jeszcze scalone z miejscem docelowym. Lista powinna zawierać identyfikator zestawu zmian, który nie został scalony, oraz inne podstawowe informacje o tym zestawie zmian. Gwiazdka dla danego wyniku wskazuje, że została częściowo scalona, co oznacza, że niektóre zmiany w zestawie zmian zostały scalone, a inne zmiany nie zostały scalone.
/discard
Nie wykonuje operacji scalania, ale aktualizuje historię scalania, aby śledzić, czy wystąpiło scalanie. Spowoduje to odrzucenie zestawu zmian w celu użycia dla określonego scalania.
/version
W przypadku scalania selektywnego ta opcja określa zakres, który ma zostać scalony z miejscem docelowym. W przypadku scalania zaległości ten parametr określa wersję, przed którą należy scalić wszystkie nieskonsumowane zmiany.
W przypadku scalania selektywnego zakres wersji określa początek i punkt końcowy zestawu zmian do scalenia. Jeśli na przykład próbujesz scalić wersję 4~6
, zestawy zmian 4, 5 i 6 zostaną scalone.
/lock
Określa typ blokady lub usuwa blokadę z elementu. Aby uzyskać więcej informacji, zobacz Omówienie typów blokad.
Opcje blokady:
None
: nie umieszcza blokady na elemencie i usuwa istniejącą blokadę z elementu.Checkin
: Inni użytkownicy mogą wyewidencjonować określone elementy, ale nie mogą zaewidencjonować poprawek w zablokowanych plikach, dopóki nie zwolnisz blokady przez wykonanie ewidencjonowania. Jeśli inni użytkownicy zablokowali dowolny z określonych elementów, operacja blokowania zakończy się niepowodzeniem.Checkout
: uniemożliwia użytkownikom zaewidencjonowanie lub wyewidencjonowanie jednego z określonych elementów do momentu jawnego zwolnienia blokady. Jeśli inni użytkownicy zablokowali dowolny z określonych elementów lub jeśli istnieją oczekujące zmiany względem dowolnego elementu, operacja blokowania zakończy się niepowodzeniem.
/preview
Przedstawia podgląd scalania.
/baseless
Wykonuje scalanie bez wersji podstawowej. Oznacza to, że umożliwia użytkownikowi scalanie plików i folderów, które nie mają relacji scalania. Po scaleniu bezpodstawnym istnieje relacja scalania, a przyszłe scalania nie muszą być bezpodstawne.
Nuta
Scalanie bezpodstawne nie może usuwać plików w obiekcie docelowym. Możesz ręcznie przenosić takie zmiany.
/noimplicitbaseless
Określa, że funkcja TFVC nie będzie wykonywać niejawnego scalania bezpodstawnego między dwoma elementami o tej samej nazwie względnej w dwóch niepowiązanych drzewach kontroli wersji.
/nosummary
Pomija podsumowanie konfliktów, błędów i ostrzeżeń.
/noprompt
Pomija wszelkie monity dotyczące danych wejściowych.
/conservative
Powoduje więcej konfliktów podczas scalania jednej gałęzi z inną.
/format
Określa formaty podsumowania konfliktów scalania:
-
Brief
(wartość domyślna): podsumowuje tylko łączną liczbę konfliktów, ostrzeżeń i błędów. -
Detailed
: zawiera podsumowanie nie tylko całkowitej liczby konfliktów, ostrzeżeń i błędów, ale także zawiera szczegółowe informacje o każdym konflikcie.
Nuta
Ta opcja ma zastosowanie tylko wtedy, gdy dane wyjściowe zawierają podsumowanie konfliktów. Nie można wyświetlić podsumowania, jeśli jest używana opcja /nosummary
lub scalanie spowodowało mniej niż 10 konfliktów, ostrzeżeń i błędów.
/login
Określa nazwę użytkownika i hasło do uwierzytelniania użytkownika w usłudze Azure DevOps.
Uwagi
Możesz użyć merge
polecenia narzędzia wiersza polecenia tf
, aby zastosować zmiany w istniejącej gałęzi źródłowej do istniejącej gałęzi docelowej. Możesz scalić pojedynczą wersję lub kompletny zestaw zmian w gałęzi docelowej. Możesz scalić zmiany ze źródła do gałęzi docelowej lub z lokalizacji docelowej do gałęzi źródłowej.
Polecenie merge
umożliwia również wykonywanie zapytań o zmiany w gałęzi źródłowej, które nie zostały zmigrowane do gałęzi docelowej. Polecenie pozwala również wskazać, że niektóre zmiany nigdy nie zostaną scalone ze źródła do miejsca docelowego i nie powinny być już wyświetlane jako kandydaci do operacji scalania.
Aby uzyskać więcej informacji na temat korzystania z narzędzia wiersza polecenia tf
, zobacz Używanie poleceń kontroli wersji programu Team Foundation.
Scalanie bezpodstawne
Scalanie bezpodstawne umożliwia scalanie elementów, które nie są bezpośrednio rozgałęziane ze sobą. Aby wykonać scalanie bezpodstawne, należy użyć polecenia tf merge
. W przypadku scalania bezpodstawnego funkcja TFVC nie zawiera żadnych informacji o relacji plików w gałęziach. W bezpodstawnym scalaniu należy wykonać ręczne rozwiązania konfliktów. Po wykonaniu bezpodstawnego scalania i rozwiązywaniu wszelkich konfliktów funkcja TFVC rejestruje historię scalania i ustanawia relację między folderami i plikami.
Po uruchomieniu tf merge
funkcja TFVC wykonuje niejawne bezpodstawne scalanie między elementami o tej samej nazwie względnej w dwóch poprzednich drzewach kontrolowanych przez wersję. Na przykład możesz scalić powiązane gałęzie $SRC
i $TGT
. Obie gałęzie zawierają niepowiązany plik o nazwie a.txt. Po uruchomieniu tf merge
polecenie TFVC ustanawia relację między dwoma plikami a.txt, jeśli dwa pliki są takie same, szyfrowanie zgodne ze standardem FIPS jest wyłączone, a plik źródłowy nie jest powiązany z żadnym innym plikiem w obiekcie docelowym.
Jeśli uruchomisz tf merge
z zestawem opcji /noimplicitbaseless
, gdy narzędzie TFVC spróbuje scalić dwie gałęzie, dwa pliki a.txt tworzą konflikt przestrzeni nazw podczas próby zaewidencjonowania zmian. Aby rozwiązać konflikt, musisz zmienić nazwę jednego z plików.
Przykłady
Poniższy przykład scala zmiany z MyFile_beta1, które nie zostały scalone z MyFile_RTM.
c:\projects>tf merge MyFile_beta1 MyFile_RTM /recursive
Poniższy przykład scala zestaw zmian 137 z branch2.
c:\projects>tf merge /version:C137~C137 branch1 branch2 /recursive
Poniższy przykład scala wszystkie zestawy zmian w zestawie zmian 137 do branch2.
c:\projects>tf merge /version:C137 branch1 branch2 /recursive
Poniższy przykład wyświetla listę zestawów zmian w branch1, które nie zostały scalone z branch2.
c:\projects>tf merge /candidate branch1 branch2 /recursive
Poniższy przykład wyświetla listę zmian w branch2, które nie zostały scalone z powrotem do branch1.
c:\projects>tf merge /candidate branch2 branch1 /recursive
Poniższy przykład odrzuca zestaw zmian 137 jako kandydata do scalenia z branch2.
c:\projects>tf merge /discard /version:C137~C137 branch1 branch2 /recursive
Poniższy przykład odrzuca wszystkie zestawy zmian w zestawie zmian 137 jako kandydatów do scalenia z gałęzią branch2.
c:\projects>tf merge /discard /version:C137 branch1 branch2 /recursive