2013-04-07 4 views
3

Мне типично нравится вводить сообщения git commit, глядя на git diff.В реальном времени git diff

Я очень люблю выход произведенный this little perl add-on to git, и производит вывод, который выглядит следующим из git diff (это скриншот git log -p но вы получите идею:

enter image description here

Из-за того, как он выдвигает на первый план из-за соответствующих частей линий, которые изменились, очень легко увидеть, что изменилось. Просто хотел поделиться этим, потому что это не похоже на то, что многие люди его используют, и для меня это превосходит использование внешнего отдельного diff или что-то в этом роде, потому что это работает над терминалом! Кроме того, это довольно простое подключение к UNIX-трубам, в общем, чем что-то вроде vimdiff, хотя vimdiff также очень удобно.

В любом случае, show-and-tell касается только касательного к реальному вопросу здесь, то есть я могу настроить окно терминала, где у меня есть представление git diff, но чтобы оно было динамическим, так что когда я сохраняю файл, он может обновить git diff для меня? В принципе, идея состоит в том, чтобы иметь окно терминала в качестве отображения в реальном времени точных изменений, которые я собираюсь совершить, и таким образом я могу просто переключиться прямо из текстового редактора, введя команду git commit при чтении всего набора изменений , и чтобы этот рабочий процесс также был возможен на машине Linux поверх SSH.

Это был бы действительно потрясающий рабочий процесс, и я думаю, что немного cmdline fu может получить меня там, но я не совсем уверен, с чего начать. Похоже, OS X и Linux потребуют отдельных реализаций. Я нашел fswatch, который может работать для меня, и, по-видимому, похож на inotify-watch на Linux. Мне не нужно было устанавливать это больше, чем только мою машину OS X dev, но, как я уже упоминал ранее, такая возможность над SSH была бы эпической.

Есть ли какие-нибудь другие быстрые и грязные подходы UNIXy к этой проблеме?

+0

В Emacs с 'vc-dir' вы можете нажать' g' в окне diff, чтобы обновить его содержимое. – choroba

+0

Это хорошо, но я больше из пользователя vim; плюс, требование ввода для обновления не является удовлетворительным. Я хочу что-то, что либо опросит (плохо, но просто), либо будет уведомлено о обновлениях файловой системы. –

ответ

1

Что случилось с использованием простого встроенного git commit -v, который просто показывает вам полную разницу в изменениях, которые необходимо совершить в сообщении о фиксации? (И Vim подчеркивает эту разницу, все в порядке, с настройкой запаса.)

+0

А, хороший совет. Я до сих пор не жалею об этом, так как это в реальном времени, и я получаю его, прежде чем я даже подумаю о совершении. На самом деле, vim подчеркивает этот материал очень адекватно. –

3

Вам понравится «watch git diff». Команда «смотреть» выполняет команду и показывает первую страницу вывода.

Вам нужно больше, чем первая страница вывода, а также вы не хотите, чтобы ее перемещали в начало вывода всякий раз, когда она обновляется, - вы хотите постоянно просматривать такое же смещение в разнице, пока не прокрутите.

Я не пробовал, но вы могли бы использовать «экран» или «tmux» для обеспечения большого виртуального экрана. (См. https://serverfault.com/questions/50772/is-there-a-paging-version-of-watch.)

Смежные вопросы