Ответ на самом деле возможно . В частности:
git remote | xargs --max-procs=4 -n 1 git fetch
Как вы видели, это действительно работает при тестировании, вплоть до определенного момента. Однажды я написал причудливую версию того же рода вещей (с причудливым управлением отображением процесса извлечения, все написано на Python), но оказывается, что в git fetch --progress
есть ошибка, так что она не работает с конвейерами ; вы должны использовать ptys).
без столкновения с блокировкой файла git ... похоже, работает, когда все репозитории не связаны друг с другом.
В этом и заключается проблема: каждый выбор предполагает, что он может получить свои блокировки. Выборки должны блокировать каждое имя для удаленного отслеживания, и обычно оно работает просто отлично, так как имена являются отдельными - удаленный A
не мешает удаленному B
, потому что refs/remotes/A/master
и refs/remotes/B/master
используют разные блокировки - но последняя перепаковка может закончиться неудачей, если вы не сделаете то, что сделали, отключите auto- gc
, а затем запустите GC самостоятельно (после этого вы должны будете повторно сделать это повторно).
Вы также можете получить больше данных, чем необходимо (как я отметил в другом ответе). Вы ничего не можете с этим поделать без внешней информации, например, может быть, есть один пульт, который вы всегда должны сначала получить.