Изменить команды Git для файловой системы только для чтения? - PullRequest
1 голос
/ 30 июня 2010

Можно ли создать Git-репозиторий, который сохраняет свои объекты в какой-либо базе данных (SQLite, MongoDB и т. Д.) Вместо файловой системы?

Похоже, я мог бы хранить полный репозиторий в MongoDB, используя что-то вроде GridFS .

Интересно, есть ли способ сделать так, чтобы git push origin master считывал из базы данных и действовал так же, как файловая система.

Возможно ли что-то подобное удаленно? Или должен быть только файловой системой?

Ответы [ 2 ]

2 голосов
/ 30 июня 2010

Вам придется переписать целый код.Git был создан с использованием стандартной файловой системы в качестве резервного хранилища (и был специально создан для очень быстрой работы в подсистеме VFS Linux).

Единственный действительно практичный способ сделать что-то подобное - это написать файловую систему FUSEон поддерживал все операции, которые требует git, и использовал выбранную вами базу данных в качестве бэк-энда.

Я не совсем уверен, зачем вам это делать или что вы хотите выполнить.В Git нет ничего, что можно было бы извлечь из особенностей типичной базы данных и потери производительности.

0 голосов
/ 30 июня 2010

Git - это сама база данных.

Вам не нужно делать резервные копии ваших данных в базе данных.Если вы создадите пустой репозиторий (git init --bare или git clone --bare), у вас не будет никакого файла «checkout» в системе, и все будет в git «database».

Кстати, если вы действительно хотите работать с файловой системой только для чтения (другая цель), решение заключается не в базе данных, а в наложении файловой системы aufs (или объединении монтирования), чтобы каждая модификация была в другой «доступной для записи»файловая система.Может быть только в оперативной памяти, если вы хотите с tmpfs.

...