0

我有一个托管在 googlecode 上的远程 hg 存储库。因此,我没有管理员权限来运行例如lfconvert它(据我所知),当然lfconvert只能在本地存储库上使用。

那么,有没有办法将 googlecode hg 存储库转换为 largefile 存储库?

(一个想法是将存储库的本地克隆转换为大文件存储库,然后将更改推送到“中央”googlecode 存储库,但我担心在不知道它是否是有效方法的情况下尝试这样做)。

4

1 回答 1

1

使用您的想法进行本地转换和推送,您可以利用存储库的“重置”功能:

  1. 做一个本地克隆。
  2. 转换为大文件:`hg lfconvert normal_repo largefiles_repo`。在确定一切正常之前,请勿删除原始克隆。
  3. 重置托管存储库(请参阅https://code.google.com/p/support/wiki/MercurialFAQ#Mercurial_FAQ)。
  4. 推送大文件存储库。

在不重置的情况下推送 largefiles 存储库似乎有问题,因为 largefiles 存储库本质上是从第一个 largefile 提交时开始的原始存储库的一个分支

如果推送失败*,您可以推送原始克隆,然后您将回到开始的位置,而不会丢失任何数据。(DVCS 的众多优点之一。:-))

当然,最大的缺点是每个曾经克隆过您的项目的人现在都将在存储库的不同分支上工作。当你做任何涉及改变历史的事情时,这总是一个危险,并且是Mercurial 阶段的动机。如果您想“更友善”,您可以为 largefiles 版本启动第二个项目,并在原始项目引用中放置一个链接来描述移动。

[*] 我无法从 Google Code 的文档中确定是否支持 largefiles 扩展。有一个经过审查的功能请求,但我找不到任何关于实际正在实施的请求的提及。推送失败可能是一个很好的迹象,虽然不支持大文件......

于 2013-05-13T16:20:14.847 回答