Чому спільнота Git, здається, ігнорує бік-бок-різницю


33

Раніше я використовував Windows, SVN, SVT, черепаху та інше порівняння. Це було чудовим поєднанням для перегляду коду.

Зараз я використовую OSX і Git. Мені вдалося скласти спільний сценарій bash разом з Gitx і DiffMerge, щоб придумати ледь прийнятне рішення.

Я заплутався разом із цим налаштуванням і подібними, вже більше року. Я також намагався використовувати переглядач Github diff та переглядач Gitx diff, тому це не так, як я не дав їм шансів.

Є дуже багато розумних людей, які роблять чудові речі з Git. Чому б бічний бік не відрізнявся від можливості перегляду всього файлу? З людьми, які використовували і те, і інше, я ніколи не чув, щоб хтось любив сингл +/- кращий перегляд, принаймні для швидшого перевірки.


Ви можете налаштувати TortoiseGit, щоб використовувати Diyond Compare для дифів, і в цьому випадку ви побачите весь файл поруч (однак я ніколи не перевіряв цю програму особисто [але планую, один із цих днів]).
wildpeaks

1
Просто коментар, я використовую для використання Windows, SVN та поза порівнянням. Але тепер я використовую Ubuntu + Git. На щастя, я все ще можу використовувати свого старого друга за межами порівняння. Він працює чудово на Ubuntu. І хоча я не безкоштовна, вона мені коштує кожної копійки. :) Вибачте, я не можу запропонувати вам рішення на OSX, але я не хотів, щоб люди думали, що "Більше порівняння" - це рішення для Windows.
David S

Через 7 років я все ще дещо відчуваю це, але я навчився віддавати перевагу вбудованій різниці у всіх, а не найскладніших випадках. Тоді я вириваю свого старого друга за межами порівняння.
Кайл Хейронімус

Відповіді:


19

Я не можу говорити про Лінуса з цього приводу, але те, як git поводиться з difftools дуже однозначно, по-філософськи. git робить те, що робить дуже добре, і використовує зовнішні інструменти для всього іншого, включаючи більш складні диффузії та об'єднання.

Я також використовую DiffMerge з git на OS X, і мені не довелося вдаватися до будь-яких баш-оболонок. Це було хитро, але я налаштував параметри difftool та mergetool git безпосередньо для виклику DiffMerge, і тепер я можу переглядати розрізнення та вирішувати конфлікти злиття у відмінному, візуальному сторонній інструмент.

Ось моя конфігурація:

[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

1
Це добре, але коли змінюються декілька файлів, я переглядаю їх по черзі в тому порядку, коли git вирішує показати мені це. Я повинен закрити один, щоб відкрити інший. Тому я також використовую скрипти bash, коли хочу переглянути всі файли одразу.
Kyle Heironimus

Я не знаю, що ви очікували б побачити в плані "перегляду їх усіх відразу". Але перевірити git diff --stat. Надає приємний графічний перелік усіх змінених файлів із кількістю змінених рядків.
Дан Рей

Подумавши трохи більше про цю річ "відкрити їх усі відразу" ... Скільки файлів можна редагувати / переглядати одночасно? Я можу переглядати лише один файл у будь-який момент. Я здогадуюсь, я просто не отримую те, що ти хотів би зробити.
Ден Рей

2
Найкращий приклад - TortoiseSVN з програмою Beyond Compare. Наприклад, якщо в останньому комітеті мого колеги було змінено 3 файли, вони відобразять три файли у списку. Потім я можу натиснути відповідний файл, щоб побачити відмінності. Я також міг відкрити 3 окремі вікна, кожне з яких має різний файл. Тоді я можу переходити між ними вперед і назад, якщо потрібно, щоб вивчити зміни. В основному це дозволяє переглядати всі зміни на власних умовах, а не послідовно в порядку, продиктованому вашими документами.
Кайл Гейронімус

1
Ви знаєте, ви повинні перевірити Вежу. Це найкращий Mac git gui, який я коли-небудь бачив, і робить те, про що ти говориш, і ШЛЯХО. git-tower.com
Dan Ray

16

Ви помітите, що і сам SVN не пропонує побічного рішення. Перелічені вами інструменти - сторонні інструменти. Як і більшість речей у git, це надзвичайно настроюється, і він має чудову підтримку інструментів поза коробкою. У вас налаштований mergetool ? Якщо ні, то слід. Якщо так, спробуйте git difftool. Потім перегляньте головну сторінку для налаштування параметрів.

Я використовую KDiff3 як мій mergetool, оскільки це приємний інструмент для багатоплатформних програм та без подальшої конфігурації git difftoolробить саме те, що ви просите.


2
Насправді це добре з difftool, але все-таки не вдається при перегляді багатьох файлів. Їх потрібно відкривати по черзі. Щоб відкрити їх усі одразу, я мушу робити хакерство скриптів.
Кайл Гейронімус

9

Це філософія * nix. Дуже багато людей, які використовують ці інструменти, проводять багато часу в терміналі. Термінал не вимагає від нас переміщення руки з клавіатури до миші. Я знаю, що я віддаю перевагу стилю +/- перед візуальними інструментами розрізнення / злиття, здебільшого тому, що мене цікавлять лише відмінності. Я дбаю про 3-4 рядки навколо зміни та самої зміни. Все більше - це додаткова інформація, яка мені справді не допомагає.

Diff's зазвичай використовуються для швидкого перегляду того, що було змінено. Не читати код.

Я ніколи не вважав, що інструменти візуальної різниці є дуже корисними порівняно із типовими відмінностями у системах GNU. Все, що вони коли-небудь змушують мене, - це почати возитися з мишею і змусити мене прокручувати файл, з'ясовувати їх інтерфейс користувача, а потім боротися за повернення в командний рядок, де я можу зробити щось щодо проблеми, яку я бачу в diff .


1
vimdiff гаразд, він зазвичай показує лише вам частини. Я використовую це для злиття; миша не потрібна.
альтернатива

8
Ви коли-небудь дивитесь на зміни, внесені колегою? До областей коду, з якими ви не такі знайомі? Я постійно працюю, і не уявляю, як це роблять без боків, весь код. Для мене +/- чудово підходить для змін, внесених компанією "be", а не для інших. Не кажучи, що ви неправі чи погані чи що-небудь. Просто питаю.
Кайл Гейронімус

1
Я часто підстрибую до коду, зміненого співробітниками, часто в районах, з якими я не знайомий. Я думаю, що я використовував пліч-о-пліч, можливо, 3 або 4 рази колись, і міг легко обійтися без. Це просто залежить від того, яким є бажаний стиль роботи. Це працює для вас, я вважаю це зайвим.
Брайан Кноблауш,

0

З мого особистого використання, я думаю, що відповідь здебільшого є тим, що різниця є достатньо короткою, що це не має значення.

Для огляду коду я використовую повнофункціональний інструмент перегляду коду, який дає мені все, що мені подобається - як коментарі, підсвічування синтаксису та вид збоку.

Я використовую git diffмайже виключно під час постановки коду для фіксації; Коли це так, розбіжності досить малі та останні, що мені не потрібно бачити контекст, щоб запам'ятати, що відбувається.

Мій інструмент для перегляду коду за вибором Phabricator або, можливо, інструменти, інтегровані до IDE, які зрозумілі мовним контекстом. Я думаю, що потік запитів github є жахливим для перегляду коду, здебільшого тому, що він показує уніфікований розріз, а не сторона.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.