LINUX.ORG.RU
ФорумAdmin

Gitosis не делает репы


0

0

Имеется ArchLinux и gitosis, поставленный по мануалу (http://wiki.archlinux.org/index.php/Setting_Up_Git_ACL_Using_gitosis)

Грабли 1

Не может склонировать репозиторий командой (написанной в мануале):

git clone git@host:gitosis-admin.git

но отлично клонирует командой:

git clone git@host:repositories/gitosis-admin.git

Видел на StackOverflow обсуждение на эту тему, ни к чему хорошему там обсуждатели не пришли.

Грабли 2

Вот такая «команда»:

mkdir example-repo
cd example-repo
git init
git remote add origin git@myserver:/gitrepo/example-repo.git
vim README
git add README
git commit -m "Initial commit"
git push origin master:refs/heads/master

получаем в ответ:

fatal: 'repositories/example-repo.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

Как заставить это работать?!

Вдруг кто его настраивал и знает, чем засада...

★★★★☆

Последнее исправление: stevejobs (всего исправлений: 2)

> Грабли 2
До этого ты должен на сервере создать сам gitrepo/example-repo.git

Можно просто

cd gitrepo
mkdir example-repo.git
git init --bare

oh
()

Я не знаю как там у вас, но я клонирую так

$ git clone git+ssh://gitosis@host/gitosis-admin.git

Далее, непосредственно на сервере это выглядит так:

$ grep gitosis /etc/passwd
gitosis:x:109:111:git repository hosting,,,:/srv/gitosis:/bin/sh
$ ls -la /srv/gitosis/
total 32
drwxr-xr-x  6 gitosis gitosis 4096 2010-05-14 00:17 .
drwxr-xr-x  3 root    root    4096 2009-11-26 11:42 ..
-rw-------  1 gitosis gitosis 1194 2010-05-14 00:28 .bash_history
drwxr-xr-x  2 gitosis gitosis 4096 2010-06-02 12:42 gitosis
lrwxrwxrwx  1 gitosis gitosis   56 2009-11-26 19:44 .gitosis.conf -> /srv/gitosis/repositories/gitosis-admin.git/gitosis.conf
drwxr-xr-x 26 gitosis gitosis 4096 2010-06-02 12:42 repositories
drwxr-xr-x  2 gitosis gitosis 4096 2010-05-14 00:17 scripts
drwx------  2 gitosis gitosis 4096 2010-06-02 12:39 .ssh

Вообщем проверь пермишены. Желательно что бы и gitosis.conf кинул - мало ли ты там накосячил.

BigAlex ★★★
()
Ответ на: комментарий от oh

До этого ты должен на сервере создать сам gitrepo/example-repo.git

Хорошо, но тогда каким образом будет осуществаляться авторизация по rsa-ключам, которые лежат в keydir?

Сделал как вы сказали. Вот такая фигня возникает:

git push origin master:refs/heads/master 

user1@myhost's password: ***************

Counting objects: 3, done.
Writing objects: 100% (3/3), 239 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
error: insufficient permission for adding an object to repository database ./objects

fatal: failed to write object
error: unpack failed: unpack-objects abnormal exit
To user1@myhost:/gitrepo/example-repo.git
 ! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to 'user1@myhost:/gitrepo/example-repo.git'

При этом файл user1.pub и user1 (сделанные по ssh-keygen -t rsa) лежат в /home/user1/.ssh, user1.pub скопирован в keydir, а в gitosis.conf разрешена запись (writable) для example-repo.git

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от BigAlex

Вообщем проверь пермишены. Желательно что бы и gitosis.conf кинул - мало ли ты там накосячил.

директория, где создается репозиторий - принадлежит пользователю и группе git

gitosis.conf:

[gitosis]
loglevel = DEBUG

[group example-repo]
writable = example-repo
members = hedin

[group example-repo-ro]
readonly = example-repo
members = asher

[group gitosis-admin]
writable = gitosis-admin
members = root@archangel
stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от oh

> Мммм.. странно, а почему git@host:/gitrepo/ а не git@host:gitrepo?

потому что путь (в соответсвии с граблями 1) работает только абсолютный, либо относительный (относительно домашней директории того пользователя, от которого стучишься, т.е. user1@host:repository/example-repo.git будет эквивалентно /home/user1/repository/example-repo.git). Сейчас я использую абсолютный путь, а папка /gitrepo - линк на стандартный /srv/gitosis/repository.

Алсо права для именно для gitrepo/example-repo.git?


какие именно права? в gitosis.conf - да (запостил конфиг только что)

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

Хмм, сорри тогда, как для user1 сделать я не знаю. Просто ты в первом посте добавлял remote git@, а не user1@ :(

oh
()
Ответ на: комментарий от oh

> Хмм, сорри тогда, как для user1 сделать я не знаю. Просто ты в первом посте добавлял remote git@, а не user1@ :(

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

а есть какая-нибудь хорошая альтернатива гитозису, чтобы она «просто работала»? Уже половину интернетов перевернул с этим гитозисом...

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от BigAlex

> Я не знаю как там у вас, но я клонирую так

а как ты делаешь первый пуш в репозиторий?

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

Если надо запаролить ВСЕ репозитории, то гитозиз вообще не нужен.
Просто создаешь юзера git, добавляешь возможноть авторизации по ключам, ключи всех пользователей добавляешь куда надо.
Потом просто
на сервере
mkdir ~git/myrepo.git
cd ~git/myrepo.git
git init --bare

..
у юзера на компе
git add remote origin git@host:myrepo.git
`git push` будет происходить через ssh по ключю


А вот если надо отдельным пользователям отдельные репы, то тут надо гитозиз.

oh
()
Ответ на: комментарий от oh

> А вот если надо отдельным пользователям отдельные репы, то тут надо гитозиз.

отдельным пользователям отдельные репы, и с разными правами :(

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от oh

Толи я чего-то не понимаю, толи ты предлагаешь человеку соскочить с Gitosis и тут же даешь ссылку на мануал по настроке Gitosis.

Gitosis - это вообще Git, OpenSSH + беспарольная авторизация, и пару собственных скриптов. Делать все тоже руками - маразм.

BigAlex ★★★
()
Ответ на: комментарий от BigAlex

Я рассказывал как делать без gitosis, когда прочитал

чтобы запаролить все гитовые репозитории

Я подумал что это может значить

Если надо запаролить ВСЕ репозитории

oh
()

Друзья, спасибо большое за участие!

История закончилась с помощью gitolite. Он «просто работает».

stevejobs ★★★★☆
() автор топика
Ответ на: офф от oh

> Стив, а с тобой как-то связаться можно? жаббир, там

да

hedin.pr@gmail.com - гуглотолк и основная почта
+7 923 231 3262 - телефон (Мегафон-Новосибирск)
+7 383 274 1463 - офис (Технопарк-Новосибирск)

сейчас движняк, буду в джаббере только вечером

stevejobs ★★★★☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.