03.17 Git и оформление патчей в виде файлов

Как работать совместно, если доступна только [голубиная почта, магнитные ленты, телеграф, иное]?

⇒ Пересылать проделанную работу.

  1. Классический: patch + diff

    • В Windows доступны в составе дистрибутива Git Bash

    • {OK} использование diff для изготовления патча и patch для наложения.

    • Формат патча, изготовленного diff -u (unified diff)

    • {i} Изготовить список процессов ps -ef > файл1. Позапускать левые программы. Изговтовить список процессов ps -ef > файл2. Получить unified diff этих файлов, записать его в файл.patch. Применить патч.

      • <!> В Windows вместо ps -ef можно использовать команду tasklist /v

  2. Git и unified diff/path
    • {OK} Использование git format-patch и git am

    • {i} Создать репозиторий. Четырежды выполнить последовательность команд

         1 $ ps -ef > processes
         2 $ git add .; git commit -a -m "Fix `date`"
         3 $ # Позапускать левые программы
         4 
      
      • С помощью git format-patch сделать патчсет на последние три коммита

      • Сделать ветку на базе первого коммита

      • Применить патчсет к этой ветке
      • Посмотреть результаты
  3. Сетевое взаимодействие
    • B) async'овский echo-сервер из лекции, что и как работает

    • {i} модифицировать echo-сервер таким образом, чтобы он воспринимал строки вида команда параметры:

      • print произвольные слова — вывод произвольных слов

      • info {host|port} — вывод адреса или порта клиента (writer.get_extra_info('peername'))

      • FIXME: при отсоединении клиента (закрытие по ctrl-C/ctrl-D), сервер "из лекции" выдаёт простыню диагностики. Следует сделать сервер устойчивым к отсоединениям.

    • B) send/receive-клиент из лекции

    • {i} Модифицировать send/receive-клиент, добавив туда cmd из двух команд выше, причём в команде info должно поддерживаться достраивание параметров (host и port)

Как сделать пролистывание подстановок в дополнение к показу списка? Это свойство GNU Readline, конкретно — функция menu-complete (). Задаётся помещением строки "последовательность": menu-complete в файл ~/.inputrc. Например, Shift+Tab:

"\e[Z": menu-complete

Д/З

<!> Задача_1. MUD в формате клиент-сервер (однопользовательский), оформление изменений в виде патчсета.

LecturesCMC/PythonDevelopment2025/Prac/05_GitPatch (последним исправлял пользователь FrBrGeorge 2025-03-22 13:47:45)