У меня есть несколько файлов в формате (назовем их * .db файлами), которые нельзя правильно разложить / объединить с помощью git. Тем не менее, можно преобразовать каждый из этих файлов в файловую структуру, которую git может обработать правильно - для каждого из файлов базы данных мы можем сгенерировать дерево каталогов так, чтобы каждый файл в этом дереве был обычным текстовым файлом, который может быть диффузия / слияние git (назовем этот процесс «деконструкция»). Кроме того, содержимое этого дерева каталогов можно объединить, чтобы (заново) создать исходный файл БД. Такой подход позволяет нам использовать стандартный git хостинг со всеми обычными рабочими процессами (pull-запросы, auto-merge et c.) С этими специальными файлами.
Теперь к актуальной проблеме: я хотел бы сделать все это полностью прозрачным для пользователя. То есть каждый раз, когда пользователь запускает файл БД, я хочу, чтобы скрипт 'deconstruct' автоматически запускал преобразованное представление, ставя его в очередь. Точно так же, каждый раз, когда запускается операция извлечения, я хочу, чтобы выполнялся скрипт «construct», чтобы пользователь получал правильный файл БД. Это также должно работать с git add -a
et c. Я хочу, чтобы все это происходило на стороне клиента, так как я не могу изменить удаленную конфигурацию (поэтому о пользовательских инструментах слияния также не может быть и речи).
Это нормально, если на удаленном устройстве данные отображаются в деконструированном сформироваться. Фактически, в идеале я хотел бы видеть что-то вроде
data.db/
1.txt
2.txt
....
n.txt
на пульте для файла data.db
в локальном хранилище - но я не знаю, возможно ли это вообще. Это будет означать, что local git сможет создать эту деконструированную форму в поэтапной области (и зафиксировать это) + реконструировать ее в файл базы данных, без того, чтобы деконструированная форма никогда не касалась реального рабочего каталога.
Я предполагаю, что по крайней мере некоторые аспекты из вышеперечисленного будут работать (в противном случае, как это делают инструменты типа git -lfs?), Но я не знаю, каковы ограничения и с чего начать. Я знаю о предварительной фиксации et c. хуки, но я не думаю, что они позволяют мне напрямую манипулировать областью подготовки.
Буду признателен, если кто-нибудь нарисует план атаки о том, как выполнить sh этот рабочий процесс.