2012-01-16 22 views
28

Quindi questo è come ho creato il mio progetto:Git, Come cambiare un bare per un repository condiviso?

git init --bare 

tardi ho imparato che se si vuole lavorare su un progetto con più utenti è così che avrei dovuto farlo:

git init --bare --shared 

Ora ho provato a lavorare in questo modo e fortunatamente siamo all'inizio, quindi potrei riprenderlo di nuovo. Ancora mi chiedo però quando sei nel bel mezzo di un progetto non puoi farlo. C'è un modo in cui posso cambiare un repository nudo in uno condiviso?

+0

Un altro uso caso in cui si vorrebbe modificare un repository nudo esistente è se il repository remoto è corrotto e si sta tentando di sostituirlo con un repository nudo che è stato modificato da un normale repo. –

+1

Già in 'git 1.7.1' puoi eseguire il comando' git init --bare --shared' in un repository * exiting * e 'git' * reinizializzerà * il repository con la condivisione specificata. – go2null

+0

Possibile duplicato di [Come configurare un repository git esistente da condividere con un gruppo UNIX] (http://stackoverflow.com/questions/3242282/how-to-configure-an-existing-git-repo-to-be -shared-by-a-unix-group) –

risposta

34

Poiché l'opzione --shared imposta solo i permessi su tutto ciò nel repository al gruppo-scrivibile si possa fare ciò manualmente in seguito:

$ chmod -R g+w the/repo/path 

Inoltre, aggiungere

sharedrepository = 1 

nella sezione [core] in .git/config. pronti contro termine in comune hanno anche la seguente receive option definito di default (che si può o non può decidere):

[receive] 
    denyNonFastforwards = true 

Nota: Al fine di decidere se si desidera denyNonFastforwards: Questa opzione significa una fusione non accade mai nel repository condiviso, che, a sua volta, significa che non c'è mai un conflitto di fusione sul repository condiviso. Invece la spinta viene respinta costringendo l'utente a fare l'unione nel proprio repository locale dove è molto più facile da correggere e dove non interferisce con l'utilizzo da parte di altre persone del repository condiviso.

+0

Aha ok! Buono a sapersi, vorrei averlo chiesto prima. Grazie! – bottleboot

+1

Ok, capisco! Ho appena letto la risposta @ jørgensen che lo conferma. Stackoverflow dovrebbe avere un pulsante di risposta combinato: D! Grazie mille a tutti che è stato molto illuminante! – bottleboot

+0

Non ha funzionato per me. Richiedeva 'chmod -R g + s ...'. Un nuovo 'git init --bare --shared' avrà i diritti di gruppo" rws ". (Ubuntu 12.04) – Unapiedra

5

Oltre chmod -R g + w, è inoltre necessario modificare (.git/)config e impostare core.sharedRepository = .... Per ..., ci sono una manciata di valori, descritti in git-init (1).

+0

Ok! Ciò sembra completare il mio sospetto che dovevo anche cambiare la configurazione. Grazie! – bottleboot

4

Probabilmente se si tenta di condividere un repository esistente, è possibile che si commettano molti utenti diversi.

1.Se si dispone dell'autorizzazione di super utente, è possibile andare avanti e modificare tutte le autorizzazioni da soli utilizzando il passaggio due, in ogni caso sarà necessario chiedere a tutti gli utenti gli oggetti creati con i propri utenti, utilizzare quanto segue comando per sapere chi sono:

$ ls -la | awk '{print $3}' | sort -u 
<your user_name> 
<his user_name> 

2.Now voi e gli utenti del proprietario del file tutto dovrà cambiare quei file il permesso, facendo:

$ chmod -R 774 . 

3.Dopo di che è necessario aggiungere una nuova proprietà che è equivalente a --shared = gruppo fatto per il nuovo repository, in base alla documentazione, questo rende il repository gruppo-scrivibile, farlo eseguendo:

$ git config core.sharedRepository group 
Problemi correlati