Como faço para renomear um repositório Git criado com gitolite?

85

Criei um repositório Git usando gitolite. Agora eu gostaria de renomear esse repositório.

Como posso fazer isso?

No readme do gitolite diz que não devo trabalhar diretamente no servidor. Mas acho que tenho que fazer algum trabalho no servidor nesse caso, certo?

Patrick
fonte
Boa pergunta e obrigado pelo comentário na minha resposta. Hoje eu precisava dessa resposta;)

Respostas:

135

Conforme indicado no manual gitolite basic-admin :

renomeando um repo

Isso é semelhante; não há código para fazer isso gitolite. O que você faz é:

  • faça logon no servidor, cd $REPO_BASE(padrão cd ~/repositories:), e

    mv old-name.git new-name.git

  • de volta em seu clone gitolite-admin, edite conf/gitolite.confe substitua todas as ocorrências de old-namepor new-name. Em seguida, adicione, confirme e envie como de costume.

A ordem dessas 2 etapas é importante; não os inverta :-)

Uma terceira etapa é necessária no gitolite3:

  • edite o arquivo gl-confno repo e mude o nome do repositório para o novo nome

E, claro, cada usuário deve atualizar sua configuração de clone para apontar para o novo nome do repo.

Takehin
fonte
7
No gitolite3, você também deve editar gl-confe alterar o nome do repositório.
Fernando Correia
4
não se esqueça de definir o url remoto de sua cópia local do repo com o novo nome: e git remote set-url [email protected]:new-name.git, em seguida, faça um git fetchpara certificar-se de que não haja erros.
cneuro
Eu dei as duas primeiras etapas na ordem errada antes de chegar a essa resposta. Para sua informação também funcionou, só tinha que funcionar rm -r new-name.gitantes do mvcomando.
Arnaud P
9

Não estou familiarizado com o gitolite especificamente, mas uma abordagem que pode funcionar é criar um repositório completamente novo com o nome correto, enviar seu código para aquele e excluir o antigo.

Greg Hewgill
fonte
Pelo que sei isso deve manter a história. +1
1
Excluir o repositório antigo, criar um novo repositório e enviar o conteúdo do antigo para o novo funciona. Obrigado!
Patrick de
Aqui estão os comandos para conseguir isso (presume que NewRepo já foi criado no Gitolite): // No antigo repo $ git remote add <remote-moniker> NewRepo $ git push --all --force NewRepo // No novo repo $ git pull Não há necessidade de hackear a configuração do gitolite e toda a história mantida :)
Matthew Skelton
0

Usando Greg Hewgill como uma ideia, você possivelmente pode renomear o repositório no arquivo de configuração. Você pode querer tentar primeiro em um repositório fictício. Minhas suspeitas são que o nome antigo será excluído, o novo será criado e você precisará atualizar suas origens localmente e enviar.


fonte
Infelizmente, renomear o repositório no arquivo de configuração não funciona. gitlolite adiciona o novo repositório, mas não exclui o antigo. Usar a ideia de Greg funciona, no entanto.
Patrick de
@ Patrick: Bom saber, não precisei renomear ou deletar nenhum.
-2

Uma abordagem limpa é criar o novo repositório vazio e fazer o seguinte:

Assumindo que o antigo é ANTIGO e o novo (vazio) é NOVO:

# 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

Ou você pode usar diretamente o repo remoto para OLD:

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

Isso manterá todo o histórico e permitirá que o gitolite cuide de seus componentes internos. Além disso, você terá que atualizar gitolite-admin, mas não há limitação no pedido.

Isso também funciona remotamente sem problemas.

A exclusão do repositório OLD deve ser feita de acordo com as instruções do gitolite (localmente).

V13
fonte