要旨
- 現在 Azure DevOps でプロジェクトを作成すると、ホストURLのドメインが
dev.azure.com
になる。昔はvisualstudio.com
だった。 - Sourcetree が新しいドメインに対応していないため、Azure DevOps のリポジトリをリモートに設定する場合、以前の形式に合わせるような形で URL を変えないといけない(クローンやプッシュでエラーになる)。
- ただし、この問題は Sourcetree 3.4.3 で修正済みの可能性がある。
はじめに
どうも。「バーチャルためにならない改変お姉さん」の水無月せきなです。
こちらを参考にしながら Git でアバターなどのプロジェクトの管理を始めてみたのですが1、いざ別の PC でクローンしようとした際にエラーが起きました。フレンドの助けを借りて1 クローン自体はできたものの、URL のコピペでは相変わらずエラー……何かおかしいぞと思って少し調べたら、既知の問題に引っかかっていただけかもしれないというお話です。
ついでに、エラーへの対応として行った作業も備忘録的に書きます。
環境
Windows 10 Home( 20H2 )
Git version 2.32.0.windows.2
Git-LFS /2.13.3 (GitHub; windows amd64; go 1.16.2; git a5e65851)
Sourcetree 3.4.5
クローンでエラー「 fatal: Authentication failed 」
エラーメッセージの後にクローン用の URL が続くのですが、意味的には「認証に失敗した」というエラーですよね。
それまで使っていた PC とは別の PC ということもあり、Personal Access Token を新規に発行して Sourcetree のアカウントに追加しました。
Azure DevOps 側での作業
- Azure DevOps の「 UserSettings 」から「 Personal access token 」を選択
- 「 New Token 」を選択後、必要に応じて設定してトークンを発行(発行画面を閉じると二度とトークンを確認できないので注意)
Sourcetree 側での作業
- 「 Remote 」で「アカウントを追加」を選択
- 「ホスティングサービス」で「 Azure DevOps 」を選択
- ホスト URL は「 https://{userName}.visualstudio.com/ 」
- 「 Personal Access Token を再読み込み」を押下するとユーザー名とパスワードを聞かれるので、ユーザー名は Azure DevOps のアカウント名、パスワードに Personal Access Token を入力してエンター。
これで、リモートリポジトリ一覧からクローンができるようになるはずです。
でも、クローン用 URL からはクローンができない……
Azure DevOps からクローン用の URL をコピーすると、https://*****@dev.azure.com/*****/xxxxx/_git/xxxxx
というものになります。前述の設定をしても、こちらをコピペしてクローンしようとすると Git リポジトリでないとされてしまいます。
どうやらSourcetree が新しいドメインに対応していないため、https://*****.visualstudio.com/xxxxx/_git/xxxxx
という形に変えないといけないようです。両 URL 内の「*****」と「xxxxx」は対応しています。
URL を変えたら、クローンができました。ひょっとして、認証エラーは URL が違うということだったのでしょうか……?
おわりに
ということで、クローン時に起きた認証エラーの原因は、もちろん認証情報が無かったからという可能性もありますが、そもそも Sourcetree が Git リポジトリの URL だと認識できなかったことによる可能性もでてきました。
CLI では普通に URLのコピペでクローンできたため、認識できないのは Sourcetree 側の問題のようです。
しかし、Sourcetree のリリースノートの 3.4.3 の箇所には、下記の記載があります。
Fixed failing authentication for Azure devops
「 Azure DevOps での認証失敗を直した」ですよね。
そう、もともと開発を行っていた PC では、https://*****@dev.azure.com/*****/xxxxx/_git/xxxxx
という形式でもリモートへのプッシュは__できていました__。
ちなみに、以前の環境は以下の通りです。
Windows 10 Home( 20H2 )
Git version 2.32.0.windows.2
Git-LFS /2.13.3 (GitHub; windows amd64; go 1.16.2; git a5e65851)
Sourcetree 3.4.5
冒頭に上げた現在の環境を再掲します。
Windows 10 Home( 20H2 )
Git version 2.32.0.windows.2
Git-LFS /2.13.3 (GitHub; windows amd64; go 1.16.2; git a5e65851)
Sourcetree 3.4.5
違いがどこにあるのやら。
Azure DevOps の設定は以前の PC でしたため、そこが原因なのでしょうか……。
また、LFS のダウンロードでは「 https://*****.visualstudio.com/xxxxx/_git/xxxxx
なんて無い(Not Found)」というエラーが起きることもありました。
おそらく LFS の参照は https://*****@dev.azure.com/*****/xxxxx/_git/xxxxx
なんでしょうが、困りました。リモートの設定を https://*****.visualstudio.com/xxxxx/_git/xxxxx
としてやり直すしか無いかもしれません。
既に解消済みの可能性がありますが、どなたかの役に立てば幸いです。
参考
以下、いずれも2021年8月17日最終閲覧
Connecting Sourcetree with Azure DevOps Repository
Soucetreeを使ってAzure DevOpsのリポジトリへプッシュする
Azure DevOps のリポジトリをSourcetreeで管理する