2013-12-11 17 views
8

Im Allgemeinen ist unser Code ziemlich modular, so dass Entwickler keine Änderungen an den gleichen Dateien zur gleichen Zeit vornehmen. Aber ich bin auf eine Situation gestoßen und ich sehe zwei Möglichkeiten, es zu lösen, also suche ich nach Meinungen darüber, welcher der beste Weg ist und warum (oder zusätzliche Lösungen). Mein Kollege hat Änderungen an einigen Dateien in seinem Feature-Zweig vorgenommen, die ich gerne in meinem Feature-Zweig verwenden würde. Dies sind separate Features, keine gemeinsamen Feature-Zweige. Ich sehe zwei Lösungen:Git - Änderungen von einem Feature-Zweig in einen anderen zwischen den Entwicklern

1) Er kann seine Feature-Zweig in Entwicklung und Push zum Ursprung zusammenführen. Ich kann dann den Zweig "Entwickeln" ziehen und meinen Feature-Zweig lokal auf diesen umstellen.

2) Ich kann seinen Feature-Zweig direkt in meinen zusammenführen.

Ich mag letzteres nicht wirklich, weil es einfach aus ist; Zusammenführen eines Feature-Zweigs in einen Feature-Zweig direkt, wenn die beiden Features nicht in Beziehung stehen, nur ein paar der Abhängigkeiten. Also, ich ging mit dem ersten, aber für zukünftige Referenz bin ich neugierig, wie andere mit dieser Situation umgehen würden.

Antwort

6

Was Sie in git tun, ist nur ein Spiegelbild des Entwicklungsprozesses.

1) Sie nicht need to rebase Ihre Arbeit auf dem entwickeln Zweig einfach nur den Zweig zu entwickeln in Ihre Arbeit Zweig. Wenn du dich neu legst, kannst du deine Arbeit nicht teilen.

2) Sie müssen seine Arbeit integrieren, aber er ist nicht bereit, zu entwickeln, dann gibt es kein technisches Problem, wenn Sie seine Arbeit zusammenführen. Aber Vorsicht, Sie können Beta-Arbeiten einbauen!

Dies ist kein git Problem, das Sie auf der Arbeit nur abhängig sind, die noch nicht beendet ist, geschieht die ganze Zeit, die Sie nur regelmäßig in den anderen Entwicklern der Arbeit halten müssen verschmelzen, bis er fertig ist.

5

Ich verstehe Ihr Instinkt die erste Lösung zu bevorzugen, und ich denke, es ist der richtige Weg, denn:

  • Der andere Entwickler seine eigenen Änderungen auf develop fusionieren. Dies ist sehr natürlich: Er führt seine eigenen Änderungen, und falls erforderlich, löst seine eigenen Konflikte.
  • Wenn Sie oben auf develop rebase, Sie Ihre eigenen Änderungen, effektiv zusammenführen und, wenn nötig, lösen Ihre eigenen Konflikte. Auch dies ist sehr natürlich und intuitiv.

In der anderen Alternative werden Sie seinen Zweig zu Ihrem zusammenführen, und vielleicht müssen Sie seine Konflikte lösen. Und das ist eigentlich nur die Spitze des Eisbergs, denn selbst wenn die Zusammenführung ohne Konflikte verläuft, was ist, wenn der Bau bricht? Oder was, wenn der Build noch in Ordnung ist, aber jetzt hat das Programm ein seltsames Verhalten? Der andere würde am besten wissen, wie er mit diesen Problemen umgeht.

Wenn die ursprünglichen Entwickler ihre eigenen Änderungen zusammenführen, sind sie dafür verantwortlich, alles in Ordnung zu halten: Konflikte lösen, den Build passieren lassen, die Tests bestehen lassen, die Änderungen validieren, was zu einem Paket führt, das von anderen vollständig verwendet werden kann funktional. Auf diese Weise kann der nächste Entwickler, der auf dem gut validierten Zweig arbeitet, sicher annehmen, dass, wenn etwas nach seiner Änderung nicht funktioniert, die Ursache seine eigenen Änderungen sein müssen.

Ich benutze das täglich. Ich bin sehr wohl dabei, meine eigenen Änderungen oder Änderungen meines Teams zusammenzuführen, weil ich weiß, worum es geht. Ich hasse es, die Änderungen anderer Teams zusammenzufassen (wenn es nötig ist), weil ich nicht weiß, worum es geht und wie ich das Ergebnis testen kann.