9 Stimmen

Mehrere Zweige in Git markieren?

Ich habe ein Git-Repository mit zwei Zweigen; einen für den Code, der für die Herstellung/Tests verwendet wird, und einen für die eigentliche Produktions-Firmware (sie sind fast identisch). Es ist nun an der Zeit, eine Version zu erstellen und an den Hersteller zu senden, daher möchte ich natürlich in beiden Zweigen entsprechende Tags hinterlegen.

Aber es scheint, dass Git nicht zulässt, dass ich in beiden Zweigen denselben Tag-Namen verwende. Wenn ich versuche, die Zweige einzeln zu markieren, sagt es mir, dass das Tag bereits existiert, wenn ich den zweiten Zweig markieren möchte. Ich habe versucht, zwei Commits an git tag zu übergeben, aber auch das hat nicht geklappt. Ich muss nicht unbedingt immer die beiden Zweige im Gleichschritt taggen, aber ich möchte nicht zufällige Zeichen zu den Tags hinzufügen, nur um Namenskollisionen zu vermeiden.

Gibt es eine Möglichkeit, das zu tun, was ich will, oder will ich das Falsche tun?


Ein Zweig ist der Code, den der Hersteller auf dem Gerät anbringt, um zu prüfen, ob es richtig zusammengebaut wurde. Der andere Zweig ist der Code, der mit dem Produkt ausgeliefert wird. Es sind nicht wirklich zwei Zweige pro Version. Dies ist die erste Version für dieses Produkt und somit die erste Version für beide Zweige, daher habe ich versucht, beide Zweige mit "release-1.0" zu kennzeichnen.

18voto

John Millikin Punkte 190278

Sie wollen das Falsche tun. Der Zweck eines Tags ist es, eine bestimmte Revision eindeutig zu identifizieren. An Ihrer Stelle würde ich nur den Produktionszweig markieren und den Testzweig unmarkiert lassen.

Allerdings ist es ziemlich seltsam, dass Sie zwei unabhängige Zweige pro Version haben. Warum ist das so? Die Antwort könnte helfen, eine bessere Lösung zu beschreiben.


Da die Tags nicht wirklich auf dieselbe Revision verweisen sollen, sondern (möglicherweise) auf verschiedene Revisionen, sollten die Tags etwa so aussehen:

  • appname-1.0-manufacturing
  • appname-1.0-production

Auf diese Weise wissen Sie, zu welcher Version jedes Tag gehört und wo der Code gelandet ist.

5voto

andy Punkte 16990

Ein Tag gibt einem einzelnen Commit nur einen Namen, also nein, es gibt wahrscheinlich keine Möglichkeit, das zu tun, was Sie wollen.

Ich bin gespannt, was das gewünschte Ergebnis sein wird. Ich meine, ein Tag soll ein Name sein, den man später auschecken kann. Wenn Sie also git checkout auf eine Markierung, die sich auf zwei Zweige bezieht was passiert?

2voto

jmtd Punkte 1173

Ich komme zu spät, aber eine andere Alternative wäre, die beiden Zweige zusammenzuführen, so dass zu jedem Zeitpunkt ein Commit den Stand des Testcodes und des Produktionscodes enthält, vorausgesetzt, sie können ohne Konflikte nebeneinander existieren (in diesem Fall kommt es darauf an, wie schwer die Zusammenführung wäre, ob es sich lohnt, dies zu versuchen). Dies würde auch dazu beitragen, Situationen zu vermeiden, in denen Sie versehentlich den falschen Zweig markieren, was durchaus vorkommen kann, wenn Sie versuchen, den Testzweig und den Produktionszweig synchron zu halten, wenn Sie sie markieren.

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