kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Git LFS 3.0以降を使う場合kerberos認証が必要

少し前から困っていたのですが(書こうと思って忘れていた)、公式からもブログが出ていたので、ご紹介。

devblogs.microsoft.com

発生条件

  • オンプレミスのAzure DevOps (Team Foundation) ServerでNTLM認証を使っている(クラウドのServiceには該当しません)
  • Git LFS 3.0以降(Git for Windowsでは2.33から3.0.1が含まれる)を使っている
  • Git LFSでファイルを管理している

私の場合、まず最初にこのissueの現象に遭遇しました。

github.com

Git LFS 3.0以降はgolangで書かれていて、golangの標準ではNTLMサポートしていない(AzureがNTLMのパッケージを出してはいる)ことがそもそもの原因のような?

Remote URLをsshにしてみたのですが、異なるエラーになるだけで、ダメでした。sshだからNTLMの影響を受けないのではと思っていたのですが、どうも違うようです。そして、submoduleがある場合(問題のあるレポジトリでは使っていたので)sshにはpipelineのエージェントに制限があるためあまり使いたくなかったのでした。

LFSで管理していたのは大きくない画像だったので、Git LFSをあきらめて、Git管理にすることで回避しました。

vlike-vlife.netlify.app

git lfs ls-files
git lfs untrack '*.png' '*.jpg' 
git rm --cached ファイルパス 
git lfs uninstall  

最後にcommit

git add .
git commit

履歴からは消さなくてもいいかなということで消していません。リモートから完全に消したい場合、再生成したほうがいいのかな?GitHubではリモートからも消したい場合リポジトリの再生成が必要になるようですね。

Azure DevOps Serverの場合、リモートリポジトリを消してもBoardsの内容は消えないので、この手順で復旧できるはずです。

  1. リモートをclone
  2. リモートレポジトリを削除
  3. 再度リモートを作成
  4. 新しいremote urlをクライアントに登録
  5. push