2023/08/08

ローカルバックアップからリストアしたGitリポジトリのアクセス権エラーへの対処

概要

GitHubなどのリモートリポジトリにクローンしておらず、ローカルでのみバックアップしていたGitリポジトリのリストアを試みると、アクセス権の問題でリポジトリを利用できないというケースに遭遇しました。その解決方法の忘備録です。


発生環境

OS : Windows 10 Home 64bit
アプリケーション : Source Tree
リポジトリの種類 : Gitローカル (リモートリポジトリは不使用)
目的 : HDD入れ替えに伴う開発環境の復元。
操作 : 
  1. 開発作業用HDD上のローカルのGitリポジトリをディレクトリごとコピーして、バックアップHDD上にローカルのバックアップを作成。
  2. 新HDDにWindows 10、Source Treeをインストール。
  3. バックアップHDDをつないで、バックアップHDD→新HDDにディレクトリごとコピーして、ローカルのGitリポジトリのファイルをリストア。
  4. Source TreeでClone。保存先パスにはリストアした新HDD上のローカルGitリポジトリを指定。この時点ではSource TreeはGitリポジトリを認識している。
  5. Source Treeで以下のエラーを示すダイアログが表示され、リポジトリを取り込めない。


上記ダイアログの内容は以下のとおり。
'git log'がコード 128 で終了しました:fatal:detected dubious ownership in repository at 'リポジトリのパス'
'リポジトリのパス' is owned by: 'Gitリポジトリに記録されたオーナー識別子'
but the current user is: '指定したディレクトリのオーナー識別子'
To add an exception for this directory, call:

        git config --global --add safe.directory リポジトリのパス
(リポジトリのパス)

調査

まずはメッセージのとおりgit config --global --add safe.directory リポジトリのパス を試してみたのですが、効果なし。

ちょっとすぐにはわからなかったので、ググってみて見つけたのが以下の記事です。
この記事ではOSなどの書かれていないようですが、症状はこの記事と全く同じに見えます。さらに回答を読み進めると、2022/8/7のhalt9kさんの回答はWindows10での対処法について書かれています。
この回答によるとGitの問題ではなく、Windowsのディレクトリのアクセス権の問題とのこと。

解決した手順

上記調査結果を参考に、結果として自分は以下の手順で解決することができました。
  1. Gitリポジトリのディレクトリの親ディレクトリを右クリック。
  2. コンテキストメニューの「プロパティ」を選択。
  3. プロパティウィンドウの「セキュリティ」タブを選択。
  4. 「詳細設定」ボタンを押下。
  5. セキュリティの詳細設定ダイアログが表示されるので、「所有者」を確認しておく。
  6. 同ダイアログの下部の「継承の無効化」を押下。
  7. 同ダイアログ上部の「変更」を押下。
  8. ユーザまたはグループの選択ダイアログの下部の「選択するオブジェクトを~」に、自分のWindowsのアカウント名を入力。
  9. 「OK」を押下。
  10. セキュリティの詳細設定ダイアログに戻るので、「所有者」が入力したアカウントに変わっていることを確認。
  11. Source TreeでGitリポジトリをAddする。

現象発生したリポジトリはドライブ直下ではなく、サブディレクトリ内に置いていたことも影響しているかもしれません。
自分はWindowsではSource Treeを使用していますが、gitで生じる問題なので、たぶんCUIのgitでも同様に解決できると思います。

(2023/8/11追記)
ドライブ直下に置いたGitリポジトリでも同様の現象の発生を確認しました。その場合に最も簡単に解決できた方法は以下のとおりです。ドライブ直下だと面倒なので、サブディレクトリに移したほうが楽でした。
  1. Gitリポジトリを格納するためのディレクトリを適当に作る。
  2. 作成したディレクトリを右クリックし、上記手順2~6を実施。
  3. 「OK」を押下してダイアログ2つを閉じる。
  4. Gitリポジトリのディレクトリを作成したディレクトリに、移動ではなくコピーする。
  5. Source TreeでコピーしたGitリポジトリをAddする。

0 件のコメント:

コメントを投稿