Я пытаюсь настроить контроль версий для учебника по программированию. Это проблематично, потому что есть два разных типа истории:
В этом учебном пособии есть история создания проекта, которая доступна для каждой главы и которую увидит читатель. Если бы я никогда не планировал снова изменять уже написанные главы учебника, я мог бы просто сохранить каждую главу в виде тега в истории проекта.
Также есть история самого урока (не только текст, но и моя работа над притворной историей проекта). Если я найду ошибку, мне нужно вернуться и исправить ее в главе 1, добавление нового коммита до конца не работает, потому что я хочу изменить то, как проект «появился» на этом этапе, то есть вставить коммит в историю проекта. и переместите тег главы вперед.
До сих пор я думал о нескольких возможностях - использовать ветки git, где каждая глава - это ветка, которая перемещается в начало предыдущей главы всякий раз, когда я делаю изменение, очередь ртутных патчей, в которую я вставляю патчи, структурирование учебника вокруг набора модулей, которые я мог бы поместить в под-репозитории.
Я подумал, что спросить, есть ли у кого-то опыт с такими вещами, и какие решения сработали, а что нет.