はじめに
Windows環境でGitを利用していると、次のようなエラーが発生することがあります。
error: unable to create file xxx/yyy/zzz[ファイルパス] : Filename too long
これは、ファイルやディレクトリのパスがWindowsで許可されている最大長を超えたときに表示されるエラーです。
リポジトリを深い階層にクローンしたり、長いファイル名を含むプロジェクトを扱う際に発生しやすい問題です。
原因
このエラーの原因は、Windowsのファイルシステムにおけるパス長制限にあります。
Windowsでは、1つのファイルパスの長さが既定で260文字を超えることはできません。
参考:
Maximum Path Length Limitation
この制限は、レジストリやグループポリシーの設定を変更することで緩和することも可能ですが、システム管理者権限が必要であり、開発環境によっては自由に変更できない場合があります。
余談ですが、このWindowsのパス長制限は、開発をしていると頻繁に遭遇します。特に深い階層のzipファイルを展開するときなどによく引っかかります。
知らないと原因がわからず時間を浪費してしまうこともあるため、この制限の存在を知っておくだけでも役に立ちます。
対策
自分が実際に行っている、いくつかの対策を紹介します。
Gitの設定で長いパスを許可する
もっとも簡単で効果的な方法は、Gitの設定を変更して長いパスを許可することです。
git config --global core.longpaths true
- core.longpaths: Windows上での長いファイルパスの制限を緩和する設定。
trueに設定すると、Git for Windowsが260文字を超えるパスを扱えるようになります。
チームで共通の開発環境を使用している場合は、インストール手順書や初期設定スクリプトにこの設定を含めておくと、同様のエラーを防ぐことができます。
作業ディレクトリの階層を浅くする
もう一つの方法は、単純に深いパスで作業しないようにすることです。
- リポジトリ構成を見直して、フォルダの階層をできるだけ浅くする
- 作業ディレクトリを
C:\workspaceなど、浅いパスに固定しておく
これはやや原始的な方法ですが、システムやツールの制限に依存しない確実な回避策です。
個人的な意見としても、深いパス構造は可読性や管理性の面でも好ましくないことが多いので、可能な限りシンプルな構成を心がけるのが良いと思います。
環境
- git version 2.43.0.windows.1