我有一个本地仓库,我现在决定推送到远程服务器(例如,我有一台主机,让善变的仓库,我也试图推到到位桶)。存储库有很多文件,有点超过200mb。在本地,我能够毫无问题地克隆存储库。
现在我在这个存储库中有很多变化,我浪费了几天时间试图找出如何让远程服务器克隆我的存储库。我不能让hg serve
在LAN外工作。我尝试了一切。因此,我在远程服务器(主机和bitbucket)上创建了一个新的存储库,其中没有任何内容。现在我将本地的完整存储库推送到这些远程位置。到目前为止它一直没有成功,因为推送操作停留在searching for changes
并且没有给我任何其他有用的输出。我已经放了大约一个小时没有变化。
现在我的问题是,就hg serve
而言,我做错了什么?我可以在本地但不能访问远程(通过DynDNS的 - 我已经正确配置它和路由器正确转发端口),这样我可以让服务器克隆库后的第一时间,我会推动它。我的第二个问题是,假设在服务器克隆不工作(例如,如果我是把我的当前存储库到位桶),是创建在服务器上一个空仓库,然后推动本地库到新的远程仓库好吗?这是searching for changes
问题的来源吗?
非常感谢这方面的任何帮助。
答案 0 :(得分:4)
就hg发球而言,我做错了什么?
很难说,但hg serve
通常不是我在第三方服务上创建远程克隆的方式。对我来说,如果我不需要,我就不会在我的防火墙上戳一个洞。
在服务器上创建一个空存储库,然后将本地存储库推送到新的远程存储库ok?
是。这就是我在Kiln创建远程克隆的方法。在Kiln创建一个新的空仓库,获取新存储库的URL,然后从我的计算机上推送它。
这是搜索更改问题的来源吗?
不确定,但是this report表明真正的大推动可能是一个问题。他们建议推进较小的卡盘(例如一次几转)。另一个考虑因素是你是否可以没有你的修订历史(你是否可以从当前版本的文件创建一个新的仓库并推送该存储库。报告还建议认证是一些问题的根源(但似乎是一个不同的错误信息)。
否则,您需要进行更多调试,以尝试将问题隔离到此特定仓库,您与远程仓库的连接或远程仓库。一些想法:
答案 1 :(得分: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的评论,了解如何操作。
答案 2 :(得分:1)
人们需要了解它(并且最简单)只是为了启动一个新的回购并按照接受的答案推动它。
但是,如果您的服务器是ssh可访问的另一个选项,那就是在本地windows上使用putty快速建立反向隧道。它不需要更改防火墙。
在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(本地)并改变端口号即可。
答案 3 :(得分:1)
Hg Mercurial可以与安全shell协议一起使用。有两种路径变体:
$ hg clone localrepo ssh://user@server.url:port/relative_remote_path
$ hg clone localrepo ssh://user@server.url:port//absolute_remote_path
答案 4 :(得分:0)
您可以尝试推送一组更改集。如果内存是个问题,这将有所帮助。它也可以帮助您找出导致问题的变更集。