Насколько просто?
Можно написать систему контроля версий с помощью однострочного сценария оболочки upversion.sh:
cp $WORKING_COPY $REPO/$(date +"%s")
Для больших бинарных активов это все, что вам нужно! Его можно легко улучшить, например, сделав папки версий доступными только для чтения, возможно, записав метаданные для каждой версии (например, вы можете получить текстовый файл на $REPO/$(date...).meta
)
Это звучит как огромное упрощение, но это не далеко от систем управления активами, которые используют многие кинокомплексы (например)
Вы действительно должны знать, что вы хотите версии и почему ..
При использовании больших двоичных ресурсов (скажем, видео) вам необходимо сосредоточиться на инструментах для визуального сравнения версий. Вы также, вероятно, должны иметь дело с зависимостями («Мне нужны image123.jpg и video321.avi для создания этого изображения»)
С кодом вам нужно сосредоточиться на таких вещах, как упрощение различий между любыми двумя версиями. Кроме того, поскольку изменения в исходном коде обычно невелики (несколько символов из проекта со многими тысячами строк), было бы ужасно неэффективно копировать весь проект для каждой версии - поэтому вы сохраняете только различия между версиями ( дельта-кодирование ).
Чтобы создать версию базы данных, вы, вероятно, захотите хранить информацию о схеме, отслеживать новые таблицы или столбцы или корректировать существующие (вместо того, чтобы вычислять дельты файлов базы данных или делать копии, как в предыдущих двух системах)
Нет идеального способа для версионирования всего, вы должны сосредоточиться на том, чтобы хорошо выполнять одну вещь. Git отлично подходит для текста, но не для двоичных файлов. Adobe Version Cue отлично работает с двоичными файлами (изображениями), но бесполезна для текста.
Полагаю, что вещи для рассмотрения можно суммировать как ..
- Что вы хотите версии?
- Почему я не могу использовать (или расширять / модифицировать) существующую систему?
- Как я буду отслеживать различия между версиями? (целые файлы? deltas?)
- Какие еще данные мне нужно приложить к версиям? (Автор? Метка времени? Зависимости?)
- Какие задачи обычно приходится выполнять пользователю (разбор? Возврат определенных файлов?)