Git добавить команду с ошибкой, говоря "слишком долгое имя файла"

Я инициализировал репозиторий git, чтобы добавить локальный экземпляр сервера Oracle Weblogic (Да!) в версию с помощью git.

Файлы oracle находятся в каталоге c:\Oracle. Поэтому мне нужно добавить то же самое к git

Я выпустил следующие команды

git init (в каталоге c: \, который имеет каталог Oracle)

добавлен dir .gitignore в c:\и проигнорировал все каталоги в c:\за исключением Oracle

Затем запустил 'git status', чтобы увидеть статус. Как и ожидалось, он показал следующее

C:\>git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .gitignore
#       Oracle/
nothing added to commit but untracked files present (use "git add" to track)

Теперь я сделал git add * Вышеприведенная команда, как и ожидалось, добавила несколько подробных результатов, показывающих файлы, которые добавляются и заканчиваются следующим: (хвост вывода команды отображается ниже)

....
base_domain/servers/AdminServer/tmp/.appmergegen_1387484701373_liferay-portal-6.
1.30-ee-ga3-20130812170130063.war/html/VAADIN/themes/runo/tree/tree.css.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in Oracle/Middleware/user_projects/domains/
base_domain/servers/AdminServer/tmp/.appmergegen_1387484701373_liferay-portal-6.
1.30-ee-ga3-20130812170130063.war/html/VAADIN/themes/runo/window/window.css.
The file will have its original line endings in your working directory.
fatal: unable to stat 'Oracle/Middleware/user_projects/domains/base_domain/serve
rs/AdminServer/tmp/.appmergegen_1387484701373_liferay-portal-6.1.30-ee-ga3-20130
812170130063.war/html/VAADIN/widgetsets/com.vaadin.portal.gwt.PortalDefaultWidge
tSet/043D1FB3F694D0D6D3ACFB33DB80E43D.cache.html': Filename too long

Затем я опубликовал статус git, чтобы узнать, добавлены ли файлы

C:\>git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .gitignore
#       Oracle/
nothing added to commit but untracked files present (use "git add" to track)

Итак, похоже, что ничего не добавлено. Является ли папка слишком большой для git?

Я пробовал Bazaar, и его GUI-контроль блокируется всякий раз, когда я работаю с репозиторием. Теперь я пытаюсь Mercurial посмотреть, справится ли он с этим.

Ответ 1

Я серьезно сомневаюсь, что вам действительно нужен каталог .../tmp/.... git add завершается сбой при возникновении ошибок. Если есть проблема с добавлением любого из указанных вами файлов, ничего не будет добавлено.

Я предлагаю игнорировать каталог tmp:

echo tmp >> .gitignore
git add .

Это игнорирует все каталоги tmp в проекте. Если вы хотите игнорировать конкретные каталоги tmp, вы можете указать их полный путь:

echo path/to/AdminServer/tmp >> .gitignore
git add .

Так как длинные имена файлов находятся в этом каталоге tmp в вашем примере вывода, игнорируя каталог, который должен работать git add ..

Ответ 2

Переместить на более короткий диск, например, subst X: C:\<__relevant_lengthy_path__>\

-

У меня была аналогичная встреча, которая подтвердила ограничение 260 char Макс. длина пути для Windows

То, как я обрабатывал, это использовать команду SUBST (substitute), которая отображает любую длинную папку на один буквенный диск, например subst X: C:\<__relevant_lengthy_path__>\

Однако в вашем случае очень жаль, что у вас было git, только в C:\, что необычно и смело:)

Ответ 3

Cygwin на помощь! Для меня работали те же самые команды через Cygwin Git.

Ответ 4

Проблема связана с Windows: Git для Windows в настоящее время не использует этот API-интерфейс Win32 API для добавления \\?\ к именам путей, чтобы преодолеть ограничение длины стандартного пути длиной 260 символов, а ваш путь - на 9 символов длиннее предел.