Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pushing a local mercurial repository to a remote server or cloning at server from local

I have a local repository that I have now decided to push to a remote server (for example, I have a host that allows mercurial repositories and I am also trying to push to bitbucket). The repository has a lot of files and is a little more than 200mb. Locally, I am able to clone the repository without problems.

Now I have a lot of changes in this repository, and I have wasted a couple of days trying to figure out how to get the remote server to clone my repository. I cannot get hg serve to work outside of the LAN. I have tried everything. So instead, I created a new repository at the remote servers (both at the host and bitbucket) with nothing in it. Now I am pushing the complete repository that I have locally to these remote locations. So far it has been unsuccessful, as the push operation is stuck on searching for changes and does not give me any other useful output. I have let it go for about an hour with no change.

Now my questions is, what am I doing wrong as far as hg serve is concerned? I can access it locally but not remotely (through DynDns - I have configured it properly and the router forwards the ports correctly) so that I can get the server to clone the repository the first time after which I will be pushing to it. My second question is, assuming the clone at server does not work (for example, if I was to push my current repository to bitbucket), is creating an empty repository at the server and then pushing a local repository to the new remote repository ok? Is that the source of the searching for changes problem?

Any help in this regard would be greatly appreciated.

like image 675
Samaursa Avatar asked Feb 26 '23 12:02

Samaursa


2 Answers

what am I doing wrong as far as hg serve is concerned?

Hard to say, but hg serve isn't normally the way I would to create a remote clone at a 3rd party service. For me, I wouldn't poke a hole in my firewall if I don't have to.

creating an empty repository at the server and then pushing a local repository to the new remote repository ok?

Yes. This is how I create a remote clone at Kiln. Create a new empty repo at Kiln, grab the URL for the new repository, and then push to it from my computer.

Is that the source of the searching for changes problem?

Not sure, but this report suggests that a really large push can be a problem. They suggest pushing in smaller chucks (e.g. a few revs at a time). Another consideration is whether you can live without your revision history (are you okay with creating a new repo from the current version of the files and push that repository. The report also suggests that authentication was the source of some problems (but that seemed to be a different error message).

Otherwise, you'll need to do more debugging to try to isolate the problem to this specific repo, your connectivity to the remote, or the remote repo . Some thoughts:

  1. Sounds like you already tried a different host, but perhaps try one more?
  2. Can you push an empty repository or a different repo from your machine to the remote?
  3. Do you have access to another from machine/network (e.g. a laptop and a local coffehouse with free wifi) that you can try to push the target repo or a test repo?
like image 165
Bert F Avatar answered Feb 28 '23 02:02

Bert F


Yes, you can push to an empty repository with no problem. When you push or pull, then Mercurial will check to see if the source and destination repositories are related to each other. That prevents me from pulling changesets related to, say, OpenOffice into my clone of Mozilla Firefox.

A new, empty repository is related to all repositories, so you can always make an empty repository and push/pull changesets into it.

In fact, when you do

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

then that is the same as doing

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

except that there wont be a default path setup for you -- see the comment by barjak for how to do that.

like image 39
Martin Geisler Avatar answered Feb 28 '23 01:02

Martin Geisler