代码之家  ›  专栏  ›  技术社区  ›  Benny

不能用mercurial分支一个文件吗?

  •  1
  • Benny  · 技术社区  · 14 年前

    Mercurial有可能做到这一点吗?除了ClearCase,哪个版本控制系统可以做到这一点?

    3 回复  |  直到 14 年前
        1
  •  1
  •   David Wolever    14 年前

    如何使用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
    
        2
  •  4
  •   Ry4an Brase    14 年前

    大卫说的对,你不能只在一个文件上有一个分支,但值得指出的是,人们通常有只改变一个文件的分支。由于分支元数据存储在变更集中,并且由于变更集中只包含增量(变更),因此具有只更改单个文件的分支几乎是瞬间创建、更新、提交和合并,而且几乎不占用磁盘空间。

    结果,这是处理每个客户配置的一种非常常见的方法。在一个分支中为它们保留微小的更改,并在您想要更新它们的部署时,将发生开发的主分支合并到该分支中。

        3
  •  1
  •   David Wolever    14 年前

    不,不可能。Mercurial中的一个分支是整个存储库状态的快照。

    但是,您可以使用cvs,因为cvs跟踪每个文件的更改:)