Closed hugomd closed 7 years ago
@hugomd could you elaborate? ✌️
@henrikdahl If I cd
into a git repository, the bottom right hand corner gives a link to the branch I'm on:
This works fine if I've cloned using HTTPS, and opens my browser and takes me to the repository. If I've cloned using SSH then it opens a new terminal window rather than opening the browser.
@hugomd are you saying it currently opens a new terminal window when you've cloned with SSH or that it's the expected behavior you'd like to see?
@henrikdahl It opens a new terminal window when I've cloned with SSH and click on master
, but it would be great if it could open the repository in the default browser — not sure if that's feasible or not though.
@hugomd mind sharing how your remote url looks?
It should already do what you're suggesting, which is why it would be useful to see what your remote url looks like. I'm closing this for now ✌️
@henrikdahl Totally missed this, sorry! It seems to work for GitHub, but not GitLab — I'll look into it myself and see if I can work it out myself and maybe make a PR.
@henrikdahl Found it. Issue is caused by L167.
If the git remote uses any port other than 22 it won't work. E.g.
> remote = "ssh://git@git.hu.md:1022/hugo/dotfiles.git";
'ssh://git@my.hosted.git:1022/hugo/myrepo.git'
> curRemote = remote.trim().replace(/^git@(.*?):/, 'https://$1/').replace(/[A-z0-9\-]+@/, '').replace(/\.git$/, '');
'ssh://my.hosted.git:1022/hugo/myrepo'
Expected output should be:
https://my.hosted.git/hugo/myrepo
Output causing issue is currently:
ssh://my.hosted.git:1022/hugo/myrepo
How come your remote includes ssh://
? It should work without it and GitLab doesn't add it by default.
Input
Output
Although you're right about the port, I'll have to update the regex for that, I didn't consider it when I wrote it ✌️
I'm running a self-hosted instance of GitLab, which uses a different port. When you do that, GitLab pops ssh:// in front of it.
So I'm not sure how to solve this. ssh://
part is easy since the regex can simply check for any character before the @
symbol instead of specifically git
.
However the port part is identical to the username part.
ssh://git@my.hosted.git:1022/hugo/myrepo.git
git@github.com:henrikdahl/hyper-statusline.git
Since a username can be numbers as well, there's really no way to identify which it is. Any suggestion for a pattern thats consistent? ✌️
You could check to see if it starts with ssh://
, and if it does then remove what's immediately after the ssh://git@my.hosted.git:
There might be a simpler way though
Someone could have ssh://
even though they don't have a port, it would mess up their URLs so it's not fully reliable.
@henrikdahl That's true — I'm not sure how I'd recommend fixing it then. I'll try changing my GitLab port to 22 for now! 👍
Thanks for dealing with the issue!
@henrikdahl Is the port always followed by a /
? If so you could regex select a number followed by a /
, while still allowing the previous usage.
@hugomd Problem is that a username could be numbers and follow the exact same pattern.
@henrikdahl I understand that but /
isn't allowed in usernames, and separates the two.
It would be nice if clicking the branch name took you to the branch if the remote is git via SSH rather than HTTPS.