问题 如何在不丢失历史记录的情况下从一个Mercurial服务器迁移到另一个服务器?


我有一个项目,我使用Bitbucket作为我的HG服务器,但我最近发现,作为一个单独的开发人员,我可以免费使用Fogbugz / Kiln。我想把我的文件移到Kiln,但我不想丢失我的历史。我确信有一个死愚蠢的简单方法,但我只是不知道。我该怎么做呢?

谢谢!


11244
2017-11-19 21:07


起源



答案:


创建新的项目仓库,并使用原始仓库的当前副本执行以下操作: hg push new-repo-path

然后,您将来使用新路径。你可以删除bitbucket repo。

使用Mercurial,所有历史记录都在存储库的每个副本中,包括本地副本。


11
2017-11-19 21:11



好吧很酷...然后我推后,我是否从新的repo路径克隆,以便将来推送重定向? - Jason
@Jason不 - 你可以编辑 .hg/hgrc 并更新默认存储库的路径。任何Mercurial仓库都可以毫无问题地推送/拉入同一存储库的任何其他副本,除此之外别无其他 .hg/hgrc 将存储库绑定到其原始源。 - Michael Ekstrand


答案:


创建新的项目仓库,并使用原始仓库的当前副本执行以下操作: hg push new-repo-path

然后,您将来使用新路径。你可以删除bitbucket repo。

使用Mercurial,所有历史记录都在存储库的每个副本中,包括本地副本。


11
2017-11-19 21:11



好吧很酷...然后我推后,我是否从新的repo路径克隆,以便将来推送重定向? - Jason
@Jason不 - 你可以编辑 .hg/hgrc 并更新默认存储库的路径。任何Mercurial仓库都可以毫无问题地推送/拉入同一存储库的任何其他副本,除此之外别无其他 .hg/hgrc 将存储库绑定到其原始源。 - Michael Ekstrand


由于您已经在使用Mercurial。我只是很好奇,不应该在Fogbugz / Kiln上克隆你的存储库就足够了。

hg clone "BitBucket Repo ..."

当然,这不会复制每个存储库的hgrc文件。您需要单独执行此操作。

另一种方法是使用bundle。

hg bundle --all bitbucket.bundle
hg clone bitbucket.bundle my_repo

第三种方法是从bitbucket repo推送或拉出到fogbugz repo。

设置默认值

看到: https://www.mercurial-scm.org/wiki/TipsAndTricks

在此重现:

可以存储默认的推送URL,当您只键入'hg push'时将使用该URL。编辑hgrc并添加如下内容:

[paths]
default-push = ssh://hg@example.com/path

3
2017-11-19 21:10



我想只是克隆我的回购,但我想确保当我 hg push 它转到新的fogbugz回购而不是bitbucket回购 - Jason
@Jason:你应该通过设置默认值来做。看我编辑的答案。 - pyfunc


其他答案已经解释了在创建新的空存储库之后,您可以将更改推送到其中 hg push http://example.com/hg/newrepo。 (请注意,一旦您将一些更改推入其中,它将来只会接受来自相关存储库的更改。)

您似乎也想知道的是,如何配置本地存储库以默认推送到该位置,而无需每次都指定URL。你可以通过编辑来实现 默认位置 在里面 .hg\hgrc 您的存储库的文件。这是一个文本文件,您可以使用记事本或任何其他文本编辑器打开它。


0
2017-11-19 22:35