Контроль версий для двоичных файлов
Я нахожусь в процессе написания программы, которая будет использовать свой собственный двоичный формат для хранения данных.
Я хотел бы сделать возможным иметь некоторую форму контроля версий, по крайней мере, два разных человека должны иметь возможность вносить изменения в файл и после этого объединять эти изменения.
Поскольку git кажется очень распространенной и очень мощной системой контроля версий, мне интересно, возможно ли ее использовать. У меня есть только базовые знания о git (pull add commit push), но я понимаю, что он обладает более продвинутыми функциями. Я хочу понять, смогу ли я реализовать некоторые базовые функции и получить все расширенные функции бесплатно.
Таким образом, вариант использования состоит в том, что каждый проект будет состоять из одного двоичного файла, и git должен будет иметь возможность работать с ним.
Я искал и понял, что мне нужно написать собственный mergetool? Правильно ли мое понимание?
Я также понимаю, что трехстороннее слияние выполняется программой diff3 или, по крайней мере, в git встроены некоторые функции. Должен ли я написать свою версию? Будет ли возможно использовать его с git? Нужно ли перекомпилировать git?
Git также сохраняет коммиты как изменения, чтобы сэкономить место. Это использует diff для этого? Можно было бы заменить его? Нужно ли перекомпилировать git?
Есть ли какой-то другой вид функциональности, который мне пришлось бы реализовать?
Мой первоначальный план состоял в том, чтобы использовать один файл для проекта, но каждый проект состоит из независимых подпроектов, которые будут объединены независимо. Получу ли я что-нибудь, сохранив проект как разные файлы для каждого подпроекта?
Есть ли где-нибудь хорошая документация о том, какому интерфейсу должны соответствовать diff, diff3 и mergetool? На каких языках они могут быть написаны?
Я в замешательстве, потому что все, похоже, заинтересованы в исключении бинарных файлов из системы контроля версий, и, очевидно, никто не хочет использовать на них git. Это плохая идея? Я чувствую, что любые данные, для которых слияние имеет смысл, должны контролироваться версиями.
1 ответ
Таким образом, вариант использования состоит в том, что каждый проект будет состоять из одного двоичного файла, и git должен будет иметь возможность работать с ним.
Существуют сторонние инструменты для обработки бинарных файлов.
но каждый проект состоит из независимых подпроектов
В git для этого есть подмодули && поддерево
подмодуль git добавить только выбрать последний коммит
Есть ли где-нибудь хорошая документация о том, какому интерфейсу должны соответствовать diff, diff3 и mergetool?
На каких языках они могут быть написаны?
Прочитайте это, есть ссылки на алгоритм diff2 и diff3
Какова версия diff для git? diff2 или diff3?