Ich habe beide Methoden mit einer großen kommerziellen Anwendung ausprobiert.
Die Antwort auf die Frage, welche Methode besser ist, hängt in hohem Maße von Ihrer genauen Situation ab, aber ich werde schreiben, was meine allgemeine Erfahrung bisher gezeigt hat.
Die insgesamt bessere Methode (meiner Erfahrung nach): Der Kofferraum sollte immer stabil sein.
Hier sind einige Leitlinien und Vorteile dieser Methode:
- Kodieren Sie jede Aufgabe (oder verwandte Aufgaben) in einem eigenen Zweig, dann haben Sie die Flexibilität, wann Sie diese Aufgaben zusammenführen und eine Freigabe durchführen möchten.
- Die Qualitätssicherung sollte für jeden Zweig durchgeführt werden, bevor er mit dem Stamm zusammengeführt wird.
- Indem Sie die Qualitätssicherung für jeden einzelnen Zweig durchführen, können Sie leichter feststellen, was den Fehler verursacht hat.
- Diese Lösung ist für eine beliebige Anzahl von Entwicklern geeignet.
- Diese Methode funktioniert, da das Verzweigen in SVN eine fast sofortige Operation ist.
- Kennzeichnen Sie jede Freigabe, die Sie durchführen.
- Sie können Funktionen entwickeln, die Sie eine Zeit lang nicht veröffentlichen wollen, und genau entscheiden, wann Sie sie zusammenführen.
- Für alle Arbeiten, die Sie durchführen, können Sie den Vorteil haben, dass Sie Ihren Code festschreiben. Wenn Sie nur aus dem Stamm heraus arbeiten, werden Sie Ihren Code wahrscheinlich oft nicht committen und damit ungeschützt und ohne automatische Historie lassen.
Wenn Sie versuchen, das Gegenteil zu tun und Ihre gesamte Entwicklung im Stamm zu machen, werden Sie die folgenden Probleme haben:
- Ständige Build-Probleme bei täglichen Builds
- Produktivitätsverluste, wenn ein Entwickler ein Problem für alle anderen Projektmitarbeiter festschreibt
- Längere Release-Zyklen, weil man endlich eine stabile Version haben muss
- Weniger stabile Veröffentlichungen
Sie haben einfach nicht die Flexibilität, die Sie brauchen, wenn Sie versuchen, einen Zweig stabil zu halten und den Stamm als Sandkasten für die Entwicklung zu verwenden. Der Grund dafür ist, dass Sie nicht aus dem Stamm auswählen können, was Sie in die stabile Version aufnehmen wollen. Es wäre bereits alles im Stamm vermischt.
Der einzige Fall, in dem ich empfehlen würde, die gesamte Entwicklung im Stamm durchzuführen, ist, wenn Sie ein neues Projekt beginnen. Es kann auch andere Fälle geben, je nach Ihrer Situation.
Übrigens bieten verteilte Versionskontrollsysteme viel mehr Flexibilität und ich empfehle dringend, entweder zu hg oder git zu wechseln.