Как переименовать репозиторий Git, созданный с помощью gitolite?

85

Я создал репозиторий Git с помощью gitolite. Теперь я хотел бы переименовать это хранилище.

Как я могу это сделать?

В readme гитолита сказано, что я не должен работать непосредственно на сервере. Но в этом случае мне нужно поработать с сервером, верно?

Патрик
источник
Хороший вопрос и спасибо за комментарий к моему ответу. Сегодня мне нужен был этот ответ;)

Ответы:

135

Как указано в руководстве gitolite basic-admin :

переименование репо

Это похоже; нет кода для этого gitolite. Что вы делаете:

  • войдите на сервер cd $REPO_BASE(по умолчанию:) cd ~/repositoriesи

    mv old-name.git new-name.git

  • обратно на gitolite-админ клон, редактировать conf/gitolite.confи заменить все вхождения old-nameс new-name. Затем добавьте, зафиксируйте и нажмите как обычно.

Порядок этих 2 шагов важен; не меняйте их местами :-)

На гитолите3 необходим третий шаг:

  • отредактируйте файл gl-confв репо и измените имя репозитория на новое имя

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

Takehin
источник
7
На gitolite3 вам также нужно отредактировать gl-confи изменить имя репозитория.
Фернандо Коррейя,
4
не забудьте установить для удаленного URL вашей локальной копии репо новое имя:, git remote set-url git@your.server:new-name.gitзатем выполните a, git fetchчтобы убедиться в отсутствии ошибок.
cneuro
Я сделал первые два шага в неправильном порядке, прежде чем пришел к этому ответу. К вашему сведению, это тоже сработало, просто нужно было rm -r new-name.gitперед mvкомандой.
Arnaud P
9

Я не знаком с gitolite конкретно, но один из подходов, который может сработать, - это создать полностью новый репозиторий с правильным именем, вставить свой код в него, а затем удалить старый.

Грег Хьюгилл
источник
Из того, что я знаю, следует сохранить историю. +1
1
Удаление старого репозитория, создание нового репозитория и перенос содержимого старого репозитория в новый работают. Благодаря!
Патрик
Вот команды для этого (предполагается, что NewRepo уже создан в Gitolite): // В старом репо $ git remote add <remote-moniker> NewRepo $ git push --all --force NewRepo // В новом репо $ git pull Нет необходимости взламывать конфигурацию гитолита, и вся история сохраняется :)
Мэтью Скелтон
0

Используя в качестве идеи Грега Хьюгилла, вы можете переименовать репозиторий в файле конфигурации. Вы можете сначала попробовать это в фиктивном репозитории. Я подозреваю, что старое имя будет удалено, новое будет создано, и вам нужно обновить исходное имя локально, а затем нажать.


источник
К сожалению, переименование репозитория в файле конфигурации не работает. gitlolite добавляет новый репозиторий, но не удаляет старый. Однако идея Грега работает.
Патрик
@Patrick: Полезно знать, мне не нужно было его переименовывать или удалять.
-2

Чистый подход - создать новый репозиторий как пустой, а затем сделать следующее:

Предполагая, что старый - СТАРЫЙ, а новый (пустой) - НОВЫЙ:

# mkdir /tmp/1
# cd /tmp/1
# git clone OLD_REPO old
# git clone NEW_REPO new
# cd new
# git pull ../old
# git push origin master

Или вы можете использовать удаленное репо напрямую для OLD:

# mkdir /tmp/1
# cd /tmp/1
# git clone NEW_REPO new
# cd new
# git pull OLD_REPO
# git push origin master

Это сохранит всю историю и позволит гитолиту справиться со своими внутренностями. Кроме того, вам нужно будет обновить gitolite-admin, но в порядке нет ограничений.

Это тоже работает удаленно без проблем.

Однако удаление старого репозитория должно выполняться в соответствии с инструкциями gitolite (локально).

V13
источник