2011-08-23 14 views
8

Ho riscontrato un problema che mi ha richiesto molto tempo per trovare una soluzione e non riuscire a ottenerne una.Come conservare il permesso per il file in git?

Il problema che ho avuto è 'DatabaseError:' tentativo di scrivere un database di sola lettura 'quando ho provato a distribuire il mio sito web attraverso git a un hosting Django.

Sembra che git cambierà il permesso dei miei file, da 777 a 755. Ma ogni volta che impegno il mio progetto, questo cambiamento persisterà. Tuttavia, ho ancora bisogno di scrivere qualcosa nel mio database (database SQLite).

Qualcuno ha un suggerimento per configurare il mio git per preservare la modalità di autorizzazione ad ogni commit?

risposta

11

In breve, non è possibile.

Più a lungo, ci sono progetti come etckeeper che possono farlo automaticamente, oppure è possibile scrivere un piccolo script di hook che correggerà le autorizzazioni (che è probabilmente come lo farei io).

Per esempio, se si commettono qualcosa di questo:

#!/bin/sh 
chmod -R XXX file_or_directory/ 

A, ad esempio, scripts/fix_permissions/, quindi eseguirlo come un gancio post-receive da simlinking in .git/hooks/post-receive sul server.

+0

Si noti che se si deve probabilmente utilizzare un hook di post-ricezione per aggiornare i file il server è in esecuzione da ogni caso, poiché l'esecuzione di qualcosa direttamente da un repository Git su un server è in genere una cattiva idea. – Amber

+0

Questo è molto vero. Mi piace tenere i miei ganci nel repository, quindi sono versionati insieme a tutto il resto, ma è perché lavoro su piccoli progetti in cui tutti gli sviluppatori hanno comunque accesso root ai server ... Ma certamente apre un potenziale buco di sicurezza. –

Problemi correlati