2010-09-06 14 views
5

Ho ripristinato un repository git dal backup e non ha le autorizzazioni file corrette. È sufficiente impostare owner + rw su tutti i file e le directory in .git, o è più sottile?

Esiste un'utilità per controllare o ripristinare le autorizzazioni del file .git?

risposta

14

Gli elenchi devono disporre dell'autorizzazione 755; i file dovrebbero avere il permesso 644.

Questa è una buona regola empirica a meno che non ci si aspetti che membri del proprio gruppo apporti modifiche al proprio repository.

Detto questo, in uno dei miei repository, i file sotto .git/objects/* hanno un'autorizzazione 444 (sola lettura) per tutti. Altri file sono 644 come suggerito.

Questo script, eseguito nella directory di livello superiore appena sopra il repository .git avrebbe risolto i permessi:

find .git -type d | xargs chmod 755 
find .git/objects -type f | xargs chmod 444 
find .git -type f | grep -v /objects/ | xargs chmod 644 

Ho iniziato con -print0 per i primi due find comandi e xargs -0 per consentire la remota possibilità di spazi nei nomi dei file. Ma il grep -v nel terzo comando sarebbe difficile da gestire con il formato -print0 - quindi ho omesso la notazione in base allo spazio di tutti i comandi, sapendo che git non crea file con spaziatura nei nomi sotto la directory .git.

+0

Grazie per quello –

+0

ho ricevuto un messaggio di autorizzazione negato/FETCH_HEAD quando ho eseguito '' 'git pull''' indipendentemente dalle autorizzazioni impostate su di esso. Questo ha risolto il problema e mi ha aiutato a impostare le autorizzazioni di gruppo. Grazie! – bzuillsmith

+0

Qual è il minimo però. Non possiamo andare a 750 sulle directory e 440/640 sugli oggetti? Supponendo che l'env sia configurato correttamente, con gruppi. – blamb

Problemi correlati