LINUX.ORG.RU

GIT в качестве удалённого хранилища


0

0

Всем привет!

Хочу использовать GIT в качестве удалённого файлового хранилища. Кто знает, подскажите пожалуйста каким образом можно осуществить операцию подобную git hash-object -w <object> без использования локального репозитория? То есть, без создания локальной копии этого репозитория, внесении в него изменений и применения git push. Вообще, это возможно?

Благодарю за ответы.

★★

Монтировать у себя удалённую файловую систему и действовать там как локально.

xetf ★★
()
Ответ на: комментарий от i82

Это первое, что пришло в голову. Но git подразумевает присутствие локального репозитория, так что может и единственный. Обязательно использовать git?

xetf ★★
()
Ответ на: комментарий от xetf

GIT использую для хранения файлов, SHA1 храню в базе данных. Получается достаточно красиво. Единственная загвоздка с push/pull из гита, так как хочется чтобы не было привязки к репозиторию. К тому же, гит отслеживает изменения контента - это удобно...

i82 ★★
() автор топика

Храню в гит конфигурационные файлы. Разные машины = разные ветки хранилища. Синхронизируюсь по ссш. Использую самописный вело-скрипт. А так, есть etckeeper и git-home-history и ещё много чего.

У меня вопрос по теме: допустим я хочу организовать хранилище музыкальных (больших бинарных) файлов в гит с глубиной истории - 3..5 версий, чтоб не разбухало слишком. Кто-нибудь настраивал?

ierton ★★
()
Ответ на: комментарий от i82

> SHA1 храню в базе данных. Получается достаточно красиво.

Можете рассказать поподробнее или ссылкой кинуть?

> Единственная загвоздка с push/pull из гита, так как хочется чтобы не было привязки к репозиторию. К тому же, гит отслеживает изменения контента - это удобно...

Почему push\pull - нежелательный вариант?

ierton ★★
()
Ответ на: комментарий от ierton

Идея проста. В базу данных заносится описание объекта - например, его имя, тип и т.д. Сам объект добавляется в git-репозиторий при помощи команды: git hash-object -w <object>. Эта команда добавляет в репо сам объект и возвращает его SHA1-хеш на stdout. Полученное значение SHA1 добавляется в базу к описанию объекта.

Для меня нежелательно использовать какие-либо локальные репозитории вообще. То есть хотелось бы иметь возможность добавлять объект в удалённый репозиторий без создания локального.

Кстати, на буржуйском мейл-листе, посвящённом гиту, предложили для этого на стороне хранилища создать сервер + специальный CGI-скрипт.

i82 ★★
() автор топика
Ответ на: комментарий от i82

Спасибо. Нашел книжку: http://progit.org/book/ch9-2.html Выходит, что git hash-object - это низкоуровневый интерфейс для создания объектов, не объединенных в tree и commit. В таком режиме git превращается файлохранилище с доступом по хешу, без истории версий.

И да, в таком режиме кажется несложным обойтись без создания локальных файлов: git hash-object может создавать блоб, считывая его с stdin (например, можно сделать скрипт, залазящий по ссш на сервер и передающий туда то, что нужно сохранить)

ierton ★★
()
Ответ на: комментарий от i82

> А вот как бы так отправить покрасивше? Безо всяких FTP, HTTP и т.д.?

Вот "на стороне хранилища создать сервер + специальный CGI-скрипт" это как раз с http.

Можно же написать простенький скрипт, который работает только по ssh:
1. принимает как аргумент имя файла, или несколько имён.
2. проверяет, что такие файлы есть и читаются.
3. с помощью scp копирует файлы на удалённую машину.
4. с помощью ssh заходит на сервер, выполняет git hash-object там.
5. возвращает sha1 обработанных файлов.

Или я что-то не понял?

GArik ★★★
()
Ответ на: комментарий от GArik

Всё так. Только всё-равно как-то коряво выходит, хотя это лучше, чем поднимать HTTP... :(

i82 ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.