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

Два основных инструмента при разработке программного обеспечения: Патчи 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 Так:

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

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

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

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


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Ксерикс сказал

    Отлично, большое спасибо

  2.   ангельский клинок сказал

    Если вам нужен цвет, используйте colordiff ^ __ ^

  3.   элиотайм3000 сказал

    Теперь я понимаю, как работают патчи в Debian.

  4.   Fer_pflores сказал

    Здравствуйте, я знаю, что системные уведомления могут отображаться с помощью notify-send с консоли, но я хотел бы иметь возможность запланировать, в какое время и как долго показывать мне уведомление, есть ли способ сделать это? Я использую elementary, который основан на Ubuntu 12.04, если это поможет, спасибо

    1.    Elav сказал

      Что ж, это можно сделать с помощью системы cron 😉

      1.    Fer_pflores сказал

        и как это можно сделать? Я едва научился использовать команду notify-send

        1.    ВАДА сказал

          Вы можете поискать cron здесь, в блоге, об этом много сообщений

  5.   Хоакин сказал

    Очень хорошо, спасибо!

  6.   Данхантер сказал

    Я всегда использую это для обновления ядра, я загружаю только патчи и применяю их к исходным текстам, поэтому мне не нужно загружать 80 МБ каждого выпуска.