2015-07-23 42 views
6

miałem następujący problem: TFSTFS seryjnej nie odebrać changeset rollback (y)

Mam utworzony nowy oddział z głównej gałęzi. W tym czasie w nowym oddziale zaszło kilka zestawów zmian (niech będą one określone od CS-1 do CS-2). W pewnym momencie miałem modyfikację w gałęzi MAIN i ta modyfikacja została scalona w nowym oddziale (nowy zestaw zmian w oddziale: CS-3).

Po tym, nowy oddział miał kilka zmian (które produkowały zestawy zmian od CS-4 do CS-5). Zrobiłem także cofnięcie CS-3 i w rezultacie nowy zestaw zmian CS-6 został utworzony w nowym oddziale.

Teraz pytanie brzmi: Które zestawienia powinny być zawarte w scaleniu z nowej gałęzi z powrotem do GŁÓWNEGO? Logicznie, powinno to być: [CS-1 - CS-2, CS-4 - CS-5 i CS-6]. Ale prawdziwy wynik był następujący: [CS-1 - CS-2, CS-4 - CS-5]

Czy ktoś ma jakiś pomysł: Dlaczego zestaw zmian wycofywania (CS-6) nie jest zawarty w scaleniu? Jest oczywiste, że wycofanie zestawu zmian CS-6 nie jest traktowane tak samo jak zwykły zestaw zmian.

+0

co masz na myśli changeset wycofywania nie została zawarta w scaleniu z powrotem do głównej gałęzi? Czy TFS nie pokazał konfliktu między CS3 (Main Branch) a CS-6 (z dev/new branch)? – Isaiah4110

+0

Nie, TFS nie pokazał konfliktu między główną gałęzią a nowym oddziałem. Ponadto odpowiedź na pierwsze pytanie: zestaw zmian, którego typ jest wycofywany (CS-6), nie został zaproponowany przez TFS do połączenia z odgałęzieniem MAIN. – Vlada

Odpowiedz

6

Przede wszystkim bardzo dobrze wyjaśnione pytanie :). Opcja który trzeba rozpocząć korzystanie jest "

tf wycofywania/keepmergehistory

Poniższy przykład objaśnia 2 różne opcje, które możemy wykorzystać robiąc wycofywanie zmian, a dlaczego masz specyficzne zachowanie wspomniałeś wyżej. I odtworzył całą scenariusza wspomniano powyżej, ale wycofana z wiersza poleceń za pomocą

/keepmergehistory

Tym razem, gdy próbowałem połączyć się z powrotem oddziału dev z odgałęzieniem głównym, wywołał on cofniętą zmianę (CS6) z powrotem do gałęzi źródłowej/głównej.

Wyjaśnienie z MSDN:

Podczas wycofywanie changeset który obejmuje oddziału lub zmianę scalania, zwykle chcą przyszłych scala między tego samego źródła i tego samego celu uwzględnienia tych zmian. Można jednak użyć opcji/keepmergehistory, aby w przyszłości dokonać scalenia tego samego źródła z tym samym obiektem docelowym, aby wykluczyć zestawy zmian uwzględnione w poprzedniej operacji scalania.

Na przykład, można użyć tego polecenia w następującej sytuacji:

  • W dniu 30 czerwca 2009 roku, wykonanie pełnego scalenia wszystkich elementów z $/BranchA/do $/BranchB/:

    c: \ workspace> tf scalić $/BranchA $/BranchB

sprawdzić w tej seryjnej jako część changeset 292.

  • W lipcu wprowadza się kilka zmian $/BranchA/Util.cs.Te zmiany są objęte w Zestawienia zmian 297, 301, i 305.
  • W dniu 1 sierpnia 2009 roku, scalić $/BranchA/Util.cs do $/BranchB/Util.cs:

    c: \ workspace > tf scalania $/BranchA/Util.cs $/BranchB/Util.cs

sprawdzić w zmianie w ramach changeset 314. wynikiem tej pracy jest to, że zmiany, które wykonane w 297 Zestawienia zmian , 301 i 305 do $/BranchA/Util.cs są teraz również stosowane do $/BranchB/Util.cs.

  • Tydzień później, zdajesz sobie sprawę, że zmiany, które wprowadzone do $/BranchA/Util.cs w lipcu nie są odpowiednie do $/BranchB/Util.cs. Możesz użyć polecenia rollback, aby zanegować te zmiany. Gdy użyjesz komendy wycofania, aby wycofać zmianę scalenia lub zmianę oddziału , musisz podjąć decyzję.
  • Jeśli chcesz, aby zmiany wprowadzone w lipcu do $/BranchA/Util.cs do być ponownie stosowane do $/BranchB/Util.cs w przyszłych zlepia należy wpisać następujące polecenie:

    c: \ workspace> tf wycofywania/changeset: 314

  • Jeśli chcesz, aby zmiany wprowadzone w lipcu do $/BranchA/Util.cs do nigdy być ponownie zastosowany do $/BranchB/Util. cs w przyszłości scala, powinieneś wpisz następujące polecenie:

  • c: \ workspace> tf wycofywania/changeset: 314/keepmergehistory

  • Kilka tygodni później scalić $/BranchA/do $/BranchB /: c: \ workspace> tf scalić $/BranchA $/BranchB

  • Jeśli pominięto opcję/keepmergehistory zmiana seryjnej będzie zastosowanie do $/BranchB/Util.cs wszystkie Zestawienia zmian, które zostały zastosowane do $/BranchA/Util.cs od changeset 292, w tym Zestawienia zmian 297, 301 ,

  • Innymi słowy, przyszłe połączenie spowoduje cofnięcie zmiany wycofania.

  • Jeśli włączone opcji/keepmergehistory, operację scalania będą miały zastosowanie do $/BranchB/Util.cs wszystkie Zestawienia zmian, które zostały zastosowane do $/BranchA/Util.cs od changeset 292, z wyłączeniem Zestawienia zmian 297, 301 , i 305. Innymi słowy, przyszłe scalenie nie cofnie zmiany zmiany wycofywania. W związku z tym zawartość w BranchA może nie odpowiadać zawartości na BranchB.

MSDN SOURCE

+0

Dziękuję za szczegółowe wyjaśnienie. Działa to bardzo dobrze. – Vlada