Frage

Ich habe die folgende Situation von Zweigen in einem Perforce -Repository: Es gibt eine Hauptstrecke und zwei Release -Zweige "1.0" und "1.1". Eine Filiale „Kunde“ mit kundenspezifischen Änderungen wurde von der 1.0 -Filiale verzweigt. Jetzt möchte der Kunde zu Version 1.1 wechseln. Wie kann ich die 1.1 -Filiale in die Kundenabteilung verschmelzen? Die kundenspezifischen Änderungen sollten „oben“ von 1.1 bleiben.

Hier ist ein Diagramm für eine betroffene Datei:

1.1                      -(1)---(2)---(3)
                        /           \     \
                       /             \     \
trunk   100--(101)-(102)--103---104---105---106---107
           \
            \
1.0          ---1-----2--...
                 \
                  \
customer           ---1-----2----*3*

Die aktuelle Version der Datei, die ich mir anschaue, ist Revision 3 in der Kundenabteilung.

Wenn ich die Filiale „1.1“ in den Ziel „Kunden“ integrieren möchte, hätte ich erwartet, dass der gemeinsame Vorfahr von beiden gefunden wird (Revision 100 auf der Hauptstufe) und alle Überarbeitungen von dort aus der Spitze der 1.1 -Zweigstelle verschmolzen werden (diejenigen in Klammern).

Stattdessen bietet Perforce nur die Fusion von Revisionen 1 bis 3 der 1.1 -Zweig, was fehlschlägt, weil sie die erforderlichen Änderungen, die auf der Hauptzeile zuvor stattgefunden haben, verfehlt.

Wie kann ich Perforce davon überzeugen, dies zu tun, ohne jede Datei manuell anzusehen und die Überarbeitungen zur Zusammenführung auszuwählen? Vielleicht ist die Verzweigungsstrategie ungeeignet? Was soll ich sonst machen?

War es hilfreich?

Lösung

Um die Integrationen einfach zu machen, würde ich einen bestimmten Zweig TUNK_TO_CUSTER und 1.1_TO_CUSTOMER erstellen und dann ausgeben:

cd customer-workspace
p4 integ -b trunk_to_customer @change-number-at-which-1.1-was-branched
p4 resolve

Vielleicht ein Zwischeneinsatz hier und dann

p4 integ -b 1.1_to_customer 
p4 resolve
p4 submit

Andere Tipps

Wenn Sie versuchen, Revision 3 aus Ihrem 1.1 -Zweig zu integrieren, wird Perforce Ihnen nur mitgeteilt, dass Änderungen in diesem bestimmten Zweig integriert werden - aber Revision 1 enthält bereits Rumpfrevisionen 101 und 102. Bei der Zusammenführung identifiziert Perforce Rumpfrevision 100 als gemeinsam Vorfahr für Konfliktlösung.

Es war meine Erfahrung, dass die Integration, die Sie versuchen, einfach funktionieren sollte. Sehen Sie Änderungen, die in Ihrer integrierten Quelle fehlen (die nicht durch unsachgemäße Konfliktlösung erklärt werden können), oder schauen Sie sich nur die Ausgabe von an. p4 interchanges?

Ich würde nachdrücklich vorschlagen, die Änderungen des Kunden in den Kofferraum zusammenzufassen. Es wird weiterhin ein Wartungsalptraum sein, wenn der Kunde einige Monate auf 2,0 + ihre benutzerdefinierten Änderungen aufrüsten möchte.

Wenn Sie nicht möchten, dass sich die Kundenänderungen in Ihrem Hauptprojekt widerspiegeln, nehmen Sie sich die Zeit, um den Code umzustrukturieren, damit Sie das gewünschte Verhalten des Kunden mit einem Build -Flag oder einer Build -Konfigurationsdatei freilegen können. Lassen Sie beide Konfigurationen in CI erstellen, um sicherzustellen, dass zukünftige Änderungen nicht den Build des Kunden brechen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top