Dlaczego społeczność Git wydaje się ignorować różnice między sobą [zamknięte]

33

Kiedyś korzystałem z Windows, SVN, Tortoise SVN i Beyond Compare. To była świetna kombinacja do robienia recenzji kodu.

Teraz używam OSX i Git. Udało mi się połączyć skrypt bashowy z Gitx i DiffMerge, aby znaleźć ledwo akceptowalne rozwiązanie.

Przez ponad rok miałem problemy z konfiguracją i podobnymi. Próbowałem także użyć przeglądarki różnic Github i przeglądarki różnic Gitx, więc to nie tak, że nie dałem im szansy.

Jest tak wielu inteligentnych ludzi, którzy robią świetne rzeczy z Git. Dlaczego nie różnicować się z opcją obejrzenia całego pliku? Z ludźmi, którzy korzystali z obu, nigdy nie słyszałem o kimś, kto bardziej lubi widok +/-, przynajmniej na więcej niż szybką kontrolę.

Kyle Heironimus
źródło
Możesz ustawić TortoiseGit do korzystania z Beyond Compare dla diiffs, w którym to przypadku zobaczysz cały plik obok siebie (jednak nigdy nie testowałem tego ustawienia osobiście [ale planuję, jeden z tych dni]).
wildpeaks,
1
Tylko komentarz, używam do Windows, SVN i Beyond Compare. Ale teraz używam Ubuntu + Git. Na szczęście nadal mogę używać mojego starego przyjaciela Beyond Compare. Działa dobrze na Ubuntu. I choć nie jest darmowy, jest dla mnie wart każdego grosza. :) Niestety nie mogę zaoferować rozwiązania dla systemu OSX, ale nie chciałem, aby ludzie myśleli, że Beyond Compare było rozwiązaniem przeznaczonym tylko dla systemu Windows.
David S
7 lat później nadal czuję się trochę tak, ale nauczyłem się preferować różnicę we wszystkich przypadkach poza najbardziej złożonymi. Potem wybijam mojego starego przyjaciela Beyond Compare.
Kyle Heironimus

Odpowiedzi:

19

Nie mogę mówić w tej sprawie za Linusem, ale sposób, w jaki git radzi sobie z difftools, jest bardzo unikalny, mówiąc filozoficznie. git robi to, co robi bardzo dobrze, i używa zewnętrznych narzędzi do wszystkiego innego, w tym bardziej wyrafinowanego różnicowania i łączenia.

Używam DiffMerge z git również na OS X i nie musiałem uciekać się do żadnych powłok bashowych. To było trudne, ale skonfigurowałem ustawienia git dla narzędzia difftool i scaletool, aby bezpośrednio wywoływać DiffMerge, a teraz mogę wyświetlać różnice i rozwiązywać konflikty scalania w doskonałym, wizualnym narzędziu strony trzeciej.

Oto moja konfiguracja:

[mergetool "diffmerge"]
        cmd = "diffmerge --merge --result=\"$MERGED\" \"$LOCAL\" \"$(if test -f \"$BASE\"; then echo \"$BASE\"; else echo \"$LOCAL\"; fi)\" \"$REMOTE\""
        trustExitCode = false
[difftool "diffmerge"]
        cmd = diffmerge \"$LOCAL\" \"$REMOTE\"
[merge]
        tool = diffmerge
[diff]
        tool = diffmerge
Dan Ray
źródło
1
To działa dobrze, ale gdy zmienia się kilka plików, mogę je przeglądać pojedynczo, w kolejności, w której git decyduje się je mi pokazać. Muszę zamknąć jeden, aby otworzyć drugi. Dlatego używam również skryptów bash, gdy chcę przeglądać wszystkie pliki jednocześnie.
Kyle Heironimus
Nie wiem, czego można się było spodziewać w kategoriach „patrzenia na nich wszystkich naraz”. Ale sprawdź git diff --stat. Daje ładną graficzną listę wszystkich zmienionych plików wraz z liczbą zmienionych linii.
Dan Ray
Zastanawiając się trochę nad tym „otwórz je wszystkie naraz” ... Ile plików można edytować / wyświetlać jednocześnie? W danym momencie mogę oglądać tylko jeden plik. Chyba po prostu nie rozumiem, co byś chciał.
Dan Ray
2
Najlepszym przykładem jest TortoiseSVN z Beyond Compare. Na przykład, jeśli ostatnie zatwierdzenie mojego współpracownika zmieniło 3 pliki, pokażą trzy pliki na liście. Następnie mogę kliknąć odpowiedni plik, aby zobaczyć różnice. Mogę też mieć otwarte 3 osobne okna, każde z innym plikiem. Mogę następnie przechodzić między nimi, w razie potrzeby, aby zbadać zmianę. Zasadniczo pozwala wyświetlić wszystkie zmiany na własnych warunkach, a nie szeregowo w kolejności podanej przez twojego vcs.
Kyle Heironimus,
1
Wiesz, powinieneś sprawdzić Tower. To najlepsze git gui dla komputerów Mac, jakie kiedykolwiek widziałem, i robi to, o czym mówisz, i WIĘCEJ. git-tower.com
Dan Ray
16

Zauważysz, że sama SVN również nie oferuje rozwiązania równoległego. To, co wymieniłeś, to narzędzia innych firm. Podobnie jak w przypadku większości rzeczy w git, jest to niezwykle konfigurowalne i ma świetne wsparcie narzędzi po wyjęciu z pudełka. Czy masz skonfigurowane narzędzie do łączenia ? Jeśli nie, powinieneś. Jeśli tak, spróbuj git difftool. Następnie zajrzyj na stronę podręcznika, aby uzyskać informacje o opcjach konfiguracji.

Używam KDiff3 jako narzędzia do łączenia, ponieważ jest to miłe, wieloplatformowe narzędzie i bez dalszej konfiguracji git difftoolrobi dokładnie to, o co prosisz.

Ryan Stewart
źródło
2
W rzeczywistości działa z difftool, ale nadal nie działa, gdy patrzy się na wiele plików. Muszą być otwierane pojedynczo. Aby otworzyć je wszystkie naraz, muszę wykonać hackery skryptów bash.
Kyle Heironimus
9

To filozofia * nix. Wiele osób korzystających z tych narzędzi spędza dużo czasu w terminalu. Terminal nie wymaga od nas przesuwania rąk z klawiatury na mysz. Wiem, że wolę styl +/- niż wizualne narzędzia porównywania / scalania, głównie dlatego, że dbam tylko o różnice. Zależy mi na 3-4 liniach wokół zmiany i na samej zmianie. Wszystko inne to dodatkowe informacje, które naprawdę mi nie pomagają.

Różnice są powszechnie używane, aby szybko zobaczyć, co zostało zmienione. Nie czytać kodu.

Nigdy nie uważałem narzędzi wizualnego porównywania za bardzo przydatne w porównaniu do domyślnego porównania w systemach GNU. Jedyne, co mnie zmuszają, to zaczynać bawić się myszką i zmuszać mnie do przewijania pliku, wymyślenia interfejsu użytkownika, a następnie z trudem wracam do wiersza poleceń, gdzie mogę coś zrobić z problemem, który widzę w diff .

jsternberg
źródło
1
vimdiff jest w porządku, zwykle pokazuje tylko części. Używam go do scalania; mysz nie jest wymagana.
alternatywny
8
Czy kiedykolwiek patrzysz na zmiany wprowadzone przez współpracownika? Do obszarów kodu, których nie znasz? Robię to cały czas i nie wyobrażam sobie, aby robić to bez jednego kodu. Dla mnie +/- jest świetny dla zmian wprowadzonych przez be, ale nie dla innych. Nie mówię, że się mylisz, źle czy coś. Tylko pytam.
Kyle Heironimus
1
Często odbijam się od kodu zmienionego przez współpracowników, często w obszarach, których nie znam. Wydaje mi się, że korzystałem ramię w ramię może 3 lub 4 razy i bez trudu bym sobie z tym poradził. Zależy to tylko od preferowanego stylu pracy. To działa dla ciebie, uważam to za niepotrzebne.
Brian Knoblauch,
0

Z mojego osobistego użytku, myślę, że odpowiedź jest głównie taka, że ​​różnice są na tyle krótkie, że to nie ma znaczenia.

Do recenzji kodu używam w pełni funkcjonalnego narzędzia do sprawdzania kodu, które zapewnia mi wszystko, co lubię - takie jak komentarze, podświetlanie składni i widok obok siebie.

Używam git diffprawie wyłącznie podczas kodowania pomostowego do zatwierdzenia; W takim przypadku różnice są wystarczająco małe i wystarczająco nowe, że nie muszę widzieć kontekstu, aby pamiętać, co się dzieje.

Moje wybrane narzędzie do sprawdzania kodu Phabricator lub ewentualnie narzędzia zintegrowane z IDE, które uwzględniają kontekst językowy. Myślę, że przepływ żądań ściągania przez github jest okropny dla przeglądu kodu, głównie dlatego, że pokazuje zunifikowane diff, a nie obok siebie.

Aviv
źródło