Frage

Dies ist etwas auf meine Sicherheitsfrage im Zusammenhang . Ist es eine schlechte Idee, eine hg / Mercurial-Repository für eine Live-Webseite zu benutzen? Wenn ja, warum?

Darüber hinaus haben wir Entwickler, Test- und Produktions Installationen unserer Website haben, wie dev.example.com, test.example.com und www.example.com. Wenn es eine schlechte Idee ist, ein Repository für eine Live / Produktion Website benutzen zu können, wäre es in Ordnung sein, eine hg-Repository für die Entwickler und Test-Sites zu verwenden?

bin ich auch über einfache Bereitstellung betroffen. Wir haben technische und weniger technische Mitarbeiter, die mit der Website arbeiten werden. Die technischen Mitarbeiter (Software-Ingenieure) werden keine Probleme haben, Arbeit mit der Kommandozeile oder TortoiseHG. Ich bin mehr besorgt über die technisch weniger versierten Personen (Web-Designer). Sie werden nicht komfortables Arbeiten auf der Kommandozeile sein und können sogar TortoiseHG entmutigend finden. Diese Mitarbeiter meist .css Dateien und Bilder auf den Server hochladen. Ich würde für diese Dateien wie (zumindest die .css-Dateien) unter Versionskontrolle sein, aber ich mag dies wie möglich für die nicht technischen Teammitglieder als transparent sein.

Was ist der beste Weg, dies zu erreichen?

Edit: Unser ‚Standort‘ ist eigentlich ein Multi-Site CMS Setup mit einem Haupt-Repository und mehr subrepositories. Mock-up der Repository-Struktur:

/root [main repository containing core files and subrepositories]
    /modules [modules subrepository]
    /sites/global [subrepository for global .css and .php files]
    /sites/site1 [site1 subrepository]
    ...
    /sites/siteN [siteN subrepository]

Software-Ingenieure in den root, modules und sites/global Repositories funktionieren würde. Weniger technischen Menschen nur in dem site1 ... siteN subrepositories würden (Web-Designer) arbeiten.

War es hilfreich?

Lösung

Ja, es ist eine schlechte Idee.

Do Ihr Repository nicht als Ihre Website. Es bedeutet, dass die Dinge eingecheckt, aber unworking wird sofort verfügbar sein. Und es bedeutet, dass ein versehentliches checkins (es passiert) wird live als auch reflektiert werden (das heißt Dokumente, die nicht gehören dort zu tun, etc).

E-Adresse tatsächlich um dieses „Konzept“ jedoch (Quellcodeverwaltung als Deployment) mit einem Werkzeug, das ich geschrieben habe (einige anderen Unternehmen adressieren dieses Thema jetzt, wie gut, so dass Sie es sehen werden). Mine ist für SVN (zur Zeit), so ist es nicht besonders relevant; Ich erwähne es nur zu zeigen, dass ich das vorher betrachtet habe (nicht auf einem Repository obwohl, eine Arbeitskopie in diesem Szenario die Antwort ist das gleiche: besser ein nicht versioniert „frei“, wie das Website-Verzeichnis zu haben, und Automate (via Benutzeraktion) das Kopieren der ‚versioniert‘ Daten in das Verzeichnis).

Andere Tipps

Viele Leute halten ihre Websites in Repositories, und so lange, wie Sie haben keine Menschen leben-Bearbeitung der Live-Website Sie sind in Ordnung. Haben Sie einen Staging / dev Bereich, in dem Sie Ihre Nicht-Revisionskontrolle Leute ihre Änderungen vornehmen und dann jemand mehr RCS freundlich tun, um den Commit-Pull-Merge-Push-Zyklus in regelmäßigen Abständen.

So lange, wie es die bewusste Handlung eines Schätzungs Mensch ist das Staging-Bereich zu tun -> Produktions-repo schieben Sie geht ihnen gut. Sie können sogar einen Haken in die Produktionsklon setzen, dass automatisch funktioniert ein ‚hg update‘ des Arbeitsverzeichnisses innerhalb dieser Produktionsklon, so dass ‚Push‘ alle es zu entfalten braucht ist.

sagte, dass, ich glaube, du bist unterschätzen entweder Ihr Webteam oder TortoiseHg; sie können diese.

ich persönlich (ich bin ein Team von 1) und ich mag die Idee von src Kontrolle als Live-Website. um so mehr mit hg, dann mit SVN.

So wie ich es sehen, können Sie eine ganze Website, (Hinzufügen / Entfernen-Dateien) mit einem einzigen Befehl cmd laden viel einfacher, dann ftp / ssh dies, löschen Sie diese etc

Wenn Sie Apache verwenden (und iis wahrscheinlich auch) Sie können eine einfache .htaccess-Datei machen, die alle .hg Dateien blockiert (oder .svn, wenn Sie svn verwenden)

meine bevorzugte Struktur ist Entwicklungsstandort ist auf dem lokalen Rechner direkt aus einem Repository läuft (keine Sicherheit hier wirklich erforderlich ist, tun, was Sie verpflichten mögen, wie erforderlich)

Staging / Test-Maschine ist eine separate Box oder vm eine aktuelle Kopie der Live-Datenbank ausgeführt wird (Ich habe ein Skript festgeschriebene Änderungen Push-to-Server-Staging und führten Tests)

Live-Maschine (Offene SSH-Verbindung, Push Änderungen an Live-Server, Test erneut, kann alle einigermaßen leicht scripted werden, Google für Beispiele)

wegen push / pull Art von hg, es bedeutet, dass Sie Änderungen und testen, ohne die Gefahr des Drückens ein gebrochenes bauen auf die Live-Website begehen können. wie Sie in Ihren Kommentaren sagen, sollten nur bestimmte Leute haben die Erlaubnis, eine Version der Live-Site zu drücken. (Wenn es fehlschlägt, sollten Sie leicht in der Lage sein, um zur vorherigen Version zurückkehren, über src Steuerung)

Warum haben kein Repo auch ein aktiver Webserver sein (für Entwickler oder Test / QA-Umgebung sowieso)?

Hier ist, was ich zu implementieren versuchen:

  • Die Entwickler haben lokale Testumgebungen, in denen sie ihren Code bauen und testen
  • Entwickler machen einen Klon der Dev-Umgebung auf ihrem lokale Dev-Maschine
  • Entwickler begehen, so oft sie auf ihre lokalen Repo wollen
  • Wenn Batzen Arbeit getan ist und getestet, dann drückt Entwickler arbeiten Änderung Sätze dev Repo

Änderungen würden auf Dev verschmolzen und getestet werden, dann Test / QA geschoben, und so weiter.

BTW, verwenden wir Mercurial. Ich glaube, dass dieses Modell nur funktionieren würde, eine verteilte Quellcode-Management-Tool.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top