Quale sistema di controllo delle versioni può gestire tutti gli aspetti? [chiuso]

16

Alcuni mesi fa ho scavato in Subversion e GIT e sono rimasto deluso. Gestiscono il codice SOURCE ma non altri aspetti. Ad esempio, un sito web sotto controllo di versione deve gestire la proprietà di file / directory, file / directory read & accesso in scrittura, liste di controllo accessi, data e ora, contenuto del database. e collegamenti esterni. Esiste un sistema di controllo delle versioni in grado di eseguire una reversione perfetta come il ricaricamento di un backup vecchio di un mese?

    
posta Andy Canfield 19.11.2011 - 08:08
fonte

5 risposte

44

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.

    
risposta data 19.11.2011 - 09:31
fonte
10

Tutti e nessuno di essi.

È una cattiva idea ottenere il controllo del codice sorgente per gestire direttamente questi dettagli, nel modo in cui la tua domanda lascia intendere.

Tuttavia, è possibile scrivere uno script di bash (* nix) o uno script di PowerShell (Windows), che raggiunge uno o tutti quegli obiettivi. Questo script potrebbe essere memorizzato nel controllo sorgente.

Quindi puoi rendere quello script uno dei tuoi artefatti di build ed eseguirlo come parte della tua implementazione.

    
risposta data 19.11.2011 - 08:40
fonte
2

IMHO un sistema di controllo della versione in sé non è destinato a essere utilizzato in questo modo.

Ma quello che tendo a fare è assicurarmi che tu possa ottenere una versione dal controllo del codice sorgente; devi solo eseguire un file di build / un file di PowerShell e tutto è attivo e funzionante di nuovo.

Per questo è necessario:

  • tutte le librerie che app dipende dal controllo sorgente
  • un file di build che imposta il tuo ambiente
  • un'istruzione sui requisiti del tuo ambiente (non vuoi installare un server sql nel tuo controllo sorgente)
risposta data 19.11.2011 - 08:48
fonte
1

Credo che ciò di cui hai bisogno nel tuo caso sia uno strumento gestione della configurazione . Quello che ho usato è pupazzo .

Citando:

manage file/directory ownership, file/directory read & write access,

L'ho fatto con una riga (assicurati che l'utente esista, assicurati che la directory esista, ecc.)

Access Control Lists,

Se si tratta di ACL di Windows, esistono strumenti CM specifici per Windows ...

timestamps,

ancora il touch comando unix in una riga in uno script fantoccio potrebbe farlo per te.

database contents.

Questo è costruito in molti framework, un lavoro cron che garantisce che tutto sia lì altrimenti?

and external links.

Non ne so nulla.

Ovviamente dopo aver scritto il codice di Configuration Management, è possibile inserirlo (o recuperarlo nei sistemi coinvolti) su un sistema di controllo della versione. Non ti allontanerai da quelli: -).

    
risposta data 19.11.2011 - 16:06
fonte
0

Esiste un sistema di controllo delle versioni definitivo che gestisce tutti gli aspetti di tutti i documenti digitali. Si chiama Xanadu ed è stato creato da Theodor Holm Nelson nel 1960, anche prima delle cose come i file system erano comuni. Quindi in teoria tutto è perfettamente risolto. In pratica, Xanadu non è mai stato implementato come previsto da Nelson, ma ha ispirato molti sistemi più specializzati, inclusi i sistemi di controllo di versione e Web. Le opere di Nelson valgono ancora una lettura recente e potrebbero rispondere alla domanda per cui non esiste un VCS generale che gestisca tutti gli aspetti.

    
risposta data 19.11.2011 - 15:30
fonte

Leggi altre domande sui tag