序文
当然このページを見ているプログラマーはgitを使ってソースコード管理をしていると思うのですが、
@yosida001 は、gitはgitでもSourceTreeというUIでgitを操作することができるアプリケーションを使っています。
「SourceTreeは便利だよ!使うといいよ!」みたいなことを書いてもいいのですが、面倒なので詳しい説明は、公式サイトを見るか、解説サイトを読んでください。
問題発生
さて、そんな日、いつもの通りにリモートからフェッチしようとしたらこんなエラーが発生しました
「そういえば直前に、何も考えずにSourceTreeをアップデートしたな・・・・」
と思い出しながら、エラーを解決することにしましょう。
Askpass.exeって何?
どうやらエラーを見る限り
C:\Users\{User}\AppData\Local\SourceTree\app-3.0.6\tools\Askpass.exe
が悪さをしているのは間違いがありません。
何の悪さをしているかは、どうも文字化けしていて読めませんが…
そのあとのエラーを読む限りは、SSHアクセスができなくなっているようです。
さて、このAskpass.exeというアプリケーションですが、具体的にはSourceTreeの中の、SSH接続やGit接続に利用するパスワードを管理するアプリケーションです。
パスワードの読み出しに失敗しているのでしょうか・・・?
原因発見
具体的にアプリケーションの設置場所までエラー文に書かれているので、直接exeファイルを見に行きましょう。
なおAppDataディレクトリは隠しディレクトリなので、見つからなかったらなんとかして見えるようにしておいてください。方法はググればすぐ出ます。
以下はこのエラーが出た時の実際のC:\Users\{User}\AppData\Local\SourceTree\app-3.0.6\tools\
ディレクトリの中身です。
そもそもAskpass.exeが無いことが判明します。
そりゃあエラーも出るわけです。
このあたりでSourceTreeをすべてアンインストールし、もう一度最初からインストールすれば解決しそうな予感を思いますが、現在の設定データが消えてしまうのが惜しいのでがんばります。
Askpass.exeの調達
ところでこのエラーが出る前に私はSouceTreeをアップデートしていました。
つまりapp-3.0.6
以外にもバージョンを記したディレクトリを持っているわけです。
その中でも一番最近のやつを開いてみましょう。手元の環境ではapp-2.5.5
です。
中を見てみると、ありました、Askpass.exeです。
コピーして持っていきましょう。
そしてSourceTreeを再起動してからfetch
・・・
�n���h������Ă��Ȃ���O: System.IO.FileNotFoundException: �t�@�C���܂��̓A�Z���u�� 'SourceTreeShared, Version=1.6.14.0, Culture=neutral, PublicKeyToken=null'�A�܂��͂��̈ˑ��W�� 1 ���ǂݍ��߂܂���ł����B�w�肳�ꂽ�t�@�C����������܂���B
�ꏊ Askpass.App.Main()
Error reading SSH_ASKPASS output for prompt: git@{IP_Address}'s password:
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
で す よ ね!
Askpassを動かすためのライブラリが入っていないようです。ファイルを見比べて足りない分をすべて入れてしまいましょう。
解決
具体的には
- Askpass.exe
- Askpass.UI.Wpf.dll
- SourceTreeShared.dll
の三つをコピーして入れると正常に動きます。
みなさんもよいSourceTreeライフを!