Есть ли способ для потоковой передачи данных в GIT вместо передачи имен файлов? - PullRequest
3 голосов
/ 22 сентября 2011

Мы хотим направить документы, которые не существуют в файловой системе (они находятся в базе данных), в GIT.Поскольку существуют тысячи документов, мы не хотим создавать их на диске.

Мы знаем, что мы можем передавать документы из GIT с использованием классов GIT Blob.

Мы хотим прагматически предоставить дерево/ путь и имя файла и любые другие атрибуты, но файл фактически не существует.GIT сам передает данные в себя в какой-то момент (когда он читает файл) и каким-то образом сохраняет данные атрибута файла.

Я знаю, как добавлять файлы в GIT, я хочу вместо этого использовать интерфейс с помощью потока.

Возможно ли это с помощью C, C # или Java?

Ответы [ 2 ]

5 голосов
/ 23 сентября 2011

Вы можете использовать hash-object.

gitid=$(echo hello world | git hash-object -w --stdin)

. Это установит gitid для идентификатора git нового объекта blob на основе вывода команды echo.

Затем вы можете использовать git update-index, чтобы добавить запись индекса, используя этот BLOB-объект, и commit, чтобы создать объект фиксации, содержащий новый BLOB-объект в вашем хранилище git.

git update-index --add --cacheinfo 100644 "$gitid" new-blob.txt

git commit -m "new commit"
3 голосов
/ 23 сентября 2011

Вы также можете создавать объекты «вручную», создавая объекты и деревья из вашего кода. Вот видео Тома Престона-Вернера из GitHub, описывающее структуру: http://sea.ucar.edu/event/unlocking-secrets-git Я не знаю, подходит ли вам этот путь, но это вариант

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...