Wie halten Subversion und einem remote-server (über FTP) synchronisieren?
Wir haben eine harte Zeit zu halten Subversion und FTP-sync. Manchmal vergessen wir, um die änderungen zu übernehmen und Sie nur schieben Sie Sie an den web-server haben wir .svn Ordner verstreut unsere web-server, einige Dinge, es gibt einen Ort und nicht im anderen, etc.
Ich die Zeit nehmen wollen, um dieses Problem zu beheben heute. Was ist die Lösung? Gibt es eine Möglichkeit, dass SVN verknüpft werden können, um unsere web-server, so dass wir können uns verpflichten, sowohl das repository und den web-server über FTP? Sollten, bitten wir Sie unsere web-host für einige andere system, dass besser für den sync mit dem SVN-repository? Wie erzwingen wir, dass das repository und den web-server werden synchronisiert? Wie entfernen wir das .svn Ordner?
Nur wie der Titel sagt, wie können wir unsere SVN-repository und unsere web-server in sync?
InformationsquelleAutor Ricket | 2009-12-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was ich auf meinem server ist Sie ein checkout des Codes auf die server.
Anstatt also mit ftp-push der Dinge auf dem server, ich habe gerade melden Sie sich auf es und führen Sie eine
svn up
. Indem Sie diese manuell auf diese Weise gewinnen Sie mehrere Vorteile, einschließlich der Möglichkeit zum roll-back im Falle von fehlerhaftem code.Ich würde auch empfehlen die Verwendung eines db-Migrations-system (vorausgesetzt, Sie verwenden eine Datenbank). Das wird können Sie einfach roll-back db-schema-änderungen, um sicherzustellen, dass Ihr code funktioniert weiterhin, im Falle eines rollback.
Kombiniert man diese mit einem tool ähnlich Stoff oder Capistrano, würde man Ihnen eine sehr robuste und leistungsstarke deployment-system.
Hinweis über DVCS:
Einige Leute hier erwähnt haben mit einem verteilte vcs. Einige der beliebtesten Beispiele für diese sind git und mercurial (es gibt mehrere andere).
Beide haben ein anderes Nutzungsverhalten als svn, aber nicht wirklich für diese Frage direkt. Den größten nutzen haben, könnten Sie es, wenn Sie tags für jede push auf den live-server die Kosten, dies zu tun, ist verschwindend klein im Vergleich zu den traditionellen tagging-Muster für den svn.
Wenn Sie wollte expirement mit diesen GitHub und BitBucket beide bieten Kostenlose repository-hosting für git und mercurial bzw.
Dass gesagt wird, ich bin ich großer Befürworter der Verwendung eines dvcs und meine persönliche Präferenz ist mercurial.
Dies ist die wahre. Ich weiß nicht immer zu bewältigen haben, da die meisten meiner websites sind in python und als Ergebnis die raw-Dateien nie in einer Art und Weise, in der Sie serviert werden konnte.
InformationsquelleAutor Bryan McLemore
Würden Sie nicht wollen, um änderungen an einem live-web-server, ohne jede form von Tests, würden Sie?
Kurze Antwort: indem Sie eine neue Arbeitskopie (vorzugsweise auf einem zentralen server) und kopiert nur die erforderlichen bits, um die app auszuführen.
Ich würde empfehlen die Einrichtung von continous integration, wo Ihr build-server ist verantwortlich für das abrufen der neuesten Quellen aus dem Subversion-repository, führen Sie einen build, und die Vorbereitung der Bereitstellung von Paketen für verschiedene Umgebungen (test/staging) und potenziell FTP ' Ing es bis in die Produktion-box, sobald Sie zufrieden mit der bereitgestellten änderungen in Ihre test-oder staging-Umgebung.
Das ist die einzige solide Möglichkeit, um sicherzustellen, dass änderungen übernommen werden (no-brainer, ich weiß, aber scheint zu sein, unsicher in Ihrem Szenario) oder sonst Sie einfach nicht am Ende in der Bereitstellung. Es erzwingt den Prozess der guten release-management, nicht zu vergessen, die Sie hinzufügen können alle Arten von anderen wunderbaren automation Dinge, die auf Ihrem build-server wie unit-Tests und funktionalen Tests.
Sicher, aber Sie können trivial replizieren solche build-server Verhalten durch mindestens ein zentrales Feld führt, dass die reguläre Check-out und kopieren der entsprechenden Artefakte plus relevanten Konfigurations-Dateien an einen Tropfen Ordner, wo Sie abgeholt werden und kann FTP würde. Es muss nicht teuer werden, overengineered Lösung. Es könnte mehrere batch-Dateien. Aber es wäre 100% in-line mit der "Continuous Integration" - Konzept.
Das ist wahr, und automatisieren Sie so viele sanity-checks wie möglich, egal in welcher form, ist wichtig.
InformationsquelleAutor Wim Hollebrandse
Springloops macht genau das, was Sie benötigen. Give it a go. Es ist SVN kombiniert mit FTP. Sie arbeiten auf dem lokalen Arbeitskopie, dann übernehmen Sie die änderungen für repository -, dann über Springloops die Sie einsetzen, ausgewählte Version auf jedem server (Staging oder Produktion) via FTP.
InformationsquelleAutor Chris
Ich würde vorschlagen, dass vor der Implementierung unten, dass Sie verwenden eine test-Umgebung, wo Sie können FTP direkt, dann schieben live, verpflichten sich, die version der Dateien und lassen Sie diese Aufgabe ausführen.
Vom tigris:
InformationsquelleAutor Aaron
Versuchen http://svn2ftp.com - keiner der Projekt-management-bulk, können Sie einfach nur setup SVN-repositories, die automatisch synchronisiert, um eine beliebige Anzahl von S/FTP-accounts auf jedem commit.
InformationsquelleAutor Big-G
Setup ein post-commit-hook, dass updates der FTP und ausschließlich mit SVN für Veränderungen. Auf diese Weise, wenn änderungen verpflichtet sind, Ihre web-server wird aktualisiert.
Dabei nimmt der web-server staging-server. Siehe die Kommentare für weitere details.
Oder vielleicht die Kombination mit @Bryan McLemore Antwort, richten Sie ein post-commit-hook, der löst ein svn update auf dem server.. Hmm...
Nein, es würde nicht eine schlechte Sache sein. Sollten Sie die Aktualisierung einer staging-server. Verwenden Sie tags für stable releases und schieben diese auf den Produktions-server manuell ein.
Ja-tagging über Freisetzungen ist eine gute Idee. Ich würde eher nicht davon ausgehen er bezog sich auf einen staging-server.
Ja, ich merkte nach ein paar downvotes, dass meine Annahme war schlecht :\
InformationsquelleAutor Ben S
Die beste Möglichkeit, die ich gefunden, dies zu tun ist, um sicherzustellen, dass nichts uncommitted entweichen kann, um die server - dies ist eine Lücke, die Sie haben zu beheben zuerst.
Dann richten Sie eine lokale Kasse, die Teile des Repositorys, die Sie synchronisieren möchten, und verwenden Sie rsync, um die push Daten an den server (FTP ist nicht wirklich hilfreich in diesem Zusammenhang). rsync ermöglicht das ausschließen von Dateien und Verzeichnisse so zu verwenden, dass die Anlage, um sicherzustellen, dass die .svn-Verzeichnisse nicht synchronisiert.
InformationsquelleAutor Timo Geusch
War ich einfach nur zu empfehlen Springloops, wenn ich nach unten gescrollt und gesehen, wie Chris den Vorschlag. Ich habe mit SpringLoops für die letzten paar Monate und Liebe es.
Können Sie einrichten, FTP details für staging-und prod-Server für jedes repository. Dann können Sie Sie veröffentlichen, zu diesen Servern über FTP, unter Angabe der Revisionsnummer bereitstellen.
Etwas, was ich mag über dieses ist, dass ich sehen kann, welche version der einzelnen server über die Seite bereitstellen, die in Springloops. Und mit alles wird bereitgestellt durch Springloops, wissen Sie, dass diese Angabe korrekt ist.
Habe ich tatsächlich auf der Jagd gewesen für eine Lösung, die ein wenig mehr als nur ein SVN-repository.. irgendwas mit integrierten ticketing, wiki und Zeiterfassung. Ich mag Bitbucket viel, aber es nicht über den FTP-deployment-feature von Springloops, welche Regeln es für mich leider. Jetzt werde ich kleben mit Springloops, bis Sie einen anderen service anbieten können FTP-Bereitstellung.
Warum ist der FTP-deployment für mich so wichtig, ich höre einige Leute Murmeln unter Ihren Atemzügen.. ich werde es Ihnen gerne sagen: ich bereitstellen von verschiedenen Servern. Einige sind gewidmet Felder, einige cloud-gehostete VMs, und einige shared-hosting. Ich möchte nicht haben, dass eine separate deployment-Methoden für jedes ein, so dass der Bereitstellung einer Methode, die allen gemeinsam ist FTP. Springloops sitzt wirklich gut zwischen mein Quellcode und meine Server. Das ist, warum 🙂
InformationsquelleAutor Jeeby
Diese Website zeigt Ihnen, wie Sie Subversion konfigurieren zu tun genau das, was du bist suchen für.
http://www.itforeveryone.co.uk/svn2web.html
InformationsquelleAutor john ktejik
Dieser sieht aus wie ein problem maßgeschneidert für ein verteiltes revisions-Kontroll-system.
Ich sehe nicht, wie verteilt wird, hat nichts damit zu tun. Mehrere Leute zur Verfügung gestellt haben-Antworten, die Arbeit mit svn oder anderen unbeliebt und uncool regelmäßig im alten Stil, nicht die coolsten, angesagtesten git-repository.
Ich habe eine Anmerkung zu meiner Antwort über DVCSs
InformationsquelleAutor T.E.D.