Назад | Перейти на главную страницу

Клон Gitolite не работает должным образом

Я использую систему Debian и недавно установил gitolite с помощью пакета DEB.

Вот моя проблема:

Я попытался клонировать репозиторий gitolite-admin.git (который используется для настройки установки gitolite для всех репозиториев, которыми вы хотите, чтобы gitolite управлял за вас).

Моя первая попытка была именно так, как указано в инструкциях:

git clone gitolite@server:gitolite-admin

Я получил следующую ошибку:

fatal: 'gitolite-admin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

Примечание. То же самое произойдет, если я заменю gitolite-admin на gitolite-admin.git.
ОДНАКО, когда я делаю следующее:

git clone gitolite@server:~/repositories/gitolite-admin.git

Эта строка успешно клонирует репозиторий на мою локальную рабочую станцию.
Теперь у меня нет проблем с добавлением лишнего текста в путь к файлу, однако мне говорят, что это неверно в документации.

По следующей ссылке ( http://sitaramc.github.com/gitolite/doc/3-faq-tips-etc.html ) заявляет, что «добавление репозиториев / в начало имени репо в клоне git» является распространенной ошибкой / ошибкой. В нем также говорится, что «На самом деле гитолит добавляет $ REPO_BASE внутри, поэтому вам не следует делать то же самое!»

Мой файл .gitolite.rc содержит следующую строку для $ REPO_BASE:

[Located in /home/gitolite/.gitolite.rc]
$REPO_BASE="repositories";

У меня вопрос, что не так с моей конфигурацией, из-за чего $ REPO_BASE не добавляет мой клон git?

Если вам нужна дополнительная информация, оставьте комментарий, указав, какая информация вам нужна, и я буду счастлив помочь.

Прочие примечания:

Возможность доступа gitolite@server:~/repositories/gitolite-admin.git, но нет gitolite@server:gitolite-admin указывает, что вы не проходите через Gitolite, а просто используете простой доступ на основе SSH к пользователю gitolite.

Если ssh gitolite@server echo normal access дает normal access, то используемый вами ключ не ограничивается Gitolite. Если бы вы проходили через Gitolite, вы бы увидели что-то вроде bad command: echo normal access.

Это может произойти, если у вас есть ключ, который вы используете для SSH в самом пользователе gitolite, и вы пытаетесь использовать тот же ключ для аутентификации в качестве пользователя Gitolite. Ключ «нормального доступа» будет присутствовать в гитолите .ssh/authorized_keys без специального префикса. Строка для ключа, настроенного для прохождения Gitolite, будет начинаться как command="/path/to/gl-auth-command gitolite-username",….

Если вам нужен обычный доступ на основе SSH к пользователю gitolite и доступ на основе Gitolite, вам следует настроить отдельные ключи для этих целей, чтобы вы могли указать, какой ключ вы хотите использовать с IdentityFile варианты в вашем .ssh/config файл (возможно также IdentitiesOnly если ты найдешь это ssh использует «неправильный» ключ только потому, что он уже загружен в ssh-агент).

Например:

Используйте один из ключей по умолчанию (один из sshЗначения по умолчанию (например, ~/.ssh/id_rsa) или какой-то ключ, который вы обычно загружали в свой ssh-агент) для доступа к Gitolite (т.е. у вас есть открытый ключ в активном keydir/your-gitolite-user-name.pub).

Генерировать ~/.ssh/gitolite-user для использования при прямом входе в систему пользователем gitolite. Использовать ssh -i ~/.ssh/gitolite-user gitolite@server чтобы залогиниться. Или добавьте настраиваемую запись в ~/.ssh/config:

Host gitolite-user
              User gitolite
          HostName server
      IdentityFile ~/.ssh/gitolite-user
    IdentitiesOnly yes

так что ты можешь просто сделать ssh gitolite-user чтобы залогиниться.

У меня была такая же ошибка:

fatal: 'gitolite-admin' does not appear to be a git repository

Репо работало, но после отката с использованием клонирования на сервере, как было предложено в разделе gitolite panic, у пары файлов в репо был root-владелец вместо gitolite3.

gitolite-admin.git# ls -l
total 48
drwx------  2 gitolite3 gitolite3 4096 Mar 27  2012 branches
-rw-r--r--  1 gitolite3 gitolite3    6 Mar 27  2012 COMMIT_EDITMSG
-rw-------  1 gitolite3 gitolite3  119 Jul 12  2013 config
-rw-r--r--  1 gitolite3 gitolite3   73 Aug 25  2013 description
-rw-r--r--  1 gitolite3 gitolite3  128 Aug 23 20:44 gl-conf
-rw-------  1 root      root        23 Aug 26 13:45 HEAD
drwx------  2 gitolite3 gitolite3 4096 Aug 25  2013 hooks
-rw-------  1 root      root       605 Aug 26 13:45 index
drwx------  2 gitolite3 gitolite3 4096 Mar 27  2012 info
drwxr-xr-x  3 gitolite3 gitolite3 4096 Mar 27  2012 logs
drwx------ 83 gitolite3 gitolite3 4096 Aug 26 14:01 objects
drwx------  4 gitolite3 gitolite3 4096 Mar 27  2012 refs

Исправление состоит в том, чтобы снова сменить владельца на gitolite3.

gitolite-admin.git# chown -R gitolite3:gitolite3 *