2016-08-02 40 views
11

Od dłuższego czasu jestem zaniepokojony brakiem możliwości rozwiązania konfliktu przez SourceTree.Jak zintegrować rozwiązywanie konfliktów wizualnych (P4Merge) w SourceTree

Powinny istnieć procedury do zintegrowania p4Merge lub innego narzędzia do porównywania/scalania w SourceTree. Na razie p4Merge jest moim ulubionym narzędziem; teraz po prostu trzeba dowiedzieć się, jak

  1. Get SourceTree przyjąć p4Merge jako narzędzia seryjnej/diff i
  2. być w stanie rzeczywiście nazwać p4Merge z SourceTree rozwiązywania konfliktów.

Do tej pory jedyną rzeczą, którą udało mi się zrobić, to przekonanie P4Merge do wyświetlenia diff z SourceTree. Tak więc element menu Actions/External Diff działa, ale element menu Actions/Resolify Conflicts/Launch External Merge Tool nie ma (jest wyszarzony).

enter image description here

wybrałem P4Merge zarówno narzędzia Diff i narzędzia seryjnej w Narzędzia/Opcje/Diff karcie w SourceTree. Nie mogę umieścić niczego w dwóch polach wiersza poleceń (nawet jeśli wiedziałem, co tam umieścić), ponieważ są one również wyszarzone.

picture of Options/Diff dialog

jaki sposób dokonać tej pracy?

SourceTree ma wersję 1.9.5.0, która powinna być najnowsza w chwili pisania tego tekstu. P4Merge nie ma okna dialogowego Pomoc/Informacje, ale zostało zainstalowane niedawno (w ciągu ostatnich 3 miesięcy).

+0

... oprócz pierwotnego pytania. Obejmuje to takie rzeczy jak "Pull before push" i "gdzie kliknąć w SourceTree, aby uzyskać dostęp do elementu menu" Resolve Conflicts ", aby włączyć –

Odpowiedz

4

Posiadam SourceTree w wersji 1.5.2.0 i skonfigurowałem narzędzie zewnętrznego scalania, jak widać na zrzucie ekranu. P4Merge jest zainstalowany w C: \ Program Files \ Perforce i nie znajduje się na Path. Nie ustawiłem żadnych konkretnych wartości w .gitconfig dotyczących narzędzi diff/merge (zdaję sobie sprawę, że jest to rodzaj "działa na mojej maszynie", ale tak naprawdę było to proste).

here is how I configured external merge tool

chodzi o przepływ pracy, różne zespoły mogą mieć różne podejścia.Co robimy w naszym zespole do każdej pracy funkcji (zwykle wykonywane tylko przez jednego programistę) jest następujący (zrzuty ekranu dla jak wykonać każdą operację w SourceTree są na końcu postu):

  1. rebase rozwinąć gałąź
  2. Utwórz nową funkcję Rozgałęzienie
  3. pracy na funkcji sprawiają, że zobowiązuje (zwykle kilka)
  4. Gdyby nie było wiele zmian, aby rozwijać od czasu rozgałęzienia zostało zrobione, możemy połączyć się rozwijać nasza funkcja oddziału rozwiązywać wszelkie potencjalne konflikty i upewnij się, że funkcja nadal działa
  5. Scal aby rozwinąć gałąź, a następnie Push - nasz CI jest skonfigurowany do uruchamiania wdrożenia w środowisku testowym, gdy nowe zmiany są przekazywane do rozwinięcia gałęzi
  6. Jeśli wszystko jest w porządku, łączymy się z rozwinięciem gałęzi do gałęzi głównej, co spowodowałoby wdrożenie do środowiska produkcyjnego

Aby rebase powstać: enter image description here

Aby utworzyć nowy oddział z opracowania: enter image description here

Aby scalić przekształcić funkcji oddziału:

enter image description here

Oto jak SourceTree pokazuje, że istnieją konflikty po scaleniu: enter image description here

Aktualizacja: W celu sprawdzenia, czy SourceTree jest poprawnie skonfigurowany, proponuję wykonać następujące czynności:

  1. Pobierz i rozpakuj lokalnie małe repozytorium z dwoma oddziałami: https://1drv.ms/u/s!Ahrx2cBEbNLOy1xsUNuZJrUe80Ox
  2. Dodaj to repozytorium do SourceTree wykonując: File - Clone/New ... - Dodaj Working Copy - [wybierz folder 'git-config']
  3. Kliknij prawym przyciskiem myszy gałąź z nazwą "origin/version-2" i wybierz „scalenia”
  4. powinien pojawić się ostrzeżenie o scalić konfliktów, a następnie po kliknięciu prawym przyciskiem myszy na file.txt dodaje powinien pojawić:

enter image description here

+0

Ustawienia te nie działały Opcja menu" Launch External Merge Tool "jest wciąż szara –

+0

Widziałem twoją edycję ... Wygląda na to, że będę musiał zostać ekspertem od Git –

+0

Przepraszam z góry za głupie pytanie: po konfuzji rzeczywiście masz konflikty w obecnej branży, jeśli tak, możesz wyświetlasz zrzut ekranu menu kontekstowego, które pojawia się po kliknięciu pliku z konfliktami w sekcji "zmiany kopii roboczych" na ekranie? – oldbam

4

myślę, że don `t mieć problem z P4Merge. Problem polega na ty

Actions/rozwiązywania konfliktów/Uruchom Zewnętrzna Merge Narzędzie pozycja menu nie (jest nieaktywna)

myślę SourceTree ma ten problem, ponieważ Don`t mieć konfliktów w obecny oddział.

Możesz to łatwo sprawdzić: Polecenie uruchomienia git mergetool master. -d i zobacz dane wyjściowe. Przypuszczam, że wyjście będzie Żadne pliki nie wymagają scalenia.

Jeśli masz nierozwiązane konflikty w obecnej branży SourceTree Akcje/rozwiązywania konfliktów włączone do mnie: enter image description here

Proszę edytować pytanie, jeśli prawdziwy porblem z P4Merge iz drugiej mergetool SourceTree działa dobrze.

+0

Jednym z moich dominujących założeń jest to, że nie muszę rezygnować z linii poleceń, aby to zrobić. W końcu jest to kwestia korzystania z SourceTree. –

+0

Tak. Polecenie 'git mergetool master. -d' to tylko test. Uruchom go raz i spójrz na dane wyjściowe. Jeśli wyjście jest "Brak konieczności łączenia plików", oznacza to, że SourceTree działa poprawnie. Nie masz konfliktów do rozwiązania. – DmitryZyr