0

我想实现以下设置:

AtWork:MercurialRepo <-> Internet:MercurialRepo <-> AtHome:MercurialRepo

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

4

4 回答 4

0

因此,正如您现在发现的那样,您无法从存储库中选择性地克隆某些文件。你能做的最好的就是克隆所有分支的一个子集;但是对于存储库中的所有文件,您将获得这些分支的整个过去历史记录。所以,除非很多大文件只在某些分支中知道,而在其他分支中不知道,否则这对您没有帮助。

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

子存储库是一个复杂的解决方案,并且被 mercurial 团队认为是“不得已而为之的功能”。这是一个复杂的设置,有各种限制(请参阅文档),并且您将尝试以保留文件历史记录的方式转换您的存储库。因此,值得考虑避免这种情况的方法:

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

b)正如@vaclav 的回答所暗示的那样,您可以在 USB 记忆棒上携带 repo。

c)或者也许你应该咬紧牙关,在互联网上克隆整个 repo。

于 2012-11-04T22:23:32.453 回答
0

有没有办法暂时从版本控制中排除文件夹,以便仅推送/拉出我正在通过 Internet 处理的存储库的一个子集?

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

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

于 2012-11-03T01:27:13.427 回答
0

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

于 2012-11-03T23:47:03.327 回答
0

我有一个小想法,与你所问的有点不同,但是......如果我有同样的问题,我会使用 USB 闪存作为整个存储库(如果你大约 10 或 20 个演出,它应该很便宜)。因此,在工作中,您可以复制或克隆整个 repo 到 usb,在家中从中提取新的更改,完成家庭工作后,将其推送到 flash 上的 repo,然后将其拉到工作中的 repo(我什至使用临时提交对于我恢复到工作目录并剥离的未完成的工作,所以我可以继续我结束的地方)。

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

于 2012-11-03T20:34:28.203 回答