Работа с историей и событийное программирование
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 ветка — приводит рабочую копию в соответствие последнему срезу ветки
TODO