Sei confuso riguardo al ruolo di un sistema di controllo della versione. Non è e non è mai stato concepito per essere un sistema di backup per un sito Web in esecuzione. Fa un ottimo lavoro di gestione del contenuto statico in modo che venga trasferito in produzione in modo controllato. Con l'uso appropriato di tagging e checkout automatizzati, anche i siti che cambiano rapidamente possono essere tenuti in un sistema di controllo della versione.
Un sistema di controllo delle versioni sarà in grado di dirti come sei arrivato da ciò che il sito sembrava il mese scorso a come appare oggi (almeno per quei componenti che sono sotto il controllo del codice sorgente). Dovrebbe includere tutto il necessario per ricostruire il sito Web (escluso il contenuto dinamico). Come altri hanno notato, qualsiasi modifica alle autorizzazioni e alla proprietà dovrebbe essere programmata e lo script incluso nel controllo di versione.
Le autorizzazioni di accesso per i siti Web sono in genere abbastanza semplici. (Fondamentalmente, è necessario assicurarsi che il server Web possa leggere tutto il contenuto e scriverne pochissimo.) Ad eccezione della proprietà delle directory delle poche directory che devono essere modificabili dalla sovversione del server Web, e possibilmente git, può certamente gestire le autorizzazioni. Le directory che sono scrivibili dal server Web in genere contengono contenuti dinamici (creati e aggiornati dal sito Web), gestiti separatamente dall'origine dei siti Web.
Se mi venisse chiesto di lavorare con un sito Web con autorizzazioni e ACL complicati sul tuo sito web, avrei serie preoccupazioni riguardo al processo utilizzato per gestire il sito web. Implementare un sistema di controllo delle versioni e spostare gli ACL in esso sarebbe una delle soluzioni che prenderei seriamente in considerazione.
Il contenuto dinamico, come voci di blog o commenti, è in genere contenuto in un database o in un altro datastore piuttosto che nel controllo di versione utilizzato per creare il sito. L'archivio dati può essere organizzato per fornire il controllo della versione del contenuto (come questo software). Molti Wiki usano un sistema di controllo della versione per tenere traccia delle revisioni.
EDIT:
The fix I am using is (a) No version control at all, (b) The production site is the master site, (c) Archive every time anything changes, (d) The archive script removes junk like ACL, and (e) the install script fixes other junk like file permissions.
Questi problemi possono essere gestiti importando il sito in un sistema di controllo della versione e modificando il processo in modo che il sito principale venga aggiornato attraverso quel sistema. (a), (b) e (c) sono gestiti direttamente dal controllo di versione. Puoi taggare i rilasci per rendere (c) un lavoro migliore. (d) in genere non è un problema se si dispone solo del sistema di distribuzione che modifica il sito. Non ho mai avuto bisogno di ACL sul contenuto del sito.
(e) dovrebbe solo essere eseguito sulla creazione iniziale e sui principali cambiamenti. Potrebbe anche includere lo script che aggiorna il sito dal controllo di versione e viene eseguito frequentemente. Questi script tendono ad essere abbastanza semplici quando si mantiene il sito nel sistema di controllo dell'avversione.
But why hasn't anyone built a general system to do this?
Perché non è necessario se si utilizza un sistema di controllo della versione.
A version control system COULD track all this stuff, but none does.
Sia CVS che Subversion tengono traccia di ciò che devi monitorare se li stai utilizzando. Non tracciano la cosa che devi monitorare perché non stai utilizzando un sistema di controllo della versione, né dovrebbero. Tracciano ciò che è necessario tenere traccia quando si utilizza un sistema di controllo della versione.
Ho lavorato con diversi siti che gestivano i loro contenuti utilizzando il controllo della versione. Tutti avevano requisiti diversi per i siti di gestione temporanea, la frequenza di implementazione e la completezza degli aggiornamenti. Una volta che i siti erano in controllo di versione che soddisfano il resto dei requisiti erano relativamente facili da soddisfare. La documentazione per CVS e Subversion fornisce suggerimenti per possibili metodi di aggiornamento.
Potresti aver bisogno di ACL per limitare l'accesso a particolari aree all'interno del contenuto controllato dalla versione. Tuttavia, tendo a lavorare su una base di fiducia. Il controllo della versione rende facile vedere chi ha fatto cosa quando. Se non si riformatta il file, è facile ottenere una cronologia annotata di un file che mostra chi ha aggiunto quali linee quando.