Axcel писал(а):
Если предположить, что "один человек - один модуль", тогда задачу можно перенести на уровень подсистемы, а это уже намного проще.
Т.е. мне кажется, важнее отслеживать (и протоколировать и откатывать) изменения на уровне подсистемы.
Вот!
Появляется истинная логика задачи контроля версий для настоящей модульной системы.
Какая-то такая вот простая схема:
Если интерфейс модуля не меняется, то версии протоколируются (пусть датами).
Если меняется интерфейс -- то архивируется/протоколируется вся подсистема.
То есть:
последовательность версий подсистемы (версий структуры межмодульных интерфейсов),
в каждой версии -- хвост последовательностей версий отдельных модулей до предыдущей архивации подсистемы.
Поскольку изменение интерфейсов легко отслеживается автоматически -- всё это могло бы работать "за кадром" по каким-то правилам (например, в нужный момент спрашивать программера, пора ли делать копию подсистемы или еще погодить).
А кнопка восстановления нужной версии подсистемы должна, наверное, делать это в отдельную рабочую папку. То есть как-то концепт рабочих папок тоже тут хорошо работает.
И делать это всё по-возможности прозрачно для работающего программера.
Я бы с этого начал.
Инструментарий сравнения текстов -- он может зависеть от принятой схемы работы с подсистемами?