Closed mono0x closed 8 years ago
関連:#16
@mono0x git config で hub.protocol 設定してたりしますか?それか git clone を http:// でやってるとか。hub は hub.protocol もしくは clone したスキーマから hub browse 時の protocol を決めています。
@mattn 現状 open-browser-github.vim は #16 からhttps
固定で開くようになったので、そもそも hub.protocol を見てないです。
多少重くなりそうですが、git config hub.protocol
も見る必要がありそうですね… それか git remote -v
から取得するか。
現状ホスト名は git config hub.host
だけ見るようにしてますが、
@mono0x さんは「リポジトリによって適切なプロトコルで開いてほしい」とのことなので、
いっそ全部 git remote -v
から取ってきた方がうれしいですかね?> @mono0x
@tyru いえ、 @mono0x さんの「hub browse -u を利用すると、適切に設定されていれば正確な URL が得られる」は hub.protocol を設定しているのが理由なのか、それとも http:// で clone しているのが理由なのかが知りたいです。
@mattn ~/.config/hub で protocol を http に設定していますが、git config の hub.protocol は設定していません。hub browse は ~/.config/hub は見ますが hub.protocol は見ていないはずです ( https://github.com/github/hub/blob/aa4611dd9add76b1facda9906fcdf8078a2e89e6/github/project.go#L150-L161 )。
hub.protocol は remote にアクセスする際のプロトコルを指定するためのもので、https または ssh しか指定できません ( https://github.com/github/hub/blob/aa4611dd9add76b1facda9906fcdf8078a2e89e6/github/project.go#L75-L81 )。ですので、hub.protocol を見るのは適切ではないと思います。
@tyru hub も ~/.config/hub で指定しなければ remote を見るようなので、git remote -v
はよさそうです。私は現在 remote としては SSH の URL 指定しているので、remote は http にして pushInsteadOf で SSH を使うようにする必要はありそうですが。
NewProjectFromURL に protocool が空以外で入ってくる場合はそちらが使われます。 で、その protocol は git のスキームのURLから得られる様です。 https://github.com/github/hub/blob/master/commands/browse.go#L80-L108
github の仕様でもあるので変わるかもしれませんし、同じ仕様を模倣するより hub が入ってたら hub browse -u を使う、くらいでいいと思います。
プロトコル(スキーム)の取得方法の案一覧
git remote -v
の出力から取ってくる
hub browse -u
hub browse -u
のアルゴリズムを open-browser-github.vim 側で実装
@mono0x ありがとうございました。
GitHub Enterprise は組織によっては HTTPS をサポートしない環境で利用されているため、HTTP または HTTPS のどちらかに固定するのではなく、リポジトリによって適切なプロトコルで開いてほしいと思います。
hub browse -u
を利用すると、適切に設定されていれば正確な URL が得られるので、個人的には hub を利用するようになると嬉しいです。ただ、HTTPS 固定で困らない方も多いでしょうから、hub が入っている場合には hub を利用し、入っていない場合には HTTPS 固定 (またはオプション指定) といった動作になるのが望ましいかなと思います。