Mercurial:不完整的中央存储库可能吗?

时间:2012-11-02 22:48:06

标签: mercurial repository

我想实现以下设置:

AtWork:MercurialRepo< - >互联网:MercurialRepo< - >如家:MercurialRepo

问题是存储库是几个演出。我已经在家里拥有整个回购(通过捆绑 - > cdrom-> unbundling)。问题是,我不想将整个存储库存储在互联网上。有没有办法暂时从版本控制中排除文件夹,以便只推送/拉动我通过互联网工作的repo的一个子集?我如何才能最好地实现目标?我不时需要做繁琐的捆绑 - > cdrom - >分拆路线,只是为了更新其他所有内容,但总的来说我确实想使用互联网路线而不想将整个回购存储在那里。

4 个答案:

答案 0 :(得分:0)

  

有没有办法暂时从版本控制中排除文件夹,以便只推送/拉动我通过互联网处理的回购的一部分?

不是文件夹,而是回购的某些部分 - 是的

你可以push -b(只有一些分支)或push -r(与祖先一起修订:对于最新的工作,它将是-r tip),但转移的最终大小很大程度上取决于类型您的DAG - 如果有很多跨分支合并,您可能只跳过一小部分变更集

答案 1 :(得分:0)

我的想法很小,与你的要求有点不同,但...... 如果我有同样的问题,我会使用usb flash作为整个存储库(如果你大约10或20 gig它应该便宜)。所以在工作中你可以复制或克隆整个仓库到usb,在家里从中取出新的变化,在你的家庭工作完成之后,将它推送到闪存上的repo,然后将它拉到repo工作(我甚至使用临时提交)对于我撤回到工作目录和条带的撤消工作,所以我可以继续我结束的地方)。

但绝对最简单的方法是尝试与工作服务器或工作中的机器建立连接。或者在互联网上获得更大的回购空间。所以,只是另一个Ideat。 HTH

答案 2 :(得分:0)

真的不可能。最接近的是使用子存储库,这将有效地允许您只在网络上拥有部分大型回购。

答案 3 :(得分:0)

因此,正如您现在发现的那样,您无法从存储库中有选择地克隆某些文件。你能做的最好的事情就是克隆所有分支的子集;但是,对于存储库中的所有文件,您将获得这些分支的完整历史记录。因此,除非许多大文件仅在某些分支中而不是其他分支中知道,否则这对您无济于事。

由于您的问题是文件很大(而不是冗长而庞大的历史记录),您可能需要将其分解为几个可管理大小的“子存储库”。请注意,您对克隆感兴趣的子集必须是子存储库;克隆主要仓库必然包括子仓库。 mercurial subrepository documentation建议您制作一个简单的(“瘦外壳”)主仓库,并将所有项目代码放在子仓库中。

子存储库是一个复杂的解决方案,被mercurial团队视为“最后的特征”。这是一个复杂的设置,有各种限制(请参阅文档),并且您将尝试以保留文件历史记录的方式转换您的repo时会有额外的复杂性。因此,值得考虑避免这种情况的方法:

a)最好能避免回购的中间副本;你有没有办法设置ssh访问权限或代理服务器,以便你的家庭仓库可以直接与你的工作回购交谈? (反之亦然;如果一个的位置能够联系另一个,那就足够了)。

b)你可以在USB记忆棒上携带回购,正如@vaclav的答案所示。

c)或许你应该咬紧牙关并在互联网上克隆整个回购。