Ни Git, ни Mercurial не очень хорошо справляются с большими двоичными файлами. Они оба предполагают, что отслеживаемые файлы являются относительно небольшими и легко различимыми, но файлы PDF не являются ни тем, ни другим. Если вы уже запустили git gc
, то ваш репозиторий не станет намного меньше, чем он есть.
Если вам не нужно стороннее решение, вы можете уменьшить это с помощью Git, используя субмодули. Если это имеет смысл, вы можете разбить различные файлы в вашем хранилище на подмодули и клонировать их отдельно. Таким образом, вы можете клонировать главный проект, чтобы получить все ссылки на подмодули, а затем клонировать каждый из подмодулей по мере необходимости.
Однако, как вы подозреваете, Git Annex , вероятно, является лучшим решением. Это хранилище артефактов, что-то вроде bfiles для Mercurial. Эти репозитории артефактов предназначены для использования с большими двоичными недифференцируемыми файлами. Они управляют поиском артефактов; Git и Mercurial отвечают только за ведение ссылок. Таким образом, когда вы клонируете с помощью Git, вам нужно только клонировать ссылки, а поиск артефактов - это отдельный шаг, выполняемый по мере необходимости.
Если вы выберете один из этих маршрутов, вы можете рассмотреть возможность переписывания истории, чтобы удалить все предыдущие зафиксированные объекты и переместить их в подмодули или приложение git. Если вы этого не сделаете, то ваш репозиторий всегда будет по крайней мере таким же большим, как сейчас.
В качестве примечания, причина того, что git gc
не уменьшил размер хранилища, заключалась в том, что сборка мусора в Git удаляет только не связанные объекты из хранилища и уплотняет потерянные объекты в файлы пакета. Поскольку на ваши PDF-файлы есть ссылки, и они плохо сжимаются в пакетных файлах, репозиторий не стал бы намного меньше.