我是Bazaar的新手,從Subversion和git的背景來看它。我認爲我已經掌握了一些基本概念,但在我的第一個重大承諾中已經成爲絆腳石。Bazaar:合併之後在主線合併泡沫 - 提交
該項目託管在Launchpad上。我用bzr branch
創建了一個本地分支(「工作」)。我進行了更改,添加了新文件,重新命名了其他文件。在此期間,團隊中的另一個人承諾並推動他們的變化。此時提交歷史看起來是這樣的:
3. Team Member A
2. Me (trivial commit of .bzrignore)
1. Original commit
今天上午,我在本地bzr commit
我的變化。提交編號被報告爲3,我假設(錯誤地)將與服務器同步時調整。當我做了bzr pull
我得到這個消息:
Using saved parent location: bzr+ssh://bazaar.launchpad.net/... bzr: ERROR: These branches have diverged. Use the missing command to see how. Use the merge command to reconcile them.
我做bzr merge
。沒有發現衝突,但有三個文件在我的本地分支中被修改。我檢查了一下,然後發表了一條評論,並將其作爲第4條提交給我。然後我做了一個bzr push
,報告沒有錯誤。
現在提交歷史(bzr log --include-merges
)看起來是這樣的:
4. My merge commit
2.1.1 Team Member A
3. My commit this morning
2. My .bzrignore commit
1. Original commit
有一個高慾望在這裏,保持幹線系列化,避免這些合併氣泡。 (令人煩惱的是,Launchpad不顯示2.1.1提交,使得它看起來像我覆蓋它。)在這種情況下避免這些泡沫的最佳工作流程是什麼?我應該先拉?我擔心必須將其他人的代碼合併到本地未提交的更改中。
此外,雖然rebase常用於git,但它似乎並未在Bazaar世界中得到普遍認可。如果我們可以避免使用bzr-rebase插件,那就太棒了。
除了下面的答案,您還可以通過在您的分支的config中設置append_revisions_only選項來避免此問題。使用該集合時,它將不允許提交在重新排列修訂順序時繼續進行,例如您的示例。 – dOxxx
是的,我看到一個答案後,張貼我的建議:http://stackoverflow.com/questions/5413602/monotonically-increasing-bazaar-trunk-revision-numbers但是,我們更感興趣的巴扎最佳實踐比調整符合我們自己對「正確」的看法。 –
關於append_revisions_only是否應該默認打開,實際上存在一些爭議,因爲關閉行爲幾乎總是讓用戶感到驚訝。所以不要把它看作是黑客或非標準的行爲。更安全的是,您未來不會再爲此感到驚訝。 – dOxxx