git mingw32 и длинные пути / имена файлов под windows - PullRequest
2 голосов
/ 23 октября 2011

У меня есть производственный SVN-репозиторий, который я хочу клонировать с помощью git.когда я пытаюсь git svn clone это, я получаю ошибку, связанную с некоторыми файлами, которые имеют длинную комбинацию имени файла пути.

Я полагаю, что это ограничение вызвано оболочкой GNU mingw32, которую использует git для запуска, поскольку ни в Windows, ни в Unix такого ограничения нет.

Есть ли способ преодолеть это ограничение?Я не хочу начинать изменять имена файлов / пути до того, как буду уверен, что хочу перейти на git.

Спасибо.

Ответы [ 3 ]

5 голосов
/ 24 октября 2011

Это ограничение Windows в том, что MAX_PATH составляет 260 символов, то есть путь может содержать не более 260 символов (поэтому, если учесть букву драйвера, двоеточие и начальные \ и завершающий NUL, у вас есть 256 символов для вашего пути).

Windows имеет путь Unicode, который может иметь длину около 32 767. Вы можете получить такой путь, добавив к нему префикс \\?\

Подробнее см. Здесь: http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx

Вы также можете посмотреть на использование subst для замены длинного пути именем диска и работы с ним.

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/subst.mspx?mfr=true

Вышеприведенные способы являются способом преодоления ограничения, но, конечно, их не стоит применять во время git svn clone. Убедитесь, что путь, с которого вы начинаете клон, максимально короткий. Используйте subst, чтобы назначить букву диска для пути клонирования и использовать этот диск.

0 голосов
/ 07 мая 2015

Вышеупомянутое решение сработало.В дополнение к этому, старый путь к репо может все еще показываться в tortoicegit с его полным длинным путем к Windows, но если вы перейдете в проводник Windows и возьмете новую букву диска, которая появится после команды subst, вы сможете увидеть правильный репо и tortoicegit.там будет отлично работать.

0 голосов
/ 21 июня 2013

У меня Windows XP, и у меня была такая же проблема.Я следовал вышеупомянутому решению, используя subst, и он работал следующим образом:

Сначала в командной строке: subst z: c: \ my \ Довольно \ Long \ path \ to \ local \ repo \

Затем в git: git clone https://github.com/my/repo z: / repo_name

Хранилище, которое раньше было слишком длинным, теперь клонировано на моем ПК.

...