03.01 git: работа с ветками

  1. разогрев
    • беглое повторение про ветки
    • qgit и полная история

    • {i} пример с пересаживанием ветки

    • {i} пример с мержем

    • {i} пример с «переотрастанием» ветки при rebase (aka «ветка — не ветка»)

    • OptionMenu

    • немного о проектировании сверху вниз:
      1. Интерфейсная модель (хоть на бумажке!)
      2. Шаблон с затычками вместо обработчиков
      3. Реализация обработчиков (возможно, параллельная)
  2. <!> Задача_1: работа с ветками в git при разработке программы на tkinter. Требуется написать программу с графическим интерфейсом (ГИ), причем на основной ветке разработки добавляются элементы ГИ и заглушки обработчиков событий (с привязкой к элементам ГИ), а на feature-ветке - реализации обработчиков событий.

    1. Интерфейсная модель и шаблон в ветке master
      • Создайте ветку task1_20210301_master (каталог с решением назовите как обычно)

      • Реализуйте в ней (по одному коммиту на пункт)
        1. Создание окна программы
        2. Кнопка Exit + заглушка обработчика нажатия кнопки Exit

          • Обязательно использование docstring для всех обработчиков

        3. Текстовая метка с начальным текстом <MenuItem>

        4. Кнопка Next item + заглушка обработчика нажатия кнопки Next item

        5. {3} Выпадающее меню (optionmenu) с элементами "One", "Two", "Three" и StringVar для хранения значения

        6. Обработчик нажатия кнопки "Exit", закрывающий окно программы
      • Полученное приложение должно запускаться, и выходить по Exit

      • Посмотрите структуру веток в qgit

        • linear.png

    2. Разработка логики выпадающего меню в devel-ветке с последующим слиянием (merge)
      • Создайте ветку task1_20210301_additem на базе коммита {3} и переключитесь на неё (проверьте!)

      • Реализуйте в ней (по одному коммиту на пункт) следующее:
        1. Добавьте четвертый элемент — "Four" — в выпадающее меню

        2. Привяжите содержимое текстовой метки к строковой переменной выпадающего меню
      • Полученное приложение должно запускаться и менять содержимое текстовой метки при изменении значения выпадающего меню
      • Посмотрите структуру веток в qgit

        • onebranch.png

    3. Разработка логики кнопки в devel-ветке с последующим дописыванием в историю (rebase)
      • Создайте ветку task1_20210301_show на базе коммита {3} и переключитесь на неё (проверьте!)

      • Реализуйте в ней (по одному коммиту на пункт) следующее:
        1. Обработчик нажатия кнопки Next item, который выбирает в выпадающем меню следующий пункт (после последнего идёт первый)

      • Полученное приложение должно запускаться и менять содержимое выпадающего меню при нажатии кнопки Next item

      • Посмотрите структуру веток в qgit

        • twobranches.png

    4. Сделайте merge ветки task1_20210301_additem на ветку task1_20210301_master

      • Полученное приложение должно
        • запускаться и выходить по Exit

        • менять содержимое текстовой метки при изменении значения выпадающего меню
      • посмотрите структуру веток в qgit

        • merge.png

    5. Добавьте историю (rebase) ветки task1_20210301_show в ветку task1_20210301_master (где к этому шагу будет merge-коммит)

      • Внимание! в результате именно ветка task1_20210301_master должна вобрать в себя все коммиты (т. е. команда должна быть git rebase task1_20210301_show task1_20210301_master)

      • Полученное приложение должно
        • запускаться и выходить по Exit

        • менять содержимое текстовой метки при изменении значения выпадающего меню
        • менять содержимое выпадающего меню и текстовой метки при нажатии кнопки Next item

      • посмотрите структуру веток в qgit
        • rebase.png

    6. Если всё работает корректно, залейте (merge) task1_20210301_master на основную ветку (master)

Д/З

LecturesCMC/PythonDevelopment2021/Prac/02_DvcsBranchMerge (last edited 2021-03-06 15:17:35 by FrBrGeorge)