4

我有一个本地存储库,我现在决定将其推送到远程服务器(例如,我有一个允许 mercurial 存储库的主机,并且我也在尝试推送到 bitbucket)。存储库有很多文件,大约 200mb 多一点。在本地,我可以毫无问题地克隆存储库。

现在我在这个存储库中有很多更改,我浪费了几天时间试图弄清楚如何让远程服务器克隆我的存储库。我无法hg serve在 LAN 之外工作。我已经尝试了一切。因此,我在远程服务器(在主机和 bitbucket 上)创建了一个新的存储库,其中没有任何内容。现在,我将本地拥有的完整存储库推送到这些远程位置。到目前为止,它一直不成功,因为推送操作被卡住searching for changes并且没有给我任何其他有用的输出。我已经放了大约一个小时,没有任何变化。

现在我的问题是,就我而言,我做错了什么hg serve?我可以在本地但不能远程访问它(通过 DynDns - 我已正确配置它并且路由器正确转发端口),以便我可以让服务器第一次克隆存储库,然后我将推送到它。我的第二个问题是,假设服务器上的克隆不起作用(例如,如果我要将当前存储库推送到 bitbucket),是在服务器上创建一个空存储库,然后将本地存储库推送到新的远程存储库好吗?这是searching for changes问题的根源吗?

在这方面的任何帮助将不胜感激。

4

5 回答 5

4

就 hg serve 而言,我做错了什么?

很难说,但hg serve通常不是我在第 3 方服务中创建远程克隆的方式。对我来说,如果我不需要的话,我不会在我的防火墙上戳一个洞。

在服务器上创建一个空存储库,然后将本地存储库推送到新的远程存储库,好吗?

是的。这就是我在 Kiln 创建远程克隆的方式。在 Kiln 创建一个新的空仓库,获取新仓库的 URL,然后从我的计算机推送到它。

这是寻找变化问题的根源吗?

不确定,但这份报告表明,非常大的推动可能是一个问题。他们建议推入较小的卡盘(例如,一次几转)。另一个考虑因素是您是否可以在没有修订历史的情况下生活(您是否可以从文件的当前版本创建新的存储库并推送该存储库。该报告还表明身份验证是一些问题的根源(但这似乎是不同的错误消息)。

否则,您将需要进行更多调试以尝试将问题隔离到此特定存储库、您与远程的连接或远程存储库。一些想法:

  1. 听起来您已经尝试过不同的主机,但也许再试一个?
  2. 您可以将空存储库或其他存储库从您的机器推送到远程吗?
  3. 您是否可以从机器/网络访问另一个(例如笔记本电脑和带免费 wifi 的本地咖啡厅),您可以尝试推送目标 repo 或测试 repo?
于 2010-12-30T12:06:43.150 回答
2

是的,您可以毫无问题地推送到空存储库。当您推送或拉取时,Mercurial 将检查源存储库和目标存储库是否相互关联。这使我无法将与 OpenOffice 相关的变更集提取到我的 Mozilla Firefox 克隆中。

一个新的空存储库与所有存储库相关,因此您始终可以创建一个空存储库并将变更集推送/拉入其中。

事实上,当你这样做时

hg clone http://example.net/my-repository

那么这和做的一样

hg init my-repository
cd my-repository
hg pull http://example.net/my-repository

除了不会为您设置默认路径 - 请参阅 barjak 的评论以了解如何执行此操作。

于 2010-12-30T12:00:38.317 回答
1

人们需要了解它(并且最简单)只是为了启动一个新的 repo 并按照公认的答案推送它。

但是,如果您的服务器可通过 ssh 访问,另一种选择是在本地 Windows 上使用 putty 创建一个快速反向隧道。它不需要更改您的防火墙。

在腻子中寻找 ssh >> 隧道菜单并选择远程按钮进行反向隧道。

或者在 linux 本地上,例如:

ssh -fnNTR <any port you want to forward to your remote>:localhost:<port for local hg serv> <and then here type what you would normally to ssh to your remote ssh sever>

您现在已经绕过防火墙并且可以克隆了!

我应该补充一点,您可以通过将 R 更改为 L(本地)并更改端口号(如果需要)来进行正常的转发隧道。

于 2012-04-25T02:00:41.730 回答
1

Hg Mercurial 可以与安全外壳协议一起使用。有两种路径变体:

$ hg clone localrepo ssh://user@server.url:port/relative_remote_path
$ hg clone localrepo ssh://user@server.url:port//absolute_remote_path
于 2014-08-08T07:48:10.707 回答
0

您可以尝试推送一组变更集。如果内存是一个问题,这将有所帮助。它还可以帮助您隔离导致问题的变更集。

于 2012-01-31T18:40:31.293 回答