Frage

Ich fange gerade mit Basar, und ich habe festgestellt, dass die Kasse Feature die nützlichste für die Art, wie ich Arbeit ist - nämlich ich kann c / o von einer „Masterkopie“, einige der Entwicklung und dann begehen meine Änderungen in dem neuen Verzeichnis. Dies aktualisiert dann die „Masterkopie“.

Aber was, wenn ich arbeite (zB) zwei Projekte, verschiedene Teile des Codes zu ändern? Sprich:

~/master                - master copy
bzr co master ./gui
bzr co master ./engine

Also ich gui-verwandten Themen im ./gui Verzeichnis und unter der Motorhaube Sachen in ./engine mache. Wie soll ich meine Änderungen zu übernehmen? Wenn ich gui zuerst, dann Motor begehen, ich denke, alle Konflikte in Motor markiert werden?

Gibt es eine Möglichkeit zu fusionieren gui und Motor, und dann kann nur eine auf die Masterkopie begehen?

Um die Dinge ein wenig komplizierter, wie wäre es, wenn ich dies tun:

bzr branch gui ./mouse

Jetzt habe ich vielleicht habe ich auf der Maus gearbeitet, sondern auch auf gui. Wenn ich den Code aus GUI und Maus zusammenführen möge, und dann zu Meister begehen, was ist der beste Weg, dies zu verwalten? Oder in der Tat, wenn ich auch:

bzr branch gui ./keyboard

Wenn ich veränderte gui, Tastatur und Maus geändert haben, sollte ich hierarchisch fusionieren - dh Maus + Tastatur, dann verschmelzen diese mit gui, dann gui Master begehen

Ich hoffe, es ist klar, was ich versuche zu erreichen! Vielen Dank im Voraus für Ihre Zeit.

War es hilfreich?

Lösung

Wenn Sie zwei Kassen haben, jederzeit Änderungen an einen begehen, müssen Sie zunächst alle Änderungen von dem anderen nach unten ziehen müssen, möglicherweise mit zu der Lösung von Konflikten bei jedem Schritt. Dies ist im Allgemeinen eine gute Idee, da es einfacher zu lösen Konflikte im Laufe der Zeit und stellen Sie sicher, Ihren Code weicht nicht zu viel.

Doch es klingt wie Sie getrennte Entwickler arbeiten an „gui“ haben wollen und „Motor“, oder Sie wollen einfach nur Ihre Konfliktlösung bis Entwicklung sparen auf beiden Zweigen abgeschlossen hat. In diesem Fall sollten Sie sich vielleicht als unabhängiger Zweig mit „bzr branch“ erstellen. Jeder Zweig kann lokale Commits verwenden und sich keine Sorgen über Konflikte miteinander. Dann, wenn es Zeit zu fusionieren kommt, kann man es einer von 3 Möglichkeiten tun, die alle das gleiche Endergebnis zu bekommen:

1. Merge ein Zweig in den anderen, dann schieben Sie es bis zu Master:

cd gui
bzr merge ../engine
# manually fix any conflicts
bzr commit
bzr push #back up to main

Der Nachteil der obigen Methode ist, dass Ihr „gui“ Zweig nun die „Motor“ Änderungen in ihm hat. Das ist in Ordnung, wenn man beiden Zweige wegzuwerfen geht einmal sie zurück in die Hauptlinie geschoben. Aber wenn Sie wollen nicht länger die Zweige halten, können Sie:

2. Merge in die Hauptstrecke:

cd master
bzr merge ../gui
bzr commit
bzr merge ../engine
# manually fix conflicts
bzr commit

Dies hat den Kopf, dass Sie noch „gui“ haben und „Motor“ als separate Zweige, aber Sie haben musste man Meister begehen, bevor Sie sicher waren, sie würden beide arbeiten zusammen. So dass Sie wirklich wahrscheinlich wollen:

3. Erstellen Sie einen merge Zweig:

bzr branch ~/master gui-engine-merge
cd gui-engine-merge
bzr merge ../gui
bzr commit
bzr merge ../engine
# manually fix conflicts
bzr commit
bzr push ~/master
# since this branch was only for merging, you don't need it anymore:
cd ..
rm -r gui-engine-merge

Andere Tipps

Ja, bzr sollten Sie in Änderungen vom Motor Repo verhindern, zu überprüfen, ob es Konflikte erkennt. Normalerweise Sie zuerst tun „bzr up“ kurz vor der Check-in und dann stellen Sie sicher, dass Ihre Sachen schön mit anderen spielen.

Was den zweiten Teil Ihrer Frage, die sich mit Maus / Tastatur Zweige, das ist, wie ich es normalerweise tun würde. Einfach CD in den gui dir, und dann tun:

bzr merge ../mouse

Nachdem Sie die Änderungen Verschmelzung, können Sie dann aus dem GUI-Verzeichnis begehen und es wird die changeset zum „Master“ Verzeichnis senden.

Beachten Sie, dass ich kaum ein BZR-Experte, aber das ist die Art und Weise Ich habe mit SVN repos zu tun.

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