git log over ssh удаленное хранилище
Я хочу создать браузер git (web), поэтому мне нужно перебирать коммиты (git log
) в удаленном хранилище, которое находится на машине, подключенной по ssh. Мой репо довольно большой и постоянно меняется, поэтому мне будет интересно не получать изменения локально только для git log
их.
Я пытался с:
git remote add origin ssh://example.net/repo
git checkout -b master --track origin/master
и это не удалось:\
Любые намеки, как это сделать?
6 ответов
Вы можете отправить журнал на веб-сервер, используя хук. На хосте репозитория создайте скрипт:
repo.git/hook/post-receive
где repo.git
ваш путь к хранилищу Если кто-нибудь запустит этот репозиторий, будет запущен хук, и он может сбросить git log в файл и отправить его на веб-сервер через ssh.
Преимущество решения заключается в том, что любой, имеющий доступ к веб-серверу, не получит немедленный доступ к хранилищу.
На удаленной машине, cd
в свой репозиторий и сделать git instaweb
, Это запустит веб-сервер, к которому вы можете получить доступ, который будет содержать журналы и все другие вещи, которые обычно используются. git help instaweb
для деталей.
Необходимость получить Git Log не всегда работает. - У меня большой репо, который я редко обновляю, поэтому я клонирую только тогда, когда мне нужно внести изменения. Но я бы хотел не отставать от изменений. - Я просто толкнул. Я хотел бы дважды проверить, что удаленное репо получило мои изменения. и у меня нет доступа по SSH, но у меня есть доступ GIT к машине.
Кажется очевидным, что:
GIT_DIR=node:/path/to/repo.git git log
должен работать для ограниченного набора переключателей git log.
Это одна из немногих дыр в git сегодня, ИМХО.
Причина, по которой вы получаете ошибку с указанными вами командами, заключается в том, что вам нужно запустить git fetch origin
после добавления пульта для создания ветки удаленного слежения origin/master
,
Вы можете попробовать запустить git log через ssh в cronjob:
ssh example.net git --git-dir=repo log > /tmp/repo.log
Таким образом, вам не нужно создавать локальную копию репозитория. Это предполагает, что у вас настроены ssh-ключи и вы чувствуете себя в безопасности с этой конфигурацией (кто-то, имеющий доступ к веб-серверу, может получить доступ к хранилищу).
Если вы хотели бы бежать git log
локально вам нужно будет клонировать репозиторий (разве вы не пытались это сделать?):
git clone example.net/repo
Недостатком является то, что для его хранения на веб-сервере потребуется место, но при любом будущем извлечении будут загружаться только новые изменения, и они могут быть довольно быстрыми и зависеть от размера изменений:
cd repo
git pull
Вы могли бы сделать pull
либо в crontab, либо даже запускать его с хоста репозитория с помощью ловушки, чтобы обновлять его только при необходимости