Azure DevOps のリポジトリを Sourcetree のリモートにしたら既知の問題でつまずきかけた件について

# 要旨

* 現在 Azure DevOps でプロジェクトを作成すると、ホストURLのドメインが `dev.azure.com` になる。昔は `visualstudio.com` だった。
* Sourcetree が新しいドメインに対応していないため、Azure DevOps のリポジトリをリモートに設定する場合、以前の形式に合わせるような形で URL を変えないといけない（クローンやプッシュでエラーになる）。
* ただし、この問題は Sourcetree 3.4.3 で修正済みの可能性がある。

# はじめに
どうも。「バーチャルためにならない改変お姉さん」の水無月せきなです。

[こちら](https://docs.google.com/presentation/d/1-PH3_Zz06tP-iidQgZkgNyarKoDwdJ-8hkHHGtE-JiY/edit#slide=id.p "VRC Git 初心者勉強会（実践編）")を参考にしながら Git でアバターなどのプロジェクトの管理を始めてみたのですが[^1]、いざ別の PC でクローンしようとした際にエラーが起きました。フレンドの助けを借りて[^1]　クローン自体はできたものの、URL のコピペでは相変わらずエラー……何かおかしいぞと思って少し調べたら、既知の問題に引っかかっていただけかもしれないというお話です。
ついでに、エラーへの対応として行った作業も備忘録的に書きます。
[^1]: にしのんさんにご教示をいただきました。

# 環境
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 側での作業

1.  Azure DevOps の「 UserSettings 」から「 Personal access token 」を選択
1. 「 New Token 」を選択後、必要に応じて設定してトークンを発行（発行画面を閉じると二度とトークンを確認できないので注意）

![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f313834333437322f63363562316437612d626336332d373736342d333531362d3637336633633138663530622e706e.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1843472/a3df696a-c1a2-3f6d-fd78-5139f6b8d2dc.png)

Sourcetree 側での作業

1. 「 Remote 」で「アカウントを追加」を選択
1. 「ホスティングサービス」で「 Azure DevOps 」を選択
1.  ホスト URL は「 https://{userName}.visualstudio.com/ 」
1. 「 Personal Access Token を再読み込み」を押下するとユーザー名とパスワードを聞かれるので、ユーザー名は Azure DevOps のアカウント名、パスワードに Personal Access Token を入力してエンター。

![無題2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1843472/b69edf3f-d401-180f-03c7-4e0e7b58fbfa.png)

これで、リモートリポジトリ一覧からクローンができるようになるはずです。

# でも、クローン用 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 の[リリースノート](https://product-downloads.atlassian.com/software/sourcetree/windows/ga/ReleaseNotes_3.4.5.html "SourceTree Release Notes")の 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](https://randulakoralage82.medium.com/connecting-sourcetree-with-azure-devops-repository-2802545d1987 "Connecting Sourcetree with Azure DevOps Repository")
[Soucetreeを使ってAzure DevOpsのリポジトリへプッシュする](https://qiita.com/KazumasaIwazaki/items/363cbe8a95f3cfdf0871 "Soucetreeを使ってAzure DevOpsのリポジトリへプッシュする")
[Azure DevOps のリポジトリをSourcetreeで管理する](https://qiita.com/tajima440/items/336a730c3c7d29429b39 "Azure DevOps のリポジトリをSourcetreeで管理する")