I have a Windows Server 2008
machine (iis7) that has CopSSH set up on it. To connect to it, I have a Windows 7
machine with Mercurial 1.5.1 (and TortoiseHg) installed.
I can connect to
the server using PuTTY with a non-standard ssh port and a .ppk file just fine. So I know
the server can be SSH'd into.
Next, I wanted to use
the CLI to connect via hg clone to get a private repo. I've seen elsewhere that you need to have ssh configured in your mercurial.ini file, so my mercurial.ini has a line: ssh = plink.exe -ssh -C -l username -P #### -i "C:/Program Files/PuTTY/Key Files/KyleKey.ppk"
Note:
username is filled in with
the username I set up via copSSH.
#### is filled in with
the non-standard ssh port I've defined for copSSH.
I try to do
the command hg clone ssh://inthom.com but I get this error:
remote: bash: inthom.com: command not found
abort: no suitable response from remote hg!
It looks like hg or plink parses
the hostname such that it thinks that inthom.com is a command instead of
the server to ssh to. That's really odd.
Next, I tried to just use plink to connect by plink -P #### ssh://inthom.com, and I am then prompted for my username, and next password. I enter them both and then I get this error:
bash: ssh://inthom.com: No such file or directory
So now it looks like plink doesn't parse
the hostname correctly.
I fiddled around for a while trying to figure out how to do call hg clone with an empty ssh:// field and eventually figured out that this command allows me to reach
the server and clone a test repo on
the inthom.com server:
hg clone ssh://!/Repos/test
! is
the character I've found that let's me leave
the hostname blank, but specify
the repo folder to clone.
What I really don't understand is how plink knows what server to ssh to at all. neither my mercurial.ini nor
the command specify a server. None of
the hg clone examples I've seen have a ! character. They all use an address, which makes sense, so you can connect to any repo via ssh that you want to clone.
My only guess is that it somehow defaults to
the last server I used PuTTY to SSH to, but I SSH'd into another server, and then tried to use plink to get to it, but plink still defaults to inthom.com (verified with
the -v arg to plink). So I am at a loss as to how plink gets this server value at all.
For "fun", I tried using TortoiseHg and can only clone a repo when I use ssh://!/Repos/test as
the Source.
Now, you can see that, since plink doesn't parse
the hostname correctly, I had to specify
the port number and username in
the mercurial.ini file, instead of in
the hostname like
[email protected]:#### like you'd expect to. Trying to figure this out at first drove me insane, because I would get errors that
the host couldn't be reached, which I knew shouldn't be
the case.
My question is how can I configure my setup so that ssh://
[email protected]:####/Repos/test is parsed correctly as
the username, hostname, port number, and repo to copy? Is it something wrong with
the version of plink that I'm using, or is there some setting I may have messed up? If it is plink's fault, is there an alternative tool I can use?
I'm going to try to get my friend set up to connect to this same repo, so I'd like to have a clean solution instead of this ! business. Especially when I have no idea how plink gets this default server, so I'm not sure if he'd even be able to get to inthom.com correctly.
PS. I've had to use a ton of different tutorials to even get to this stage. Therefore, I haven't tried pushing any changes to
the server yet. Hopefully I'll get this figured out and then I can try pushing changes to
the repo.