Подтвердить что ты не робот

Инструмент визуального исправления для Linux

У меня есть файл и патч для него. Я хотел бы визуально применить патч, t.i. посмотрите, как изменения, предлагаемые патчем, выглядят в контексте, вносят некоторые исправления и сохраняют полученный файл.

Какой инструмент может это сделать?

Ни один из инструментов визуальных различий (т.е. meld, diffuse, diffmerge) не выполняет то, что я хочу: они не работают с патчами, они просто объединяют целые файлы.

4b9b3361

Ответ 1

Мне очень нравится Kompare. Это просто (очень хороший) графический интерфейс для diff.

http://www.caffeinated.me.uk/kompare/

sudo apt-get install kompare

Создание и применение патчей

Kompare может создать файл исправления в котором перечислены только различия между двумя сравниваемыми текстовыми файлами A и B. Кроме того, Kompare может применять патч файл, который был создан таким образом исходный файл A и, таким образом, пересчитать содержание соответствующий файл B. Это удобная утилита для прохождения исправлена ​​версия файла для друг, у которого уже есть версию того же файла, поскольку только (относительно небольшой) файл исправления имеет для доставки, и приемник может сгенерировать исправленный файл применение патча к оригиналу файл.

Патчи, созданные и применяемые Kompare совместимы с файлами исправлений сгенерированный или примененный командой интерфейс интерфейса diff, потому что Kompare на самом деле просто графический передняя часть - diff, а патчи - созданный и примененный патчем, который получает вызов от Kompare.

Ответ 2

Смотрите использовать vimdiff с файлом diff.

gvim original.file +'vert diffpa the.patch'

Это откроет GVim и разделит окно, с оригиналом слева и патчем, примененным справа. Затем вы можете добавлять, удалять или изменять ханки и сохранять изменения. (Ну, если вы хотите создать new.patch, вам придется снова запустить diff, но это не сложно.)

Ответ 3

Вы можете использовать режим emacs ediff. Он позволяет вам видеть и проверять каждый фрагмент в интерактивном режиме. Для чего это стоит, у меня есть этот удобный script в моем каталоге ~/bin:

#!/bin/bash
if [ "$1" == "--text" ] ; then shift; fi
if diff --brief $1 $2 ; then 
exit 0 
else
emacs -fn 8x13bold --eval '(ediff-files "'$1'" "'$2'")'
fi

Ответ 4

Другая опция: если вы используете Eclipse, вы можете визуально создавать и применять патчи.

Ответ 5

Идея с инструментами визуальных различий заключается в том, что вы можете:

  • создать резервную копию исправленного файла (или новую девственную проверку всего дерева)
  • применить патч
  • используйте средство визуального разграничения для просмотра изменений в контексте
  • внести любые изменения в исправленный файл в инструмент визуального разграничения.

Некоторые инструменты, такие как meld или diffuse, автоматически будут отличаться от предыдущей завершенной версии файлов.

Ключевым понятием является то, что вы можете применить патч, они отбрасывают все, что вам не нравится, пока у вас есть резервная копия, или если вы работаете над чистой проверкой.

Если вы чувствуете себя более комфортно с чтением и изменением унифицированных различий и просто хотите иметь больше контекста для diff, emacs имеет довольно уникальную функцию, которая next-error-follow-mode при просмотре файла diff (diff major mode). Это показывает контекст строки diff в целевом файле.

Ответ 6

Я обычно использую GitExtensions (.NET и Mono), который также поддерживает интерактивное использование патчей. Надеюсь, вы уже знакомы с git.

Изменить: Все упомянутые ниже строки не отображаются в KDiff3. И, как я уже говорил, я еще не пробовал.

GitExtension обычно использует KDiff3 как инструмент diff, который способен просматривать патчи.

http://kdiff3.sourceforge.net/doc/kpart.html

Используя его для патчей, он имеет только два окна, (редактировать) и не поддерживает слияние: (но он также поддерживает 3-х разный diff для полных папок и т.д.

На самом деле я никогда не пробовал его с помощью патчей.

Ответ 7

На платформах, где Kompare (довольно хороший программный продукт, если KDE - ваша чашка чая), я согласен с тем, что Eclipse - отличный вариант.

Я постоянно был неохотным пользователем Eclipse. Я постоянно впечатлен тем, насколько хорошо работают инструменты (как только платформа наконец запустится).

В Fedora у меня есть почти каждый интерфейс, установленный для каждого из основных механизмов управления версиями (SVN - также обслуживающий мои машины Windows, Mercurial, git и т.д.); Meld довольно приятный (без патч-интерфейса, хотя). Погружение также хорошо работает. Но так как Eclipse знает, как применять патчи, а проект Work Copy создан сам, как только я решил создать проект в папке, содержащей мою рабочую копию, это может стать моим любимым интерфейсом SVN.

Ответ 8

Есть ли xxdiff делать то, что вы ищете?

Ответ 9

Я бы использовал meld.

Создайте две копии файлов, один без и другой с патчем. Используйте meld для их сравнения, и вы можете точно увидеть, что изменяет патч, и вносить необходимые изменения.

Серьезно, почему это так сложно?