GIT клон и первый выпуск GIT - PullRequest
4 голосов
/ 28 января 2012

У меня есть две проблемы.У меня есть Ubuntu 10.10, и я установил сервер git с инструментом gitolite.Все работало довольно хорошо.Команда gl-setup gitolite создала 2 репозитория: gitolite-admin и testing.

1) ВОПРОС 1

Мой пользователь по умолчанию для администратора gitolite называется "git" и уже создан.

Во-первых, мне пришлось клонировать репозиторий gitolite-admin, внести некоторые изменения, скажем, в conf / gitolite.conf, чтобы добавить новый репозиторий и нового пользователя (я добавил пользователя root, создал и закрытый / открытый ключ ранее).а также добавил открытый ключ в папку keydir), затем мне пришлось добавить / зафиксировать и отодвинуть изменения обратно. 3

Информация: у меня нормально работает файл ~ git / .ssh / authorized_keys, начиная с command = иимея только одно значение - открытый ключ пользователя git, который я создал первым.

НЕ РАБОТАЛ:

git@vs1:~/$ git clone git@<<SERVER_IP>>:gitolite-admin.git
Initialized empty Git repository in /home/git/ga/gitolite-admin/.git/
git@<<SERVER_IP>>'s password:
fatal: 'gitolite-admin.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

РАБОТАЕТ:

touch ~/.ssh/config

с содержимым:

host gitolite
     user git
     hostname <<SERVER_IP>>
     identityfile ~/.ssh/git.pub

git@vs1:~/$ git clone gitolite:gitolite-admin
Initialized empty Git repository in /home/git/ga/gitolite-admin/.git/
Enter passphrase for key '/home/git/.ssh/git.pub':
Enter passphrase for key '/home/git/.ssh/git.pub':
Enter passphrase for key '/home/git/.ssh/git.pub':
git@89.35.160.243's password:
remote: Counting objects: 23, done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 23 (delta 4), reused 0 (delta 0)
Receiving objects: 100% (23/23), done.
Resolving deltas: 100% (4/4), done.

Почему я вообще не работал в первом варианте?Все учебники говорят, что это должно работать без проблем.Мне пришлось использовать второй вариант при создании этой конфигурации хоста в файле ~ / .ssh / config.Это немного расстраивает.Путь к репозиторию - / home / git / repositories, а ssh - порт по умолчанию 22.

2) ВОПРОС 2

Используя пользователя root на том же сервере, я создал пустую папку, скажем так/var/www/example.com/www.Я запустил git init, затем добавил файл (.gitignore), запустил git add -A и git commit -m "...".

Затем я создал удаленный путь для источника:

git remote add origin git@<<SERVER_IP>>:myrepo.git

Я запустил Git Push Origin Master, и вот что я получил:

fatal: 'myrepo.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

Я пробовал разные вещиизменить, как положить весь путь к хранилищу (даже я нигде не видел, так что это неправильно), и я получил:

Counting objects: 3, done.
Writing objects: 100% (3/3), 243 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: ENV GL_RC not set
remote: BEGIN failed--compilation aborted at hooks/update line 20.
remote: error: hook declined to update refs/heads/master
To git@<<SERVER_IP>>:/home/git/repositories/myrepo.git
 ! [remote rejected] master -> master (hook declined)
error: failed to push some refs to 'git@<<SERVER_IP>>:/home/git/repositories/myrepo.git'

Что я делаю неправильно?Это расстраивает, потому что для такой основной задачи я испытываю необычные трудности.У меня большой опыт работы с SVN, это первые игры с GIT.

Заранее благодарю за помощь!

1 Ответ

1 голос
/ 28 января 2012

Примечание для 1 /: Это могло бы сработать, если бы identityfile было именем по умолчанию (id_rsa.pub и id_rsa). Поскольку это не так, файл config был обязательным.

Примечание для 2 / вы создали git-репо, но сообщили ли вы Gitolite об этом?
Вы должны объявить новое репо в конфигурационном файле репозитория gitolite-admin .

Если вы проталкиваете ssh как root, это означает, что использование имеет свои собственные ~/.ssh/id_rsa(.pub) ключи, и эти ключи были зарегистрированы для Gitolite.

Примечание для путей репо: никогда не используйте полный локальный путь репо для адреса push / pull: это полностью обойдет Gitolite.


Газильон комментирует позже, кажется, что:

  • все удаленные адреса должны начинаться с git@somehostname:arepo.git: вы хотите, чтобы ваш пользователь выполнял команды git для somehostname как 'git' (учетная запись, отвечающая за git и гитолит).
    Это означает, что открытый ключ myuser должен быть зарегистрирован на somehostname:~git/.ssh/authorized_keys

  • каждый раз, когда ssh-соединение не работает, вы можете начать с просмотра ssh отладочных советов .
    Например: ssh -vvv git:somehostname может показать, что происходит

  • если вы хотите избежать файла config, то вам нужно использовать стандартное соглашение об именах для этих открытых / закрытых ключей (~myuser/.ssh/id_rsa и ~myuser/.ssh/id_rsa.pub)

...