Создание репозиториев gitolite версии 3 из существующих репозиториев версии 2.

У меня на сервере моей компании установлен gitolite v2, и теперь мне нужно его администрировать. Так как там действительно хаотично решил поставить новую, сейчас v3. У меня есть около 8 репозиториев, которые я хочу переместить в новую установку.

Мне не нужен старый файл .rc или какие-либо конфигурации, только (рабочий!) $GIT_HOME/repositories/*.git

Что я пробовал: (нашел при поиске решения)
скопировал все $GIT_OLD_HOME/repositories/*.git в $GIT_HOME/repositories/*.git (кроме gitolite-admin.git и testing.git)

затем я обновил gitolite-admin.git/conf/gitolite.conf (путем клонирования и отбрасывания изменений) с такими записями:

repo myrepo1
RW+ = @all

Теперь, если я хочу клонировать что-то кроме gitolite-admin или testing, он говорит:
FATAL: R any myrepo1 myusername DENIED by fallthru

Несколько вещей, которые я проверил:
ls -l $GIT_HOME -> gitolite:gitolite, все в порядке, я думаю, поскольку gitolite — это пользователь, которого я хочу использовать
Я сделал то же самое для всех записей в каталоге repositories и права одинаковые.

Я искал решение, но не нашел ничего подходящего для моего случая. Если вы можете помочь мне или предложить мне что-нибудь, пожалуйста, не сдерживайтесь :)

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


person Attila Horvath    schedule 20.03.2013    source источник


Ответы (2)


Убедитесь, что вы перенесли свой .gitolite.rc файл, как описано в страница перехода с g2 на g3

если вы переходите с g2, есть некоторые настройки, которые ДОЛЖНЫ быть обработаны перед запуском установки gitolite; пожалуйста, прочитайте страницу миграции и связанные страницы, и особенно страницу о предварительной настройке файла rc.

Файл rc для g3 сильно отличается от файла g2.

Или, если вам не нужен старый, как вы упомянули, убедитесь, что содержимое нового по умолчанию имеет соответствующие значения.

Убедитесь, что ваш новый файл ~git/.ssh/authorized_keys содержит строку с myusername.


ОП Аттила Хорват подтверждает:

Примечание: ничто в любом из gitolite install/setup/etc никогда не коснется данных в любом репозитории, кроме репозитория gitolite-admin. Единственное, к чему он обычно прикасается в обычных репозиториях, — это крючок обновления.

Последнее предложение просто привлекло мое внимание, и теперь кажется, что проблема была в нем.
Сначала я установил gitolite, а затем скопировал туда репозитории, поэтому мне пришлось снова запустить gitolite setup -pk mykey.pub, и теперь он работает !

person VonC    schedule 20.03.2013
comment
comment
VonC, спасибо за ответ! У меня есть соответствующая запись в моем ~git/.ssh/authorized_keys, например: # gitolite start command=... mypubkey # gitolite end - person Attila Horvath; 20.03.2013
comment
Также я ранее проверял официальную страницу миграции, но думаю, что все сделал правильно, так как мне не нужны предыдущие конфигурации или файл .rc. - person Attila Horvath; 20.03.2013
comment
@AttilaHorvath, ваша запись содержит «myusername»? как в command="/home/git/bin/gitolite-shell myusername",no-port-forwarding,... g3 следует использовать gitolite-shell. - person VonC; 20.03.2013
comment
Да, это так, но есть небольшая разница. Вот мой: command="$GIT_HOME/src/gitolite-shell myusername",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty У меня есть каталог bin в $GIT_HOME, но он содержит только gitolite. - person Attila Horvath; 20.03.2013
comment
Какой я тупой! Примечание: ничто в gitolite install/setup/etc никогда не коснется данных в любом репозитории, кроме репозитория gitolite-admin. Единственное, к чему он обычно прикасается в обычных репозиториях, — это крючок обновления. Последнее предложение просто привлекло мое внимание, и теперь кажется, что это была проблема. Я сначала установил gitolite, затем скопировал туда репозитории, так что мне пришлось снова запустить gitolite setup -pk mykey.pub и теперь вроде работает! Спасибо @VonC за помощь! - person Attila Horvath; 20.03.2013
comment
@AttilaHorvath отлично! Я включил ваш вывод в ответ для большей наглядности. - person VonC; 20.03.2013

У меня была та же проблема, и обновление не работало должным образом, поэтому я использовал следующую стратегию: жирный текст показывает, где был выполнен шаг:

1- Новое: установите Gitolite (https://github.com/sitaramc/gitolite).

2- Рабочая станция: в новом пустом каталоге клонируйте gitolite-admin старой версии и переименуйте его в gitolite-admin-old. Удалите доступ для всех пользователей в gitolite-admin-old/conf/gitolite.conf, кроме себя — чтобы запретить кому-либо вносить какие-либо изменения во время переноса репозиториев.

3- Рабочая станция: клонируйте все репозитории из старого Gitolite. git clone [email protected]:repo.

4- Старый: мы уже получили то, что хотели, из старого репозитория. Отключите старый gitolite навсегда, добавив exit 0 в начало файла .gitolite.rc.

5- Рабочая станция: клонировать gitolite-admin с нового сервера git clone [email protected]:gitolite-admin gitolite-admin-new

6- Рабочая станция: скопируйте ключи из gitolite-admin-old/keydir в gitolite-admin-new/keydir, добавьте репозитории, которые вы хотите перенести, в новый gitolite-admin-new/conf/gitolite.conf с привилегиями пользователя. добавить, зафиксировать и нажать.

7- Рабочая станция: перенесите каждый требуемый репозиторий на новый сервер.

git push --all [email protected]:repo
git push --tags [email protected]:repo
or
git push --mirror [email protected]:repo

8- Рабочие станции. Измените DNS или удаленный URL-адрес для каждого рабочего репозитория.

Надеюсь это поможет

person wael34218    schedule 30.01.2014
comment
Интересный обходной путь (если мой собственный ответ вам не подходит). +1 - person VonC; 30.01.2014