git пакетов: создание выборочных «защищенных» и оптимизированных пакетов? - PullRequest
0 голосов
/ 06 января 2020

$ основной репозиторий dayjob довольно большой и имеет относительно стабильные ветки "только для обновления" и довольно агрессивно обновляемые и переписанные ветки разработки и интеграции.

git gc --aggressive (или даже более агрессивную стратегию через --repack) работают хорошо и могут значительно улучшить размер репозитория, однако они перепаковывают весь репозиторий, что означает, что они упаковывают кучу будущего мусора из ветвей разработки вместе со стабильными.

Есть ли простой способ дать git список "стабильных" веток, которые он должен упаковать вместе, и, возможно, только постепенно обновлять, если пакет явно не помечен для замены или что-то в этом роде?

1 Ответ

1 голос
/ 07 января 2020
Стандартное поведение

Git G C не имеет никаких параметров для контроля того, что собирается таким образом. По умолчанию он будет упаковывать распакованные объекты в пакет и упаковывать объекты в большой пакет, если пакетов слишком много (по умолчанию 50).

Если вы хотите создать определенный c оптимизированный пакет и что вы хотите сохранить несмотря ни на что, вы можете сделать что-то вроде этого:

tmpdir=$(mktemp -d)
# Adjust to print whatever refs you want.
echo refs/heads/master | git pack-objects --revs --progress $tmpdir/pack
touch "$tmpdir/$(basename "$tmpdir/"*.pack .pack).keep"
mv "$tmpdir/"* .git/objects/pack/
rm -fr "$tmpdir"

, который упакует все ссылки (в моем примере, master) в один пакет и пометит его как хранится с файлом .keep. Другие объекты по-прежнему будут упакованы при достаточном количестве свободных объектов.

Если вы хотите перепаковать репозиторий, удалите существующий файл .keep и повторите эти команды.

Если вы хотите более агрессивная упаковка, вы можете передать дополнительные аргументы git pack-objects, который будет создавать такую ​​упаковку.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...