Терминальная пятница: исправления и различия

Два основных инструмента при разработке программного обеспечения: Патчи y Разница. Не секрет, как они работают, но думаю, это будет интересный пост. 

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


Разница

Мы ссылаемся на сравнение, оно сравнивает «исходный» файл с «новым» и сообщает нам о различиях, которые существуют между ними. Этот инструмент также позволяет нам создавать файлы .patch, которые мы используем для создания исправлений для наших программ.


Патчи

Это команда, с помощью которой мы буквально «исправляем» наш исходный файл, добавляя и / или удаляя строки в соответствии с инструкциями, содержащимися в файле .patch.


Существует также вимдифф, который представляет собой визуальный инструмент для применения исправлений без необходимости использования файла .patch, поскольку он сравнивает «исходный» и «новый», и в одном и том же файле можно редактировать построчно или весь документ. Я не буду это объяснять, но думаю, что это заслуживает упоминания.


Пример

Теперь самое интересное. Пример!

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

оригинал.ш

#! / bin / bash echo "Введите свое имя:" прочтите имя echo "Введите свой возраст:" прочтите возраст, если [[18 -lt $ age]], затем echo "Привет, $ name, вам $ стар и вы можете голосовать!" else echo "Привет, $ name, ты $ старый и не можешь голосовать ..." fi
Изображение кода в Vim

Изображение кода в Vim

Готово, вот запущенный скрипт:

Вроде все работает нормально

Вроде все работает нормально

Итак, как хорошие пользователи, мы делимся нашим скриптом с другом :), но мы получаем сообщение о том, что у него есть недостаток, что когда ему 18, он говорит, что он не может голосовать, когда должен.

Логическая ошибка :(

Логическая ошибка 

Теперь приступим к исправлению небольшой ошибки и внесем несколько изменений ...

new.sh

#! / bin / bash maxAge = 18 echo "Введите свое имя:"; прочтите имя echo "Напишите свой возраст:"; прочитать возраст, если [[$ maxAge -le $ age]]; затем эхо "Привет, $ name, тебе $ лет, и ты можешь голосовать!" else echo "Привет, $ name, ты $ старый, и ты не можешь голосовать ..." fi exit 0
Новый код, написанный на Vim

Новый код написан на напор

Предположим, сценарий очень тяжелый. Итак, чтобы избежать повторной отправки всего скрипта, мы создаем .patch 

$ diff -u original.sh new.sh> patch.patch

И теперь у нас есть наш патч. Здесь вид в напор:

Вот как выглядят инструкции для .patch. Белым цветом - строки, которые не были изменены, синим - удаленные, оранжевым - добавленные.

Вот как выглядят инструкции для .patch. Белым цветом - строки, которые не были изменены, синим - удаленные, оранжевым - добавленные.

И чтобы применить это, мы просто используем файл .patch в скрипте, который нужно исправить. Здесь называется оригинальныйAmigo.sh, который является точной копией скрипта оригинал.ш

Сценарий друга

Сценарий друга

$ patch originalFriend.sh <patch.patch

И это оставляет нам наш файл оригинальныйAmigo.sh Так:

Сценарий друга после применения патча

Сценарий друга после применения патча

Как видите, очень легко получить различия и применить патчи. Это все от меня.

Привет народ, будем читать в следующую пятницу.


Добавить в качестве предпочтительного источника в Google