2012-11-02 52 views
0

我要实现以下设置:Mercurial:不完整的中央存储库可能吗?

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

问题是存储库是几个演出。我已经在家中完成了所有的回购(通过捆绑 - > cdrom-> unbundling)。问题是,我不想将整个存储库存储在互联网上。有没有办法从版本中暂时排除文件夹,以便只通过互联网推/拉只有一部分我正在使用的回购协议?我如何最好地完成我的目标?有时我需要做冗长的捆绑 - > cdrom - > unbundling route,只是为了更新其他所有内容,但总的来说,我确实想使用互联网路由,并且不希望将整个repo存储在那里。

回答

0

因此,现在您已经发现,您无法有选择地从存储库中克隆某些文件。你可以做的最好的是克隆所有分支的子集;但是您将获得这些分支的所有历史记录,以查找存储库中的所有文件。所以,除非很多大文件只在某些分支中被知道,而不是在其他分支中被知道,否则这不会对您有所帮助。

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

子库是一个复杂的解决方案,被认为是mercurial团队的“最后的特征”。这是一个复杂的设置,存在各种限制(请参阅文档),并且会以保存文件历史记录的方式尝试转换您的回购库。所以,值得考虑的方法是避免这种情况:

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

b)您可以在USB存储棒上执行回购,正如@valav的回答所示。或者你也许应该咬紧牙关,在互联网上克隆整个回购。

0

有没有办法从版本中暂时排除文件夹,以推/拉我只通过互联网工作的回购的一个子集?

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

您可以push -b(只有一些分支(ES))或push -r(修订与祖先:对于最新的工作将是-r tip),然而传输的最终大小取决于您的DAG的类型 - 在很多跨分支合并的情况下,您可能只跳过一小部分变更集

0

我有一个小想法,与您提出的有点不同,但.. 如果我有同样的问题,我会使用USB闪存作为整个存储库(如果你是10或20演出,它应该是便宜)。因此,在工作中,您可以复制,或克隆整个回购给USB,在家里从其中取出新的变化,并且在您的家庭工作完成之后,将其推到闪存上进行回购,然后在工作时将其回收(我甚至使用临时提交为撤消工作,我恢复到工作目录和脱衣舞,所以我可以继续我结束的地方)。

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

0

真的不可能。最接近的是使用子库,这将有效地让你在网上只有部分大回购。

相关问题