Mercurial可以实现吗?除了Clearcase,哪个版本控制系统可以做到这一点?
答案 0 :(得分:4)
大卫是正确的,你不能只在一个文件中存在一个分支,但值得指出的是,人们通常只有一个分支只能改变一个文件。由于分支元数据存储在变更集中,并且由于变更集仅包含增量(变更),因此具有仅改变单个文件的分支几乎是即时创建,更新,提交和合并,而且几乎不占用磁盘空间。
因此,这是处理每个客户配置的一种非常常见的方式。在分支中保留对它们的微小更改,并在需要更新其部署时,从发生发生的主要部分合并到该分支中。
答案 1 :(得分:1)
不,这是不可能的。 Mercurial中的分支是整个存储库状态的快照。
你可以用CVS来做,因为CVS跟踪每个文件的变化:)
答案 2 :(得分:1)
如何使用MQ:
$ hg qnew -m "Changes for client0" client0 ... change the file ... $ hg qref # update the client0 patch with the changes $ hg qpop # pop the changes off the queue stack ... develop like normal ... ... client0 asks for a build ... $ hg qpu # apply client0's patch $ make release $ hg qpop如果你必须与很多客户打交道,那会有点挑剔...但是值得考虑。
当然,你可以做的另一件事就是提交一堆.diff文件:
... make changes for client 0 ... $ hg diff > client0.diff $ hg revert --all $ hg add client0.diff $ hg ci -m "Adding client0 changes" ... develop ... ... client0 asks for a build ... $ patch -p1 < client0.diff $ make release $ hg revert --all