Есть git-репозиторий. Требуется работать с ним с двух компов — с работы и из дома. Есть сервер VPS c доступом по SSH. Очевидная идея — сделать на сервере bare клон и делать на него push/pull из дома и с работы. Проблема в том, что на сервера мало места и я не хочу ставить на него git. Только SSH-сервер. А для типичного сценария git там зачем-то нужен:
git push --set-upstream ssh://user@host.ru:8022/home/user/prg.git master
user@host.ru's password:
zsh:1: command not found: git-receive-pack
fatal: Could not read from remote repository.
Как обойтись без git-а не сервере и зачем от там вообще нужен?
Здравствуйте, Mazay, Вы писали:
M>Есть git-репозиторий. Требуется работать с ним с двух компов — с работы и из дома. Есть сервер VPS c доступом по SSH. Очевидная идея — сделать на сервере bare клон и делать на него push/pull из дома и с работы. Проблема в том, что на сервера мало места и я не хочу ставить на него git. Только SSH-сервер. А для типичного сценария git там зачем-то нужен: M>
M>git push --set-upstream ssh://user@host.ru:8022/home/user/prg.git master
M>user@host.ru's password:
M>zsh:1: command not found: git-receive-pack
M>fatal: Could not read from remote repository.
M>
M>Как обойтись без git-а не сервере и зачем от там вообще нужен?
Здравствуйте, Mazay, Вы писали:
M> Как обойтись без git-а не сервере и зачем от там вообще нужен?
Имхо, никак особо не обойдёшься. Неужели у тебя лишних ~20Мб нет? Сейчас терабайтные винты копейки стоят...
Для push на сервере надо много чего делать, вплоть до запуска gc, притом безопасно расставляя локи. Ещё и хуки бывают.
Можно через UNC-путь, через samba, но это будет медленнее.
Собственно пока так и сделал. Только не хочется постоянно держать примонтированную папку и mount/umount тоже не хочется делать. Хочется просто пароль вводить на каждый push/pull.
Главное гармония ...
Re[2]: git через SSH не устанавливая ничего на сервере
Здравствуйте, ., Вы писали:
.>Здравствуйте, Mazay, Вы писали:
M>> Как обойтись без git-а не сервере и зачем от там вообще нужен? .>Имхо, никак особо не обойдёшься. Неужели у тебя лишних ~20Мб нет? Сейчас терабайтные винты копейки стоят... .>Для push на сервере надо много чего делать, вплоть до запуска gc, притом безопасно расставляя локи. Ещё и хуки бывают. .>Можно через UNC-путь, через samba, но это будет медленнее.
Это VPS за $10 в год на KVM и c IPv4. Там всё очень по-спартански — из 1,5 ГБ свободны только 110 МБ. Так что 20 МБ жалко.
В чём проблема делать локи/хуки/ГЦ через SSH? Если просто примонтировать папку через sshfs то всё работает, git сам может работать через ssh. Я надеялся, что это нормально реализовано. Скорость мне не важна — проект маленький.
Главное гармония ...
Re[3]: git через SSH не устанавливая ничего на сервере
M>Собственно пока так и сделал. Только не хочется постоянно держать примонтированную папку и mount/umount тоже не хочется делать. Хочется просто пароль вводить на каждый push/pull.
"тыжпрограммист". Замени git на vpsgit:
[code]
cat vpsgit:
#!/bin/bash
if [ -z "$(cat /proc/mounts | grep sshfs | grep vps)" ]; then
sshfs vps
fi
git $@
fusermount -u path/to/vps
Здравствуйте, Mazay, Вы писали:
M> Это VPS за $10 в год на KVM и c IPv4. Там всё очень по-спартански — из 1,5 ГБ свободны только 110 МБ. Так что 20 МБ жалко.
Как вариант, можешь часть данных зачистить (гуглить по словам "Reduce size of a Linux installation for embedded systems" и им подобным) — там маны/доки/копирайты зачистить, количество логов уменьшить.
M> В чём проблема делать локи/хуки/ГЦ через SSH? M> Если просто примонтировать папку через sshfs то всё работает, git сам может работать через ssh.
При работе через ssh на сервере запускается серверная часть git-а (по аналогии с rsync), по этому он должен быть установлен на серере. Серверная часть необходима, т.к. там не только локи/хуки, но и прямая работа с файлами.
При работе через sshfs у тебя добавляется слой абстракции, который позволяет работать как с локальной ФС.
Управляю вселенной не привлекая внимания санитаров.
Re[4]: git через SSH не устанавливая ничего на сервере
Здравствуйте, Anton Batenev, Вы писали:
AB>При работе через ssh на сервере запускается серверная часть git-а (по аналогии с rsync), по этому он должен быть установлен на серере. Серверная часть необходима, т.к. там не только локи/хуки, но и прямая работа с файлами.
rsync по ssh без серверной части работает. Она только для родного протокола нужна.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[5]: git через SSH не устанавливая ничего на сервере
Здравствуйте, Ops, Вы писали:
Ops> AB>При работе через ssh на сервере запускается серверная часть git-а (по аналогии с rsync), по этому он должен быть установлен на серере. Серверная часть необходима, т.к. там не только локи/хуки, но и прямая работа с файлами. Ops> rsync по ssh без серверной части работает. Она только для родного протокола нужна.
О, а это идея — git вроде rsync-протокол из коробки поддерживает.
Здравствуйте, Ops, Вы писали:
Ops> AB>Можешь показать пример? Ops> Похоже, наврал. Смутило то, что он без запущенного rsyncd работает, оказалось, сам rsync все равно нужен на удаленной машине.
Совершенно верно. Там немного неочевидная схема, когда на удаленной машине rsync становится сервером. Тоже самое и с git.
Управляю вселенной не привлекая внимания санитаров.