171 Stimmen

Setzen Sie die Entwicklung in einem Zweig oder im Stamm fort?

Angenommen, Sie entwickeln ein Softwareprodukt, das in regelmäßigen Abständen veröffentlicht wird. Was sind die besten Praktiken in Bezug auf Verzweigungen und Zusammenführungen? Regelmäßige Veröffentlichungszweige für die Öffentlichkeit (oder wen auch immer Ihr Kunde ist) abtrennen und dann die Entwicklung auf dem Stamm fortsetzen, oder den Stamm als stabile Version betrachten, ihn regelmäßig als Veröffentlichung kennzeichnen und Ihre experimentelle Arbeit in Zweigen durchführen. Was denken die Leute, gilt der Stamm als "Gold" oder als "Sandkasten"?

1voto

Jim Punkte 3030

Der Stamm sollte im Allgemeinen Ihre Hauptentwicklungsquelle sein. Andernfalls werden Sie eine Menge Zeit damit verbringen, neue Funktionen einzubinden. Ich habe gesehen, dass es andersherum gemacht wird und das führt normalerweise zu einer Menge Kopfschmerzen bei der Integration in letzter Minute.

Wir kennzeichnen unsere Releases, damit wir schnell auf Produktionsnotfälle reagieren können, ohne die aktive Entwicklung zu beeinträchtigen.

1voto

bo bo Punkte 804

Es hängt wirklich davon ab, wie gut Ihr Unternehmen/Team Versionen verwaltet und welches SCM Sie verwenden.

  • Wenn das, was als nächstes (in der nächsten Version) kommt, leicht geplant werden kann, ist man mit der Entwicklung im Stamm besser dran. Die Verwaltung von Zweigen erfordert mehr Zeit und Ressourcen. Wenn aber die nächste Version nicht einfach geplant werden kann (was in größeren Organisationen immer wieder vorkommt), würde man sich wahrscheinlich eher für die Auswahl von Commits (Hunderte/Tausende) entscheiden, als für die Auswahl von Zweigen (einige wenige oder zehn).
  • Mit Git oder Mercurial ist die Verwaltung von Zweigen viel einfacher als mit cvs und subversion. Ich würde mich für die Stable Trunk/Topic Branches-Methode entscheiden. Das ist es, was das git.git-Team verwendet. lesen: http://www.kernel.org/pub/software/scm/git/docs/gitworkflows.html
  • Bei Subversion habe ich zunächst die "develop-in-the-trunk"-Methode angewandt. Es war ein ziemlicher Aufwand, wenn es um das Veröffentlichungsdatum ging, weil ich jedes Mal eine Auswahl von Commits treffen musste (meine Firma ist nicht gut im Planen). Jetzt bin ich so etwas wie ein Experte in Subversion und kenne mich mit der Verwaltung von Zweigen in Subversion recht gut aus, so dass ich auf die Methode des stabilen Stammes/der thematischen Zweige umgestiegen bin. Das funktioniert viel besser als vorher. Jetzt probiere ich aus, wie das git.git-Team arbeitet, obwohl wir wahrscheinlich bei Subversion bleiben werden.

1voto

17 of 26 Punkte 26635

Der Stamm ist im Allgemeinen die Haupterschließungslinie.

Releases werden verzweigt und oft werden experimentelle oder wichtige Arbeiten in Zweigen durchgeführt, die dann in den Stamm zurückgeführt werden, wenn sie bereit sind, in die Hauptentwicklungslinie integriert zu werden.

1voto

cpm Punkte 1523

Bei mir hängt das von der Software ab, die ich verwende.

Unter CVS habe ich nur in "trunk" gearbeitet und nie in "tag/branch", weil es sonst wirklich mühsam war.

In SVN, würde ich meine "bleeding edge" Zeug in Stamm zu tun, aber wenn es Zeit war, einen Server-Push zu tun get tagged entsprechend.

Ich habe vor kurzem zu Git gewechselt. Jetzt finde ich, dass ich nie in trunk arbeiten. Stattdessen verwende ich einen Sandbox-Zweig mit dem Namen "new-featuresame" und führe ihn dann mit einem festen "current-production"-Zweig zusammen. Jetzt, wo ich darüber nachdenke, sollte ich wirklich "release-VERSIONNUMBER"-Zweige machen, bevor ich wieder in "current-production" zusammenführe, damit ich zu älteren stabilen Versionen zurückkehren kann...

0voto

one eyed dev Punkte 449

IMHO gibt es keine allgemeingültige Antwort auf die Frage der Subversionskonvention.

Es hängt wirklich von der Dynamik des Projekts und des Unternehmens ab, das es verwendet. In einer sehr schnelllebigen Umgebung, in der eine neue Version alle paar Tage erscheinen kann, werden Sie mit einem unübersichtlichen Repository enden, wenn Sie versuchen, religiös zu taggen und zu verzweigen. In einer solchen Umgebung würde der branch-when-needed Ansatz eine viel besser wartbare Umgebung schaffen.

Außerdem ist es meiner Erfahrung nach vom rein administrativen Standpunkt aus gesehen extrem einfach, zwischen den svn-Methoden zu wechseln, wenn man das möchte.

Die beiden Ansätze, von denen ich weiß, dass sie am besten funktionieren, sind die Verzweigung bei Bedarf und die Verzweigung bei jeder Aufgabe. Diese sind natürlich sozusagen das genaue Gegenteil von einander. Wie ich schon sagte - es kommt auf die Projektdynamik an.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X