Сложное слияние и метки. Командная строка

Метки (теги)

Две роли тегов:

Сложное слияние

При merge и rebase могут возникать конфликты: в двух историях изменён один и тот же контекст:

   1 $ vim keyword.py
   2 
   3 $ git commit -a
   4 [second 6568682] Merge branch 'master' into second
   5 $ git log --graph --pretty=oneline --abbrev-commit --all
   6 *   6568682 (HEAD -> second) Merge branch 'master' into second
   7 |\
   8 | * f1fbdeb (master) False+except
   9 * | 0804e39 finally+yield
  10 |/
  11 * 8ab1be9 Initial commit
  12 

Mergetool

Инструмент, в котором есть {1} , имеет общее название «merge tool».

Пример на том же репозитории:

Для постоянного вызова правильного mergetool:

Организация командной строки

Д/З

  1. Почитать про shlex и cmd; изучить API Python Cowsay

    • Наиболее сложная часть — что именно получают на вход методы complete_COMMAND(), разберитесь с этим (см. пример из лекции)

  2. Создать в репозитории с Д/З подкаталог 04_MergetoolCommandline (по последнему фрагменту URL данной лекции) и поместить туда решение следующей задачи:

  3. Переработать Домашнее задание из лекции 2 (возможно, лучше переписать заново), организовав командную строку с помощью cmd. Разбор командной строки реализовть с помощью shlex

    • Команды и их параметры проще всего сделать совпадающими с соответствующими функциями. Должны поддерживаться как минимум команды list_cows, make_bubble, cowsay и cowthink.

    • Пример синтаксиса cowsay (не обязательно реализовывать именно его; в квадратных скобках указаны необязательные параметры):

      • cowsay сообщение [название [параметр=значение …]] reply ответ [название [[параметр=значение …]]

        • сообщение и ответ — это реплики двух персонажей

        • название — это название коровы (должно поддерживаться достраивание)

        • параметр=значение — это eyes и tongue, а значение — строка

        twocows> cowsay "Hi there" moose eyes="^^" reply "Ahoy!" sheep 
         __________                < Ahoy! >              
        < Hi there >                ------- 
         ----------                  \
          \                           \
           \   \_\_    _/_/               __     
            \      \__/                  U^^U\.'@@@@@@`.
                   (oo)\_______          \__/(@@@@@@@@@@)
                   (__)\       )\/\           (@@@@@@@@)
                       ||----w |              `YY~~~~YY'
                       ||     ||               ||    ||
    • К каждой команде должна быть достаточная справка (help COMMAND)

    • <!> все остальные усложнения — только если захочется)

  4. Разработку вести согласно дисциплине оформления коммитов в подкаталоге 04_MergetoolCommandline отчётного репозитория по Д/З

  5. Предполагается, что модуль python-cowsay устанавливается в окружение с помощью pipenv, в каталоге должен присутствовать соответствующий Pipfile

LecturesCMC/PythonDevelopment2025/04_MergetoolCommandline (последним исправлял пользователь FrBrGeorge 2025-03-10 00:09:44)