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

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

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

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

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

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

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

  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-сервер из лекции, что и как работает

      • FIXME: сокет после закрытия программы иногда не освобождается ("подвисает" на ~полторы минуты), надо подключаться с опцией "socket.SO_REUSEADDR" (выяснить, как это делать в Питоне)
    • {i} модифицировать echo-сервер таким образом, чтобы он воспринимал строки вида команда параметры:

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

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

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

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

      • (FIXME: не влезло по времени, даже при выпавшей демке про patch; модификация echo-сервера заняла много времени)

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

"\e[Z": menu-complete

Д/З

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

LecturesCMC/PythonDevelopment2024/Prac/05_GitPatch (последним исправлял пользователь hbd 2024-03-18 14:24:28)