LoginSignup
1
3

More than 5 years have passed since last update.

【Windows】SublimeGitとか(Sublimeパッケージの)Gitでうまくpullやpushが出来ない時の対処方

Posted at

大変ややこしい記事名してますがパッケージがそんなんだからしかたないのです

こんな人むけ

Sublime上のgitで無反応を起こしたりプロセスが残ったりする

SublimeGitやGitパッケージ経由してfetchとかpullとかしようとしたらずっと無反応だったり
ステータスバーのインジケータがずっと[]を往復したまま終わらなかったり
gitプロセスがずっと残りっぱなしになったり(つらい)

PermissionDenied(publicKey)

普通にコマンドプロンプトとかからfetchとかpullとかしようとした時に表題みたいなの出たとか

以下、これらの問題を回避する設定の方法です
かなり手探りで進めたので色々足りない手順が含まれている可能性あり

OpenSSHでGithubにつなぐ

まず大前提として、
Sublime上のGit達はpush時などのユーザーネームとパスワード入力に対応していないようです
認証が必要になるコマンドを使った時に進行せず延々とインジケータ動きっぱなしになったりするのはたぶんそのせい
なので、入力認証を避けるする方法で運用する必要があります。
とりあえずOpenSSHでやるかーと思ったので今回はOpenSSHです
PuTTYでもできるっぽいですが試してません
https://sublimegit.readthedocs.io/en/latest/troubleshooting.html

sshが諸事情で使えない場合は
http://tbpgr.hatenablog.com/entry/20131107/1383834179
こういうのを使うとよいらしい(こっちも未検証)

ssh-agentの立ち上げとssh-add

今回使用するssh-agentはMSYS環境に入ってるやつです(Git for Windowsインストールしてれば使えるはず?)

こちらのサイト様を参考に

  • ssh-agentの立ち上げ
  • ssh-addによる秘密鍵の追加

これらを行うバッチファイルを作っていきます
sublime上でうまいことgitを動かすためには
ssh-agentが立ち上がりつつ環境変数 SSH_AUTH_SOCKSSH_AGENT_PID が設定されないといけないようです

参考ページにあるものそのままだとそのコマンドプロンプト内でしか設定されずsublime的にうまくいかないので、
setxに変えたりなんだりしてユーザ環境変数をいじるやつを作ります

@echo off

for /f "eol=; tokens=1,2 delims==;" %%1 in ('ssh-agent.exe') do (
    if "%%1" == "SSH_AUTH_SOCK" (
        setx SSH_AUTH_SOCK "%%2"
        set SSH_AUTH_SOCK=%%2
    )
    if "%%1" == "SSH_AGENT_PID" (
        setx SSH_AGENT_PID "%%2"
        set SSH_AGENT_PID=%%2
    )
)

ssh-add 入れたい秘密鍵のファイルパス

ぶっちゃけsetxだけあればいいような気も
これはgit操作を行う前に実行してください
一回実行したらssh-agentが死ぬまでは実行しなくて大丈夫なはず

とりあえずこれでssh-agentの起動は出来るわけですが、
このままだとssh-agentを殺すにはタスクマネージャから直接プロセスを落とさないといけなかったり、
上記バッチで一度ユーザ環境変数をいじっちゃってるのでその中身が残りっぱなしになってしまいます
そのため一応終了用のバッチファイルも用意しておきます

@echo off

ssh-agent -k

setx SSH_AUTH_SOCK ""
setx SSH_AGENT_PID ""

ここまで準備したら最初のバッチを実行してssh-agentの立ち上げ、秘密鍵の登録をします
あとはSublimeTextを立ち上げて
git fetchやgit pull、git pushをやってそれぞれ動けば成功です。
環境変数を空にするのにPC落とす前に終了バッチ叩かないといけないのがすごぶる面倒なんですが、
別に残ってても超困るという事は無い…はず…
結構困るケースがある場合もうちょっと別案考えた方がよさそう

参考にした文献

https://sublimegit.readthedocs.io/en/latest/troubleshooting.html
http://techblog.clara.jp/2014/07/ssh-agent/
http://mattn.kaoriya.net/software/20081106192615.htm

やってて思ったこと

SublimeText中の環境変数だけ変えつつSublimeTextが生きてる間だけssh-agent立ち上げておくとか出来ないのかしらと思ったんですが
これもしかしてプラグイン書けば出来たりする?

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3