утилита командной строки svn не будет работать, если полное имя файла длиннее 256 символов

Я не могу создать рабочую копию из командной строки с помощью утилиты svn, если результирующие полные имена файлов для некоторых файлов слишком длинные.
Но я могу успешно создать рабочую копию из TortoiseSVN или из Субклипа.
Почему?

5 ответов


в качестве обходного пути, вы можете subst ваша рабочая копия на букву диска, чтобы сохранить длину пути:

C:\Users\Me\SVN\My\Cool\Repository\With\A\Very\Long\Path> subst S: .
C:\Users\Me\SVN\My\Cool\Repository\With\A\Very\Long\Path> S:
S:> svn up

это на самом деле не ограничение клиента svn, а консоли windows: относительные пути не могут превышать MAX_PATH (254) символов при расширении.

и в отличие от некоторых утверждений комментатора здесь, это не надзор разработчиков svn, чтобы забыть о MAX_PATH. Потому что: если вы передадите полные пути вместо относительных, команды будут работать.

Итак, вместо

cd C:\some\...\very\long\path
svn up .

run

svn up c:\some\...\very\long\path

и он должен работать просто отлично.


вместо того, чтобы делать следующее В текущей директории:

svn co http://xxx/repo1

дайте ему полный целевой путь, как это:

svn co http://xxx/repo1 E:\abc\pqr\xyz\abc\pqr\xyz\repo1

Если ваша командная строка на самом деле Cygwin bash, то вы могли бы поразить эту ошибку:

http://www.itefix.no/i2/node/11064 или http://old.nabble.com/file-name-too-long-td22189828.html

фактически, Cygwin не может обрабатывать пути длиной более 255 символов. (В дополнение к ответу Стефана: здесь невозможны ни абсолютные, ни относительные пути.) Cygwin 1.7, который является бета-версией с полугода, похоже, исправляет это.


У меня была такая же проблема в системе Ubuntu при попытке проверить репозиторий с очень длинными именами файлов. Однако я узнал, что моя проблема связана с шифрованием моего домашнего диска, как описано здесь: http://ubuntuforums.org/showthread.php?t=2258374