Возрадовавшись от результатов применения LaTeX к диплому, я пошел дальше.
Существенным недостатком подготовки (особенно длительной и с участием кучи народу) печатных работ (статей, дипломов, рефератов, ...) является появление хреновой тучи бэкапных версий (главный принцип DOOM'а "Сохраняйся" выучен намертво, ибо прецедентов на этом поприще пруд пруди). Причем без подробного потрошения содержимого каждого бэкапа сложно понять, что именно поменялось.
Кроме того, кроме основного текста (обычно *.doc) обычно есть еще куча других вспомогательных файлов: рисунки, CIF-файлы (нерешенные и решенные кристаллические структуры), спектры (ASCII-исходники и файлы Origin с построенными результатами), также могут быть результаты квантовохимических расчетов, симуляции PLATON (моделирование доступности адсорбата в пористой структуре), магнетохимические расчеты и так далее. А в случае применения BibTeX --- еще и библиографические базы.
Причем все это хозяйство тоже меняется и абсолютно асинхронно между собой и с основным документом.
Единство списка бэкапов также отсутствует --- одни на компе домашнем, вторые --- рабочем, третьи у другого человека, четвертые на флешке, пятые на почте, и все это переплетается, в каких-то местах те или иные бэкапы присутствуют, где-то --- нет.
Каждый бэкап представляет собой копирование, что раздувает место под хранилище пропорционально частоте резервного копирования.
Организация совместного труда над такой работой --- тоже ведро здоровья. Хорошо, если основу статьи пишет два человека. Когда больше --- уже тоскно следить за всем.
И вот, посмотрел я на это все и решил прикрутить к этой задаче системы контроля версий.
Изначально они разрабатывались для разработчиков программного обеспечения и позволяют упорядочивать работу программиста или команды программистов. Однако их вполне можно использовать и не по назначению.
Что это дает?
- Существует репозиторий (хранилище), хранящий все ревизии (версии) работы. Для редактирования используется т.н. рабочая копия, которая по требованию пользователя синхронизируется с репозиторием (загрузка изменений, сделанных другими (операция update), и сохранение собственных изменений (операция commit));
- Репозиторий хранит историю ревизий, и пользователь в любой момент может доступиться к любой версии любого файла в истории работы; Моменты изменения каждого файла фиксируются системой;
- Система поощряет комментирование изменений и предоставляет для этого место; комментарии к набору ревизий можно получить в виде списка и быстро найти, к какой именно ревизии следует обращаться;
- При создании новой ревизии используется достаточно эффективный алгоритм поиска разницы, что позволяет экономить место --- размер репозитория растет не пропорционально частоте, а пропорционально величине изменений (конечно, в бинарных файлах все не так просто, но общая закономерность сохраняется);
- Существует достаточно продвинутая система разрешения конфликтов редактирования, позволяющая обеспечить совместную работу над текстовыми файлами. Для бинарных файлов существует (в некоторых системах) механизм блокирования, позволяющий избежать одновременной правки файла несколькими пользователями. Оба подхода могут комбинироваться.
В общем, довольно вкусно и удобно.
В основном пробуем SVN, т.к. он имеет возможность блокировки (doc-файлы же...).
Немного затруднений есть с хостингом, т.к. хочется публичный сервер, а публичные либо хотят денег, либо хотят открытости проекта (для реферата/диплома нормально, для статьи и диссера --- не очень). Однако, для ограниченного числа проектов либо участников хостинги есть.
В общем, работаем)