Ответ 1
Для репозитория такого размера git status
и связанные с ним команды могут быть очень медленными. Git работает намного лучше, когда проекты дразнятся друг от друга и разделены, в то время как Subversion стремится поощрять использование одиночных репозиториев, содержащих несколько проектов, поэтому такая проблема не является редкостью при использовании Git -SVN.
Тем не менее, есть несколько различных решений, которые вы можете использовать для ускорения работы:
-
Если вы еще этого не сделали, перейдите к использованию твердотельного диска, а не магнитного диска. Это единственное изменение сильно изменило скорость Git, когда я работал над подобным репозиторием
-
Посмотрите раздел конфигурации
git help svn
. Это описывает настройку Git -SVN для использования подкадров треков в репозитории Subversion (например,trunk/project-a
,branches/*/project-a
,tags/*/project-a
,...), а не весь репозиторий. Если это имеет смысл для вашего репозитория, это будет означать, что у вас может быть намного меньше проверок и намного быстрее работаетgit status
. -
Посмотрите раздел разреженных заказов
git help read-tree
. Это позволит вам настроить Git на использование разреженной рабочей копии, аналогичную разреженной проверке Subversion. Опять же, это означает, что в вашей рабочей копии будет меньше файлов Git отслеживания, и, следовательно, их проверка будет еще быстрее. -
Рассмотрим настройку флага "предполагать неизмененный" на больших разделах вашей рабочей копии. Это сообщит Git, чтобы не беспокоиться о том, что файлы были изменены. Есть два способа сделать это:
-
Чтобы установить флаг для определенных папок, выполните следующие действия:
find <folder-name>... -type f -exec git update-index --assume-unchanged {} +
-
Чтобы установить флаг для всего репозитория (обратите внимание, что это потеряет незафиксированные изменения):
git config core.ignorestat true git reset --hard HEAD
Посмотрите опцию
--assume-unchanged
в разделеgit help update-index
иconfig.ignoreStat
вgit help config
для получения дополнительной информации о том, как они работают.Использование этих параметров означает, что вам нужно явно указывать пути к командам типа
git diff
иgit add
, то есть команды, подобные голымgit diff
,git commit -a
& c, не будут работать. -
-
Измените свою операционную систему и/или файловую систему. В соответствии с Git справочными страницами (теми же, что и в предыдущем выпуске) Windows '
lstat
работает медленно, как и файловая система CIFS. Я подозреваю, что идеал - это что-то вроде ext3 или ext4 в Linux или какой-то другой * nix.