У меня есть локальный репозиторий с ~ 300.000 файлов и около 40 ГБ в зашифрованной файловой системе (и я не могу это изменить ...).мне часто нужно создать новую ветвь и сделать текущее содержимое рабочего каталога содержимым этой ветви.
, так что эта «проверка» на самом деле не проверка, которая изменяет что-либо в рабочем дереве, а просто создаетветвь, переключается на нее и оставляет рабочий каталог без изменений.и не о больших файлах : средний размер файла намного меньше 1 МБ (40 ГБ / 300000 = 130 КБ)
в настоящее время я делаю:
git checkout -q -b mynewbranch
git add -v -A
git commit -q -m "at mynewbranch"
вВ принципе это работает, но первый шаг по созданию ветки занимает больше часа (!).(«add» и «commit» занимают несколько минут, я бы с этим смирился.) «git checkout», кажется, перечитывает весь рабочий каталог только для того, чтобы создать ветвь.
в идеалея хотел бы, чтобы создание ветви заняло бы совсем немного времени, и его состояние должно просто основываться на ранее существующей ветви.и тогда «добавление» также не должно занимать слишком много времени, так как можно использовать временные метки, и не все содержимое файла следует сравнивать с репозиторием, только файлы с новыми временными метками должны просматриваться подробно.
есть кто-нибудьидея, как это можно сделать эффективно?
edit: git 2.17, ubuntu, encfs over ext4, новейшее оборудование, 12 процессоров, в основном двоичные файлы (такие как pdf, jpeg, mp4; нет глубокого дерева; им нужнобыть версионным).
основная проблема заключается в следующем: можно ли избежать того, чтобы при создании ветки просматривалось содержимое всех файлов?