Коллеги, а чем вы смотрите списки изменений в git на Linux?
Вот хочу я, к примеру, перед отправкой на код-ревью еще разок свои изменения прошерстить. Пользуюсь либо "git diff", либо "git difftool" (у меня оно прикручено к Meld), но первый вариант чисто консольный, а второй вариант выдает мне файлы поочередно, один за другим. А мне удобнее видеть сразу все дерево изменений, чтоб я мог открывать файлы в произвольном порядке, видеть полный список затронутых файлов, переходить между ними произвольное количество раз и т.д. Можно как-нибудь прикрутить такое?
Пока на уме крутится какая-нибудь своя скриптовая обертка поверх git difftool, чтоб сначала затолкать все файлы из списка в какой-нибудь временный файл и потом уже вызвать Meld для всего списка. Но может можно как-то обойтись без велосипедостроения?
Щупал gitg — ближе к тому, что хочется, но оно показывает лишь небольшой "контекст" изменений, несколько строк до и после. А мне для счастья нужно чтоб весь файл и чтоб в две панели (как Meld).
Здравствуйте, Artem Korneev, Вы писали:
AK>Коллеги, а чем вы смотрите списки изменений в git на Linux?
AK>Вот хочу я, к примеру, перед отправкой на код-ревью еще разок свои изменения прошерстить. Пользуюсь либо "git diff", либо "git difftool" (у меня оно прикручено к Meld), но первый вариант чисто консольный, а второй вариант выдает мне файлы поочередно, один за другим. А мне удобнее видеть сразу все дерево изменений, чтоб я мог открывать файлы в произвольном порядке, видеть полный список затронутых файлов, переходить между ними произвольное количество раз и т.д. Можно как-нибудь прикрутить такое?
AK>Пока на уме крутится какая-нибудь своя скриптовая обертка поверх git difftool, чтоб сначала затолкать все файлы из списка в какой-нибудь временный файл и потом уже вызвать Meld для всего списка. Но может можно как-то обойтись без велосипедостроения?
AK>Щупал gitg — ближе к тому, что хочется, но оно показывает лишь небольшой "контекст" изменений, несколько строк до и после. А мне для счастья нужно чтоб весь файл и чтоб в две панели (как Meld).
если с консолью религия позволяет работать можно и так
git diff | vim -
vim по крайней мере в недавних версиях вполне хорошо показывает изменения с подсветкой. Если две панели край как нужны, то это не подойдет, впрочем мне подсветки хватает, чтобы бегло пробежаться по сути изменений.
Ну а если панели нужны — git difftool с установленным diff.tool=vimdiff показывает две панели, wq позволяет переключатся на следующее изменения — можно убрать промпт показывающий Y/n для каждого изменения -- difftool.prompt=false
Здравствуйте, Artem Korneev, Вы писали:
AK>Коллеги, а чем вы смотрите списки изменений в git на Linux?
AK>Вот хочу я, к примеру, перед отправкой на код-ревью еще разок свои изменения прошерстить. Пользуюсь либо "git diff", либо "git difftool" (у меня оно прикручено к Meld), но первый вариант чисто консольный, а второй вариант выдает мне файлы поочередно, один за другим. А мне удобнее видеть сразу все дерево изменений, чтоб я мог открывать файлы в произвольном порядке, видеть полный список затронутых файлов, переходить между ними произвольное количество раз и т.д. Можно как-нибудь прикрутить такое?
AK>Пока на уме крутится какая-нибудь своя скриптовая обертка поверх git difftool, чтоб сначала затолкать все файлы из списка в какой-нибудь временный файл и потом уже вызвать Meld для всего списка. Но может можно как-то обойтись без велосипедостроения?
AK>Щупал gitg — ближе к тому, что хочется, но оно показывает лишь небольшой "контекст" изменений, несколько строк до и после. А мне для счастья нужно чтоб весь файл и чтоб в две панели (как Meld).
emacs+magit по-моему самый лучший gui для git,
для этого конкретного случая:
magit показывает список измененных файлов включенных
и не включенных в commit, нажимаешь tab на нем,
и можно увидеть изменения нажимаем tab на следующем видим
уже изменения в двух файлах одновременно и т.д.
Здравствуйте, Artem Korneev, Вы писали:
AK>Пока на уме крутится какая-нибудь своя скриптовая обертка поверх git difftool, чтоб сначала затолкать все файлы из списка в какой-нибудь временный файл и потом уже вызвать Meld для всего списка. Но может можно как-то обойтись без велосипедостроения?
Здравствуйте, Zhendos, Вы писали:
Z>magit показывает список измененных файлов включенных Z>и не включенных в commit, нажимаешь tab на нем, Z>и можно увидеть изменения нажимаем tab на следующем видим Z>уже изменения в двух файлах одновременно и т.д.
Прошлый век же... IntelliJ IDEA:
подсвечивает изменения с точностью до слова
раскрашивает синтаксис языка
умеет игнорировать изменения пробельных символов, списков импортов, форматирования
красиво рисует blame/annotate
умеет history of selection, в т.ч. отслеживая перемещение куска кода между файлами
индексирует историю для мгновенного поиска
оба режима — side-by-side и unified
показывает раскрашенный scrollbar
Ну и одинаково работает в linux/mac/win
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
В качестве difftool у меня настроен Meld и в результате я вижу именно то, что надо — все дерево изменений, где я могу тыкать отдельные файлы, смотреть, возвращаться к ним повторно и т.д. Из мелких неудобств — то, что нужно добавить и локально закоммитить все изменения перед вызовом. Но это вроде терпимо.
Здравствуйте, Artem Korneev, Вы писали:
AK>·>Прошлый век же... IntelliJ IDEA: AK>Как получить в IntelliJ IDEA все дерево изменений?
Так это вроде всегда было. Справа внизу окошечко над "7". Или ты что-то другое имеешь в виду?
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ·, Вы писали:
AK>>Как получить в IntelliJ IDEA все дерево изменений? ·>Так это вроде всегда было. Справа внизу окошечко над "7". Или ты что-то другое имеешь в виду?
Да, похоже на то что нужно. Не знал, про это окошко.