Лучшая практика для хранения файлов .jar в VCS (SVN, Git,…): нет.
Это может иметь смысл в CVCS (централизованной VCS), такой как SVN, которая может обрабатывать миллионы файловнезависимо от их размера.
Это не в DVCS, особенно такой, как Git (и его ограничения ):
- Двоичные файлы donне подходит для VCS .
- По умолчанию клонирование репозитория DVCS даст вам все его истории со всеми версиями jar.
Это будет медленнои занимают много места на диске, независимо от того, насколько хорошо сжаты эти банки.
Вы можете попробовать поиграть с мелким клонированием , но это крайне непрактично.
Использованиевторой репозиторий, такой как Nexus , для хранения этих банок и ссылки только на файл txt
(или pom.xml
файл для Maven проекта) для получения правильных версий jar.
Репозиторий артефактов более приспособлен для распределения и выпуска релиза .
С учетом всего этого, если вы должны хранить банку в репозитории Git, я бы порекомендовал изначально хранить их в сжатом формате (по умолчаниюформат для jar: см. Создание файла JAR )
Как сжатый, так и несжатый формат будет рассматриваться Git как двоичный, но по крайней мере в сжатом формате клонирование и извлечение займет меньше времени.
Однако во многих потоках упоминается возможность хранить банку в несжатом формате :
Я использую некоторые репозитории, в которых проверяются обычные архивы по 50 МБ.
Я убедил их не сжимать тарболы, и git делает довольно приличную работу, выполняя дельта-сжатие между ними (хотя для этого требуется довольно много оперативной памяти).
У вас естьподробнее о обособленном объекте на Git здесь :
- Не имеет значения, если вы имеете дело с двоичным или текстовым;
- Дельтане обязательно против• тот же путь в предыдущей ревизии, так что даже новый файл, добавленный в историю, может быть сохранен в разделенной форме;
- Когда используется объект, сохраненный в разделенном представлении, это повлечет за собой большие затраты, чем использованиетот же объект в сжатом базовом представлении.Механизм делитирования делает компромисс, принимая во внимание эту стоимость, а также эффективность использования пространства.
Таким образом, если клоны и извлечения не являются общими операциями, вам придется выполнять все5 минут, хранение jar в несжатом формате в Git будет иметь больше смысла, потому что:
- Git будет сжимать / вычислять дельту для этих файлов
- В результате вы получите несжатый jarрабочий каталог, файлы которого затем могут быть загружены быстрее.
Рекомендация: несжатый .