Розміщення додатка Git на сервері без встановленого git-annex


9

На машинах A і B розміщено загальне сховище додатків git . На них обох встановлено програму git-annex, і я вручну редагую / фіксую / тощо речі на обох машинах. A & B не підключені до Інтернету одночасно, тому їх не можна синхронізувати безпосередньо разом.

Сервер C завжди включений і підключений (і безкоштовно, і досить безпечно). У ньому встановлено git, але у мене немає прав адміністратора, тому я не можу встановити git-annex.

Моє запитання: Чи можу я використовувати сервер C як центральний концентратор для натискання та витягування оновлень git-annex як від A, так і від B, без того, щоб встановлювати git-annex і всю залежність ghc від gkec на C?

Я спробував використовувати C зі спеціальними пультами "каталог" або "rsync" , але це, здається, містить лише файли, а не інше, що потрібно для оновлення A і B після натискання / перетягування.

Будь-який натяк буде дуже вдячний!

Відповіді:


6

Маючи доступ до git та rsync до одного і того ж сервера, ви можете використовувати цей сервер для зберігання історії (через доступ до git) та зберігання ключа-значення додатка (через доступ rsync). Вони також можуть бути роз'єднані та збережені на будь-якій кількості різних серверів.

Схоже, ви вже прочитали всі необхідні інструменти. В основному, ви отримаєте два окремих пульта, обидва вказують на різні місця на сервері-c. Перший пульт (server-c) - це звичайний git-пульт для синхронізації вашої історії та всього, що перевіряється безпосередньо у git repo. Другий пульт - це додатковий спеціальний пульт.

[remote "server-c"]
    url = git@example.com:/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 git@example.com:/path/to/repo.git
git annex initremote server-c-rsync type=rsync rsyncurl=example.com:/home/user/annex-rsync encryption=none

Це має отримати базовий функціонал, який ви шукаєте. Єдиним недоліком є ​​те, що у вас є дві різні віддалені імена, які дійсно вказують на один і той же сервер. Зокрема, вам просто потрібно пам’ятати про використання спеціального пульта (server-c-rsync) при використанні --to = або --from = аргументів отримати, скопіювати та перемістити.

Можливо, можна вказати один віддалений на обидва місця, однак я не впевнений, чи підтримується це насправді. Для створення розумного .git / config з'являються наступні команди.

git init
git annex init "test"
git remote add server-c git@example.com:/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-додаток ігнорує URL-адресу та використовує лише запис annex-rsyncurl при роботі з доданими файлами.


Чудово! Я пройду тестування, але це повинно мене наблизити до працездатного рішення. Дякую за ваш час та відповідь!
Вінсент

Радий, що можу допомогти. Я щойно почав використовувати git annex сам під час святкової перерви, і поки що надзвичайно задоволений цим!
Джастін Гейбель

Я думаю, що останній приклад повинен просто працювати. насправді я думаю, що це би rsync файли на місці, навіть якщо це просто голий git repo ...
anarcat
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.