Come posso rinominare un repository Git creato con gitolite?


85

Ho creato un repository Git usando gitolite. Ora vorrei rinominare quel repository.

Come posso fare questo?

Nel readme di gitolite c'è scritto che non dovrei lavorare direttamente sul server. Ma immagino di dover fare un po 'di lavoro sul server in questo caso, giusto?


Bella domanda e grazie per il commento alla mia risposta. Oggi avevo bisogno di questa risposta;)

Risposte:


135

Come indicato nel manuale di amministrazione di base di gitolite :

rinominare un repo

Questo è simile; non c'è codice per farlo gitolite. Quello che fai è:

  • accedere al server, cd $REPO_BASE(predefinito:) cd ~/repositoriese

    mv old-name.git new-name.git

  • torna sul tuo clone gitolite-admin, modifica conf/gitolite.confe sostituisci tutte le occorrenze di old-namecon new-name. Quindi aggiungi, esegui il commit e spingi come al solito.

L'ordine di questi 2 passaggi è importante; non invertirli :-)

Un terzo passaggio è necessario su gitolite3:

  • modificare il file gl-confnel repository e cambiare il nome del repository con il nuovo nome

E, naturalmente, ogni utente dovrebbe aggiornare la configurazione del suo clone in modo che punti al nuovo nome del repository.


7
Su gitolite3 devi anche modificare gl-confe cambiare il nome del repository.
Fernando Correia

4
non dimenticare di impostare l'URL remoto della tua copia locale del repository con il nuovo nome:, git remote set-url git@your.server:new-name.gitquindi fai un git fetchper assicurarti che non ci siano errori.
cneuro

Avevo eseguito i primi due passaggi nell'ordine sbagliato prima di arrivare a questa risposta. Cordiali saluti, ha anche funzionato, doveva solo rm -r new-name.gitprima del mvcomando.
Arnaud P

9

Non ho familiarità con gitolite in particolare, ma un approccio che potrebbe funzionare è creare un repository completamente nuovo con il nome corretto, inserire il codice in quello e quindi eliminare quello vecchio.


Da quello che so che dovrebbe mantenere la storia. +1

1
L'eliminazione del vecchio repository, la creazione di un nuovo repository e il push del contenuto del vecchio repository in quello nuovo funziona. Grazie!
Patrick,

Ecco i comandi per ottenere ciò (presuppone che NewRepo sia già stato creato in Gitolite): // Nel vecchio repository $ git remote add <remote-moniker> NewRepo $ git push --all --force NewRepo // Nel nuovo repository $ git pull Non è necessario hackerare la configurazione di gitolite e tutta la cronologia è stata mantenuta :)
Matthew Skelton,

0

Utilizzando Greg Hewgill come idea, è possibile rinominare il repository nel file di configurazione. Potresti provare prima su un repository fittizio. Il mio sospetto è che il vecchio nome verrà eliminato, il nuovo verrà creato e sarà necessario aggiornare le proprie origini localmente, quindi premere.


Sfortunatamente, rinominare il repository nel file di configurazione non funziona. gitlolite aggiunge il nuovo repository ma non elimina quello vecchio. Usare l'idea di Greg funziona, però.
Patrick,

@ Patrick: Buono a sapersi, non ho avuto bisogno di rinominarne o cancellarne uno.

-2

Un approccio pulito consiste nel creare il nuovo repository vuoto, quindi eseguire le seguenti operazioni:

Supponendo che il vecchio sia VECCHIO e il nuovo (vuoto) sia NUOVO:

# 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

Oppure puoi utilizzare direttamente il repository remoto per OLD:

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

Ciò manterrà tutta la cronologia e consentirà a gitolite di gestire i suoi interni. Inoltre dovrai aggiornare gitolite-admin ma non ci sono limitazioni nell'ordine.

Funziona anche da remoto senza problemi.

Tuttavia, l'eliminazione del VECCHIO repository dovrebbe essere eseguita seguendo le istruzioni di gitolite (localmente).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.