2008-08-18 3 views
2

Nehmen wir eine Webentwicklungsumgebung, in der Entwickler ein Projekt auf ihre lokalen Maschinen auschecken, daran arbeiten und Änderungen in der Entwicklung einchecken.
Diese Änderungen werden bei der Entwicklung weiter getestet und in regelmäßigen Abständen live verschoben (z. B. wöchentlich, monatlich usw.).
Ist es möglich, die neueste markierte Version automatisch zu verschieben (und nicht die letzte Eincheckzeit, da diese möglicherweise nicht 100% stabil ist), z. B. 8:00 Uhr am Montagmorgen, entweder über ein Skript oder eine integrierte Funktion der VCS?Ist es möglich, automatisch von jedem VCS aus zu checken?

Antwort

1

Sicher, aber das genaue Produkt hängt möglicherweise von dem VCS ab, das Sie verwenden.

Was Sie vielleicht tun möchten, ist ein paar verschiedene Zweige, und migrieren Sie, wie Sie Fortschritte machen. ZB Entwicklung -> Stabil-Dev -> Beta -> Produktion. Sie können dann einfach automatisch auf die neueste Version von Stable-Dev und Beta für Ihre Tester aktualisieren und immer in der Lage sein, eine neue Produktionsversion aus dem Stand zu implementieren.

1

Alles, was Sie mit cvs tun können, kann mit der Befehlszeile erfolgen, und ich bin mir ziemlich sicher, svn ist das gleiche. Einfach die gewünschte Funktionalität ausarbeiten und in ein Shell-Skript oder eine Befehlsdatei stecken.

2

Ja, es ist möglich. Dies ist normalerweise eine Funktion, die von continuous integration tools bereitgestellt wird. In der Regel erhalten sie die neueste Quelle aus der Versionskontrolle, erstellen das Projekt, testen es (laufende Komponententests) und stellen es möglicherweise auf einem (Test-) Server bereit.

Wenn Sie nicht alle diese Schritte benötigen, können Sie das Gleiche mit Shellskripten oder Ähnlichem machen (z. B. Auschecken aus Versionskontrolle und Kopieren in den Produktionsordner auf dem Server).

1

Die einzigen beiden, mit denen ich Erfahrung habe, sind SVN und Mercurial. Für Mercurial, geben Sie, welcher Zweig Sie es von aktualisierenden (sagen wir mal, Standard) und dann, wenn Sie einen Zweig in Standard verschmelzen, können Sie nur den Server laufen haben:

hg update 

Welche aktualisiert Ihr Repository auf die neueste Version des Zweiges, auf den Sie es festgelegt haben.

SVN das gleiche Konzept ist, können Sie überprüfen nur, welcher Zweig Sie

svn co http://host/repository/branchname/ 

dann haben Sie Ihre Server-Update, dass mit einem cron-Job, ala

svn up 

Theoretisch allerdings zunächst

wollen, Jedes VCS, das Verzweigungen unterstützt (all die guten tun: git, mercurial, SVN, etc ...), sollte in der Lage sein, etwas ähnliches zu tun.

0

Ich bezweifle, dass viele VCS diese Fähigkeit direkt zur Verfügung stellen, aber es sollte sehr einfach zu Skript sein. Entweder ein Datum oder ein zweigbasierter Checkout.

0

Als Follow-up,

Ich bin der Meinung, dass eine App einen Job tun sollte und tun es auch. Oft, wenn Sie anfangen, Werkzeuge in ein Produkt zu kombinieren, wird keins von ihnen scheinen, und die meisten von ihnen werden "in Ordnung, irgendwie" sein.

Wenn ich so etwas tun würde, würde ich mir etwas wie SVN, ANT und Subversion Ant Library (http://ant.apache.org/antlibs/svn/index.html) holen - Ihre Millage kann jedoch variieren.