先日Macをクリーンインストール後に、Xcode8でアプリが実機インストールできないというトラブルが発生したのですが、やはりというかSourceTreeでも問題が起こりました。
簡単に事象を説明すると
「SourceTreeをインストール後、2回目からのクローンに失敗する」というものでした。そんな馬鹿なと思うかもしれませんが、1回目のクローンは今も私のMacに存在していますので、幻ではありません(笑
2回目からクローンできなくなる
では簡単に顛末を追っていきます。
まずはMacをクリーンインストールしました。次にSourceTreeを普通にインストール。
お決まりの手順を次々とパスしていき、無事インストール完了。
早速Bitbucketからブランチをクローンします。何の問題もなく成功。ここで一度Macを再起動しました。そして同じリポジトリから違うブランチをクローンしようとしたところでエラーが発生・・・。
さっきまでいけてたやん!という憤りを抑え、メッセージを確認すると
permission denied (publickey). fatal: could not read from remote repository.
公開鍵が使い物にならない・・・だと?
そこで~/.ssh周りを確認してみるが、問題はないように見える。
configのSSHキーを確認するも、こちらも同じく。
そこで公開鍵のキャッシュを疑い、known_hostsからキャッシュを削除してみる。
それでも状況は変わらず・・・。
一つ付け足しておくと、Macを再起動せずにクローンしていた場合にどうなっていたか分かればもう少し原因が特定しやすかったかもしれませんが、後の祭り状態・・・。
公開鍵と秘密鍵を再作成してみる
以前この辺りの環境作った時、公開鍵と秘密鍵の作成って手作業じゃなかったっけ、というようなことが引っかかる。
SourceTreeのバージョンが上がったせいかどうか定かではないが、インストール時に公開鍵と秘密鍵が自動で作られるというところに目をつけました。
こんな感じで面倒な作業なく、BitbucketのアカウントとSourceTreeを繋いでくれる。
早速アナログな方法でBitbukectにSSH認証キーを設定する。手順は以下の通り。
①ターミナルで以下のコマンドを実行。
cd ~/.ssh
ssh-keygen -t rsa -C *@*
(*@*はhogehoge@gmail.comなどの適当なメールアドレスでいいと思います)
秘密鍵と公開鍵が生成される。
②同じディレクトリにあるconfigに鍵情報を設定。
Host bitbucket.org
HostName bitbucket.org
IdentityFile ~/.ssh/id_rsa
User git
③公開鍵をコピー
pbcopy < ~/.ssh/id_rsa.pub
④Bitbukectに公開鍵を登録。
アカウントの管理->アカウント設定->SSHキーから鍵を追加する。
ここまでやって再度クローンしてみると成功!
念のためSourceTreeにて自動生成された公開鍵や秘密鍵を掃除しておく。
別のMacでは現象再現せず
気になったので別のMacでも同じ現象となるか試してみましたが、発生しませんでした。さすがにMacのクリーンインストールは面倒なので全く同じ条件ではありませんが、ほぼ近い状況です。
SourceTreeをAppCleanerでアンインストールし、あとは同じ手順です。Macを再起動してもクローンできました。
これやってみてから思ったのが、SourceTreeをアンインストールしただけでは以前作成した公開鍵と秘密鍵は削除されないのに対して、Macをクリーンインストールするとその辺りも根こそぎいってしまうのでその辺りに原因があるのかもしれない。
ただその場合も最初の一度だけクローンに成功した理由が謎・・・。