Размещение Git Annex на сервере без установленного git-annex

Размещение Git Annex на сервере без установленного git-annex

Машины A и B имеют общийgit-приложениеРепозиторий. Они оба имеютgit-приложениепрограмма установлена, и я вручную редактирую/фиксирую и т. д. на обеих машинах. A и B не подключены к Интернету одновременно, поэтому их нельзя синхронизировать напрямую.

Сервер C всегда включен и подключен (бесплатный и довольно безопасный). На нем установлен git, но у меня нет прав администратора, поэтому я не могу установить git-annex.

Мой вопрос: Могу ли я использовать сервер C в качестве центрального узла для отправки и получения обновлений git-annex как из A, так и из B, без необходимости установки git-annex и всех зависимостей haskell ghc на C?

Я пробовал использовать C с "directory" или "rsync"специальные пульты, но, похоже, здесь хранятся только файлы, а не все остальное, что необходимо для обновления A и B после push/pull.

Любая подсказка будет высоко оценена!

решение1

С доступом git и rsync к одному и тому же серверу вы можете использовать этот сервер для хранения как истории (через доступ git), так и хранилища ключей и значений приложений (через доступ rsync). Их также можно разделить и хранить на любом количестве разных серверов.

Похоже, вы уже прочитали обо всех инструментах, которые вам понадобятся. По сути, у вас будет 2 отдельных удаленных сервера, оба из которых будут указывать на разные местоположения на сервере-c. Первый удаленный сервер (server-c) — это обычный удаленный сервер git для синхронизации вашей истории и всего, что проверяется непосредственно в репозитории git. Второй удаленный сервер — это специальный удаленный сервер для приложения.

[remote "server-c"]
    url = [email protected]:/path/to/repo.git
    fetch = +refs/heads/*:refs/remotes/server-c/*
[remote "server-c-rsync"]
    annex-rsyncurl = example.com:/home/user/annex-rsync
    annex-uuid = ...

Вы должны быть в состоянии настроить это примерно так:

git remote add server-c [email protected]:/path/to/repo.git
git annex initremote server-c-rsync type=rsync rsyncurl=example.com:/home/user/annex-rsync encryption=none

Это должно дать вам базовую функциональность, которую вы ищете. Единственным недостатком является то, что у вас есть 2 разных имени удаленного сервера, которые на самом деле указывают на один и тот же сервер. В частности, вам просто нужно помнить об использовании специального удаленного сервера (server-c-rsync) при использовании аргументов --to= или --from= для get, copy и move.

Возможно, можно указать один удаленный доступ к обоим расположениям, однако я не уверен, поддерживается ли это на самом деле. Следующие команды, похоже, создают разумный .git/config.

git init
git annex init "test"
git remote add server-c [email protected]:/path/to/repo.git
git annex initremote server-c type=rsync rsyncurl=example.com:/rsync/user encryption=none

Для меня это приводит к одному удаленному файлу в .git/config с url= (для обычных операций git) и Annex-rsyncurl=. Однако я не проверял это дальше, чтобы убедиться, что git Annex игнорирует URL и использует только запись Annex-rsyncurl при работе с присоединенными файлами.

Связанный контент