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