Qbilinux 日記

Linux に関係することだけではなく,最近は一般的なコンピュータやガジェット関係についても記載してます.

Windows での「対象のパスが長すぎます」ってエラーが出るのは Win32 の制限みたいだね

先日,「久しぶりに Windows で「対象のパスが長すぎます」みたいなメッセージみた」って blog 書きましたけど,少しだけ調査.

toshi-mtk.hatenablog.com

SmartGit 経由で git pull するとエラーになっていたんだけど,コマンドラインから git pull してもダメ.コマンドラインで使っていたのは git for Windows かな.

対処方法を調べようと,ネット検索すると,ファイル名を短くするとかって対策が出てくるけど,git pull でエラーになっている状況なのでこの方法はダメ.また,適当なネットワークドライブに割り当てて,無理やりパスを短く見せるというのも出てくるけど,根本的な解決方法じゃないし,今後,パスがさらに長くなるとさらにつぎはぎ的な対処方法になるのでこれはやりたくない.

色々と調べてみると,どうやら Win32 の問題でそうなるみたい.Win32 環境ではパス名に 256 文字に制限をかけてあるのね.で,ディレクトリ構造が深くなると Win32 環境の git コマンドはエラーで落ちるってこと.

私の環境の場合には Windows の git コマンドとか SmartGit が 64bit 対応されていないってだけの問題っぽいね.

試しに git pull 出来ないディレクトリを cygwin64 環境に含まれている git で操作してみたところ問題なさそうなので,やっぱりそれっぽい.

git for Windows もダメだったんだけど,ホームページを見てみたところ 64bit 版を配布していたのでそれに入れ替えてみたところこちらも問題はなくなったみたい.以前,インストールした時には 64bit 版ってなかったんだけどね.

SmartGit は 32bit/64bit って区別はないので簡単にできる対処方法はなさそう.でも,裏で c:/Program Files (x86)/SmartGit/git/bin とか c:/Program Files (x86)/SmartGit/git/cmd あたりにインストールされている git コマンドを呼んでいるだけっぽいので,これらのコマンドを 64bit のものに入れ替えてしまえば良いだけのような気がするね.けど,ちょっと時間的に余裕がなかったので試していません.mingw32 も含まれているのでその辺りも入れ替えないとダメなのかな?まぁ,でも SmartGit の方は開発元に要望を出す方がよさそうだね.

ちなみに Windows の git client として有名な SourceTree も調べてみましたが,これもダメ.ファイル名が長すぎるってエラーが出て使い物になりません.SourceTree の場合はざっと見た感じ,SmartGit と違って,git コマンドがそのまま含められているわけじゃなさそうなので使っている側での対応は出来なそうですね.

でも,たとえ git pull が出来るようになっても,パスの深いファイルを取り扱わないといけない環境ではそれ以外のツールなどもすべて 64bit 環境に対応していないといろいろと不便があるので,結局 Windows は使いにくいかなと思います.実際に,手元でも git pull した後の作業もダメダメですし.

でも原因がわかれば対処方法は探しようがあるので良いんですけど,探したり対応したりする時間を考えるとやっぱり Windows は辞めた方が良いかなと思いますね.

なんか,昔からのしがらみで変な制限が残っているってのって...なんだかなぁ.