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

Метки (теги)

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

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

При 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 … достаточно четырёх:

      • message, cow, eyes, tongue

    • Везде, где это предусмотрено соответствующими функциями, должны подерживаться параметры по умолчанию (например, для cowsay достаточно только одного параметра — message)

    • К каждой команде должна быть достаточная справка (help COMMAND)

    • Везде, где это возможно, должна поддерживаться подстановка вариантов (completion)
    • В частности, для eyes и tongue необходимо сделать несколько заранее заданных вариантов, и предлагать их

      • (в силу специфики библиотеки readline подстановка не-буквенных последовательностей может не работать, не боритесь с этим)

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

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

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

LecturesCMC/PythonDevelopment2024/04_MergetoolCommandline (последним исправлял пользователь FrBrGeorge 2024-03-05 15:29:08)