在市集合并两个结帐

标签 merge bazaar checkout

我只是从集市开始,我发现结帐功能对于我的工作方式是最有用的-即我可以从“主副本”执行c/o,进行一些开发,然后在新目录。然后,这将更新“原版副本”。

但是,如果我正在(例如)两个项目中,更改代码的不同部分怎么办?说:

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

所以我在./gui目录中进行与gui相关的工作,而在./engine中进行高级处理。我应该如何提交我的更改?如果我先提交gui,然后提交引擎,我猜引擎中是否会标记任何冲突?

有没有一种方法可以合并GUI和引擎,然后只提交一次到主副本?

为了使事情更复杂一些,如果我这样做,该怎么办:
bzr branch gui ./mouse

现在,也许我一直在研究鼠标,还研究gui。如果我想合并gui和mouse的代码,然后提交给master,那么管理此问题的最佳方法是什么?或者确实如此,如果我还:
bzr branch gui ./keyboard

如果我更改了gui,键盘和鼠标,是否应该按层次进行合并-即mouse + keyboard,然后将其与gui合并,然后将gui提交给master?

我希望很清楚我要实现的目标!在此先感谢您的时间。

最佳答案

如果您有两个结帐,那么每次将更改提交到另一个结帐时,都必须首先撤消对另一个结帐的任何更改,这可能必须在每个步骤中解决冲突。通常这是一个好主意,因为随着时间的推移解决冲突并确保您的代码不会产生太大的差异会更容易。
但是,听起来好像您想让单独的开发人员在“gui”和“engine”上工作,或者您只想保存冲突解决方案,直到两个分支上的开发完成。在这种情况下,您可能应该使用“bzr分支”将它们创建为独立的分支。每个分支都可以使用本地提交,而不必担心彼此之间的冲突。然后,当需要合并时,您可以使用以下三种方法之一进行合并,所有这些方法都会得到相同的最终结果:
1.将一个分支合并到另一个分支,然后将其推升为master:

cd gui
bzr merge ../engine
# manually fix any conflicts
bzr commit
bzr push #back up to main
上面方法的缺点是您的“gui”分支现在具有“engine”更改。如果您将两个分支都推回主线后就将它们扔掉了,那很好。但是,如果您希望保留更长的分支,则可以:
2.合并到主线中:
cd master
bzr merge ../gui
bzr commit
bzr merge ../engine
# manually fix conflicts
bzr commit
这样做的好处是,您仍然可以将“gui”和“engine”作为单独的分支,但是在确保它们可以一起工作之前,您必须提交一个来掌握。因此,您可能真的想:
3.创建一个合并分支:
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

关于在市集合并两个结帐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1182468/

相关文章:

php - 在 WooCommerce 中取消设置有条件的自定义结帐字段

php - WooCommerce Checkout 必填字段与计费城市字段有关

magento - 如何在 Magento 中仅允许特定产品免费送货?

c# Interop.Word 在不保存到磁盘的情况下连接两个 WordDocument

git read-tree 删除了所有历史记录

sql - 左外加入 R 有条件

firebase - 如何在firebase firestore中准确合并多个流

ssh - 无法通过集市 ssh 到启动板

version-control - 从 Emacs 离线使用轻量级 Bzr checkout