git статус - игнорируется висит бесконечно - PullRequest
1 голос
/ 27 января 2020

tl; dr : Выполнение git status --ignored в root моего проекта никогда не заканчивается. git status работает нормально.


Я начал видеть симптомы этой проблемы в моей IDE - PhpStorm (хотя эта проблема будет распространяться на все IntelliJ IDE). Не работают операции git (commit, pu sh, fetch), все они будут зависать бесконечно. Глядя на запущенные процессы, выясняется, что процесс git занимал 100% процессорного времени.

При уничтожении процессов git среда IDE снова работала в течение нескольких минут. Похоже, что он периодически запускает процесс, чтобы синхронизировать c изменения. Некоторые эксперименты позже, оказывается, это не проблема PhpStorm, а git. git status --ignored никогда не завершается, даже если выполняется из командной строки.

1 Ответ

1 голос
/ 27 января 2020

В моем случае виновником была глубокая структура каталогов в пути проекта. Должно быть, оно было сгенерировано чем-то в нашем наборе инструментов, которого я не заметил, потому что его глубина превышала 100, а реальных файлов там не было.

cp отказался копировать этот каталог, говоря name too long (not copied). Я предполагаю, что git каким-то образом срабатывает на такие каталоги.

Удаление глубоко вложенной иерархии dir устранило проблему для меня, и git status --ignored теперь работает, как и ожидалось.


Изменить: это было подтверждено как ошибка в git. Выдержка из списка рассылки:

Нет такого ограничения глубины каталога, но время выполнения 'git status --ignored' быстро увеличивается с глубиной неотслеживаемого каталога. Запуск этой оболочки l oop дает следующие цифры:

10: 0.01
11: 0.03
12: 0.05
13: 0.11
14: 0.23
15: 0.47
16: 0.97
17: 1.97
18: 3.88
19: 7.85
20: 16.29
21: 32.92
22: 76.24

Красиво квадратично c, не так ли? :)

Если я не испорчу свои номера, с глубиной в 120 каталогов для завершения потребуется более 6 * 10 ^ 23 лет ... так что да, это действительно как неопределенное время.

...