无法使用Mercurial分支单个文件?

时间:2010-05-06 03:13:38

标签: mercurial branch dvcs

Mercurial可以实现吗?除了Clearcase,哪个版本控制系统可以做到这一点?

3 个答案:

答案 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