Различия между версиями 1 и 2
Версия 1 от 2021-02-24 23:11:18
Размер: 1390
Редактор: FrBrGeorge
Комментарий:
Версия 2 от 2021-02-25 09:13:19
Размер: 4950
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 18: Строка 18:
[[https://git-scm.com/book/ru/v2/Ветвление-в-Git-О-ветвлении-в-двух-словах|Базовая статья]] (читать всю главу)
Строка 20: Строка 22:
 Ветка:: именованный путь в графе истории изменений, ссылка на ветку отмечает ''конец'' такого пути  * '''Ветка''': именованный путь в графе истории изменений, ссылка на ветку отмечает ''конец'' такого пути
 * `git checkout -b ветка` / `git checkout ветка` — приводит рабочую копию в соответствие последнему срезу ветки
  * `HEAD`, `HEAD^`, `HEAD^^`, …
==== Merge: объединение историй ====
К. О.: `git merge`
 * Если наследование прямое, просто передвигается HEAD
 * Если есть отдельная история, формируется т. н. merge commit
 * Если есть интерференция коммитов (conflicts), формируется `diff3`, который надо исправлять руками
Строка 22: Строка 31:
 * `git checkout -b ветка` / `git checkout ветка` — приводит рабочую копию в соответствие последнему срезу ветки '''TODO''' Пример
Строка 24: Строка 33:
'''TODO''' ==== Rebase: переписывание истории ====
 * Переписывание линейной истории с помощью `git rebase -i`
  * `$EDITOR` ☺
  * Виды действий с историей
  * (пример)
 * [[man1:git-rebase|Перенос ветки]]
  * возможно. потребуется ручное вмешательство
  * (пример)
<!> Общее правило: при `rebase` меняются все коммиты, начиная с первого сделанного изменения (даже если это только reword и он только один)
 * [[https://habr.com/ru/post/432420/|Статья на Хабре]] относительно выбора междк merge и rebase
  * [[https://www.freecodecamp.org/news/an-introduction-to-git-merge-and-rebase-what-they-are-and-how-to-use-them-131b863785f/|Исзодная статья]]
== PyGame ==
 * [[http://pygame.org|Сайт]]
 * [[https://www.pygame.org/docs|Документация]]
 * [[https://www.pygame.org/docs/tut/PygameIntro.html|пример]]


== Д/З ==
 1.#0 Прочитать и прощёлкать
  * Про ветвление [[https://git-scm.com/book/ru/v2/Ветвление-в-Git-О-ветвлении-в-двух-словах|в учебнике по Git]]
  * Две методички по PyGame ([[https://www.pygame.org/docs/tut/PygameIntro.html|введение]] и [[https://www.pygame.org/docs/tut/ChimpLineByLine.html|пришиби макаку]])
 1. Задача на PyGame:
  * Склонировать [[https://github.com/FrBrGeorge/PyGame|Пример]]
  * Реализовать гравитацию (это просто приращение скорости)
  * Написать класс «вращающиеся шары разного размера» на базе основного класса
   * можно использовать [[pygame:transform.html#pygame.transform.rotozoom]]
   * поворачивать и масштабировать лучше каждый раз исходное изображение
  * Реализовать соударение
   * просчитывать соударение нескольких не нужно
   * поскольку шар круглый, при принятии решения о соударении можно использовать знание о диаметре шара, в общем случае удобнее [[pygame:mask.html|pygame.mask]]
  * Коммиты оформлять сообразно дисциплине, описанной в прошлой лекции
  * Опубликовать склонированный репозиторий
   * (Когда будем изучать инфраструктуру, в Д/З войдут pull-реквесты)

Работа с историей и событийное программирование

Git

Структура

  • Содержимое .git

    • .git/objects/??/*

      • Блобы (файлы)
      • Деревья (не деревья! это срезы рабочей копии, как файл называется + его id)

      • Коммиты: какой блоб из какого получился (в действительности — какой срез из какого) + message + родительский коммит
        • см. git log -p --full-index

    • python3 -c "import zlib; import sys; print(zlib.decompress(sys.stdin.buffer.read()).decode())"

      • но проще openssl zlib -d

      • Примеры

⇒ Git хранит все когда-либо бывшие объекты и деревья

Ветки

Базовая статья (читать всю главу)

Деревья — не деревья, а срезы ⇒ ветки — не ветки, а что?

  • Ветка: именованный путь в графе истории изменений, ссылка на ветку отмечает конец такого пути

  • git checkout -b ветка / git checkout ветка — приводит рабочую копию в соответствие последнему срезу ветки

    • HEAD, HEAD^, HEAD^^, …

Merge: объединение историй

К. О.: git merge

  • Если наследование прямое, просто передвигается HEAD
  • Если есть отдельная история, формируется т. н. merge commit
  • Если есть интерференция коммитов (conflicts), формируется diff3, который надо исправлять руками

TODO Пример

Rebase: переписывание истории

  • Переписывание линейной истории с помощью git rebase -i

    • $EDITOR

    • Виды действий с историей
    • (пример)
  • Перенос ветки

    • возможно. потребуется ручное вмешательство
    • (пример)

<!> Общее правило: при rebase меняются все коммиты, начиная с первого сделанного изменения (даже если это только reword и он только один)

PyGame

Д/З

  1. Прочитать и прощёлкать
  2. Задача на PyGame:

    • Склонировать Пример

    • Реализовать гравитацию (это просто приращение скорости)
    • Написать класс «вращающиеся шары разного размера» на базе основного класса
      • можно использовать transform.html

      • поворачивать и масштабировать лучше каждый раз исходное изображение
    • Реализовать соударение
      • просчитывать соударение нескольких не нужно
      • поскольку шар круглый, при принятии решения о соударении можно использовать знание о диаметре шара, в общем случае удобнее pygame.mask

    • Коммиты оформлять сообразно дисциплине, описанной в прошлой лекции
    • Опубликовать склонированный репозиторий
      • (Когда будем изучать инфраструктуру, в Д/З войдут pull-реквесты)

LecturesCMC/PythonDevelopment2021/02_BranchesAndPyGame (последним исправлял пользователь FrBrGeorge 2021-03-04 08:27:35)