题
我刚刚开始接触集市,和我发现,结账功能对于我的工作方式是最有用的 - 也就是我罐体C / O从“底本”,做一些发展,然后提交我在新目录中的变化。这则更新“主副本”。
但我的工作是什么,如果在(例如)两个项目,更改代码的不同部分?说:
~/master - master copy
bzr co master ./gui
bzr co master ./engine
所以我在做GUI相关的东西在./gui目录以及引擎罩的东西,在./engine。我应该如何将我的变化?如果我第一次提交GUI,那么发动机,我想任何冲突将在发动机被标记?
有没有一种方法来合并图形用户界面和引擎,然后做一提交到主副本?
为了让事情更复杂一点,怎么样,如果我这样做:
bzr branch gui ./mouse
现在我也许我一直在工作的鼠标,而且还贵。如果我要合并图形用户界面和鼠标的代码,然后提交到主,什么是管理最好的方法?或者事实上,如果我也:
bzr branch gui ./keyboard
如果我变了改变图形用户界面,键盘和鼠标,我应该分层合并 - 即鼠标+键盘,然后用GUI合并本,然后提交GUI掌握
我希望这是清楚我想要实现的!在此先感谢您的时间。
解决方案
如果你有两个检出,则提交修改到一个的任何时间,则首先必须拉下从其他的一个的任何变化,因而可能具有以解决在每一步冲突。这通常是一个好主意,因为它更容易解决随着时间冲突,确保您的代码不会偏离太多。
然而,这听起来像你想拥有独立开发的“桂”和“引擎”的工作,或者你只是想节省两个分支您解决冲突,直到开发完成。在这种情况下,你应该创建它们用“的bzr分支”作为独立的分支。每个分支可以利用本地提交,而不用担心相互冲突。然后,当谈到时间合并,你可以做到这一点的3种方式,所有这些都得到了同样的结果之一:
1。合并一个分支到另一个,然后将其推到主
cd gui
bzr merge ../engine
# manually fix any conflicts
bzr commit
bzr push #back up to main
缺点上述方法是,你的“GUI”分支现在在它的“引擎”的变化。这是好的,如果你要扔掉两个分支一旦他们推回到主线。但是,如果你想保持分支越长,您可以:
2。合并到主线:
cd master
bzr merge ../gui
bzr commit
bzr merge ../engine
# manually fix conflicts
bzr commit
这有你仍然有“鬼”和“引擎”作为单独的分支上攻,但你必须承诺一个掌握你确信,他们将两个一起工作了。所以,你真的可能要:
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
其他提示
是,BZR应该阻止你从发动机回购的变化检查,如果检测到冲突。通常情况下,你首先做“的bzr达”之前,为了办理登机手续,然后确保你的东西起着很好的与他人。
至于你的问题的第二部分,处理鼠标/键盘的分支,这就是我通常会做到这一点。只要进入到GUI目录,然后执行:
bzr merge ../mouse
合并的变化后,可以再从GUI目录提交和将变更集发送到“主”目录。
请注意,我是一个很难的bzr专家,但是这是我一直在处理SVN回购的方式。