より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

SourceTree+BitBucketでブランチのマージに失敗してもがき苦しんだこと

連休中に何をやってるんだ・・・と、苦悶の声を漏らしました。

  • SourceTree
  • BitBucket

という環境での出来事です。

現象

ただのプッシュは問題ないのですが、フィーチャーブランチを閉じて、developマージの際に悲劇は起きたのでした。

git flow feature finish 
fatal: HttpRequestException encountered.

bash: /dev/tty: No such device or address
error: failed to execute prompt script (exit code 1)
fatal: could not read Password for 'https://xxxx@bitbucket.org': No error

様々な記事を参考にし、あれこれ設定し直しました。

セキュリティに関する記事って、どうしても全てを晒すわけには行かないので、手取り足取りカバーしづらいですよね。

私が対応したこと

SSHの再設定

PUTTYをダウンロードして一からSSHを設定し直しました。

基本は下記のサイトの「Set up SSH with Sourcetree on Windows」に従えば良いです。

Set up an SSH key - Atlassian Documentation

が、SourceTreeのメニューのツール-SSHエージェントを起動でもPUTTYは立ち上がりません。

f:id:rimever:20190503172449p:plain

ツール-オプションで、SSHクライアントをOpenSSHからPuttyに切り替える必要があります。

f:id:rimever:20190503172521p:plain

ホスティングアカウントの設定

新しいタブを開き、Remoteリポジトリに切り替え、アカウントを追加。

BitBucket,SSH,Basicで自分のユーザーを登録しました。

f:id:rimever:20190503173143p:plain

※この手順は、先ほど記載したSSHの再設定の最初の手順に含まれています。

リポジトリのパスの設定

右上の設定画面からリポジトリのパスを確認して、https://xxxx@bitbucket.orgではなく、git@bitbucket.orgの形式に設定を変更しました。

f:id:rimever:20190503172933p:plain

原因はなんだった

ほとんど闇雲な暗中模索で解消しましたが、自分で、たまにはSourceTreeのログを見て、と書いておきながら、自分では見ようとはしてませんでした。

rimever.hatenablog.com

下記のようなログが出ているのでした。なのでSSHの再設定は必要なかったかもしれないです。

ログを見て、リポジトリのパスをhttps://から、git://に変更したことが直接の問題解決になったかと思います。

ERROR [2019-05-03 17:08:46,730] [48] [SourceTree.Analytics.NPS.Service.NPSFeedbackService] [Log] - NPS: Couldn't record shown prompt
System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: リモート名を解決できませんでした。: 'sourcetree-nps-bridge.us-east-1.prod.public.atl-paas.net'
   場所 System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult, TransportContext& context)
   場所 System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult ar)
   --- 内部例外スタック トレースの終わり ---
   場所 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   場所 SourceTree.Analytics.NPS.Transport.AuthHttpClientHandler.<SendAsync>d__2.MoveNext()
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
   場所 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   場所 System.Net.Http.HttpClient.<FinishSendAsyncBuffered>d__58.MoveNext()
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
   場所 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   場所 Refit.RequestBuilderImplementation.<>c__DisplayClass17_0.<<BuildVoidTaskFuncForMethod>b__0>d.MoveNext()
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
   場所 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   場所 SourceTree.Analytics.NPS.Service.NPSFeedbackService.<RecordShownPromptAsync>d__18.MoveNext()