Vor ein paar Monaten habe ich mich mit Subversion und GIT beschäftigt und war enttäuscht. Sie behandeln SOURCE CODE gut, aber nicht andere Aspekte. Beispielsweise muss eine Website unter Versionskontrolle den Besitz von Dateien / Verzeichnissen, Lese- und Schreibzugriff auf Dateien / Verzeichnisse, Zugriffssteuerungslisten, Zeitstempel und Datenbankinhalte verwalten. und externe Links. Gibt es ein Versionskontrollsystem, das eine Rückgängigmachung genauso perfekt machen kann wie das Neuladen von einem Monat alten Backup?
17
Antworten:
Sie sind verwirrt über die Rolle eines Versionskontrollsystems. Es ist nicht und war nie als Backup-System für eine laufende Website gedacht. Statische Inhalte lassen sich hervorragend verwalten, sodass sie kontrolliert in die Produktion gelangen. Mit der richtigen Verwendung von Tags und automatisierten Prüfungen können auch schnell wechselnde Websites in einem Versionskontrollsystem aufbewahrt werden.
Ein Versionskontrollsystem kann Ihnen mitteilen, wie Sie von der Site im letzten Monat bis heute (zumindest für Komponenten, die der Versionskontrolle unterliegen) gekommen sind. Es sollte alles enthalten, was Sie zum Neuerstellen der Website benötigen (ausgenommen dynamischer Inhalte). Wie bereits erwähnt, sollten alle Änderungen an Berechtigungen und Eigentümern per Skript erfolgen und dieses Skript in die Versionskontrolle einbezogen werden.
Zugriffsberechtigungen für Websites sind normalerweise recht einfach. (Grundsätzlich müssen Sie sicherstellen, dass der Webserver den gesamten Inhalt lesen und nur sehr wenig davon schreiben kann.) Mit Ausnahme des Verzeichnisbesitzes der wenigen Verzeichnisse, die von der Subversion des Webservers und möglicherweise von git beschrieben werden müssen, kann dies mit Sicherheit der Fall sein mit Berechtigungen umgehen. Verzeichnisse, die vom Webserver beschreibbar sind, enthalten normalerweise dynamischen Inhalt (der von der Website erstellt und aktualisiert wird), der getrennt von der Website-Quelle verwaltet wird.
Wenn ich gebeten würde, mit einer Website mit komplizierten Berechtigungen und Zugriffssteuerungslisten auf Ihrer Website zu arbeiten, hätte ich ernsthafte Bedenken hinsichtlich des zur Verwaltung der Website verwendeten Prozesses. Ein Versionskontrollsystem zu implementieren und die ACLs darauf zu verschieben, wäre eine der Lösungen, die ich ernsthaft in Betracht ziehen würde.
Dynamische Inhalte wie Blogeinträge oder Kommentare befinden sich normalerweise in einer Datenbank oder einem anderen Datenspeicher und nicht in der Versionskontrolle, mit der die Site erstellt wurde. Der Datenspeicher kann so eingerichtet sein, dass er eine Versionskontrolle seines Inhalts bietet (wie diese Software). Viele Wikis verwenden ein Versionskontrollsystem, um Revisionen zu verfolgen.
BEARBEITEN:
Diese Probleme können behoben werden, indem Sie die Site in ein Versionskontrollsystem importieren und Ihren Prozess so ändern, dass die Master-Site über dieses System aktualisiert wird. (a), (b) und (c) werden direkt von der Versionskontrolle behandelt. Möglicherweise möchten Sie Releases mit Tags versehen, damit (c) besser funktioniert. (d) Im Allgemeinen ist dies kein Problem, wenn nur das Bereitstellungssystem Ihren Standort ändert. Ich habe noch nie ACLs für den Site-Inhalt benötigt.
(e) sollte nur bei der ersten Erstellung und größeren Änderungen ausgeführt werden müssen. Es kann auch das Skript enthalten, das die Site über die Versionskontrolle aktualisiert und häufig ausgeführt wird. Diese Skripte sind in der Regel recht einfach, wenn Sie Ihre Site in einem Versionskontrollsystem halten.
Weil es nicht benötigt wird, wenn Sie ein Versionskontrollsystem verwenden.
Sowohl CVS als auch Subversion verfolgen, was Sie nachverfolgen müssen, wenn Sie sie verwenden. Sie können nicht nachverfolgen, was Sie nachverfolgen müssen, da Sie kein Versionskontrollsystem verwenden, und sie sollten auch nicht. Sie erfassen, was Sie erfassen müssen, wenn Sie ein Versionskontrollsystem verwenden.
Ich habe mit mehreren Websites gearbeitet, deren Inhalt mithilfe der Versionskontrolle verwaltet wurde. Alle hatten unterschiedliche Anforderungen an die Bereitstellung von Websites, die Bereitstellungshäufigkeit und die Vollständigkeit der Updates. Sobald die Sites in der Versionskontrolle waren, waren die restlichen Anforderungen relativ einfach zu erfüllen. Die Dokumentation für CVS und Subversion enthält Vorschläge für mögliche Aktualisierungsmethoden.
Möglicherweise benötigen Sie ACLs, um den Zugriff auf bestimmte Bereiche innerhalb des versionskontrollierten Inhalts zu beschränken. Ich arbeite jedoch eher vertrauensvoll. Die Versionskontrolle macht es einfach zu sehen, wer was wann getan hat. Wenn Sie Dateien nicht neu formatieren, können Sie auf einfache Weise einen kommentierten Verlauf einer Datei abrufen, aus dem hervorgeht, wer wann welche Zeilen hinzugefügt hat.
quelle
Alle und keiner von ihnen.
Es ist eine schlechte Idee, die Quellcodeverwaltung zu beauftragen, um diese Details direkt zu verwalten, wie es Ihre Frage nahelegt.
Sie können jedoch ein Bash-Skript (* nix) oder ein Powershell-Skript (Windows) schreiben, mit dem einige oder alle dieser Ziele erreicht werden. Dieses Skript könnte in der Quellcodeverwaltung gespeichert werden.
Dann können Sie dieses Skript zu einem Ihrer Build-Artefakte machen und es als Teil Ihrer Bereitstellung ausführen.
quelle
IMHO ein Versionskontrollsystem an sich ist nicht dafür vorgesehen, auf diese Weise verwendet zu werden.
Aber ich neige dazu, sicherzustellen, dass Sie eine Version aus der Quellcodeverwaltung erhalten können. Sie müssen nur eine Build-Datei / Powershell-Datei ausführen und alles läuft wieder.
Dafür müssen Sie:
quelle
Ich glaube, Sie brauchen in Ihrem Fall ein Konfigurationsmanagement- Tool. Die, die ich benutzt habe, ist Marionette .
Ich zitiere Sie:
Ich habe das mit einer Zeile getan (sicherstellen, dass Benutzer vorhanden ist, sicherstellen, dass Verzeichnis vorhanden ist, usw.) ...
Wenn dies Windows-ACLs sind, gibt es spezielle CM-Tools für Windows ...
Auch hier könnte der Touch- Unix-Befehl in einer Zeile eines Puppet-Skripts dies für Sie tun.
Das ist in vielen Frameworks eingebaut, ein Cronjob, der sicherstellt, dass alles anders ist?
Weiß nichts darüber.
Natürlich möchten Sie Ihren Configuration Management-Code nach dem Schreiben möglicherweise auf einem Versionskontrollsystem ablegen (oder in den beteiligten Systemen abrufen). Davon kommst du nicht weg :-).
quelle
Es gibt ein ultimatives Versionskontrollsystem, das alle Aspekte aller digitalen Dokumente verwaltet. Es heißt Xanadu und wurde 1960 von Theodor Holm Nelson erstellt , noch bevor Dinge wie Dateisysteme üblich waren. Theoretisch ist also alles perfekt gelöst. In der Praxis wurde Xanadu nie wie von Nelson vorgesehen implementiert, aber es inspirierte viele spezialisiertere Systeme, einschließlich der Web- und Versionskontrollsysteme. Nelsons Werke sind immer noch eine neue Lektüre wert - und sie könnten die Frage beantworten, warum es kein allgemeines VCS gibt, das alle Aspekte verwaltet.
quelle