"Це залежить." Для нормального відстеження розвитку немає. Однак для хмарних та DevOps розгортань це часто зручно або навіть потрібно.
В більшості випадків
@ptyx є правильним . Дійсно, його «ні» можна було б сказати дещо виразніше. Щось на кшталт "Ні. Ні! OMG НІ! "
Чому б не зберігати мінімізовані або стислі активи в системі управління джерелами, як Git?
Вони можуть бути майже тривіально відроджені вашим процесом збирання на льоту з вихідного коду. Зберігання стислих активів в основному зберігає один і той же логічний вміст двічі. Це порушує принцип "не повторюй себе" (він же сушився ).
Менш філософська, але більш практична причина полягає в тому, що мінімізовані / оптимізовані активи мають дуже погану стисливість при зберіганні в Git. Системи управління джерелами працюють, розпізнаючи зміни ("дельти") між різними версіями кожного файлу, що зберігається. Для цього вони "відрізняють" останній файл з попередньою версією і використовують ці дельти, щоб уникнути збереження повної копії кожної версії файлу. Але перетворення, зроблені на кроці мінімізації / оптимізації, часто усувають подібність та точкові точки , які використовують алгоритми diff / delta . Найбільш тривіальний приклад - видалення розривів ліній та інших пробілів; отриманий актив часто є лише одним довгим рядком. Багато частин процесу веб-збирання - такі інструменти, як Babel , UglifyJS , Browserify ,Менше , а Sass / SCSS - агресивно перетворюють активи. Їх вихід є непохитним; невеликі зміни вводу можуть призвести до великих змін у виході. Як результат, алгоритм diff часто вважає, що щоразу бачить майже зовсім інший файл. Ваші сховища в результаті зростатимуть швидше. Ваші диски можуть бути достатньо великими, а ваші мережі досить швидкими, що не викликає великого занепокоєння, особливо, якщо було б значення зберігати мінімізовані / оптимізовані активи вдвічі - хоча на основі пункту 1 додаткові копії можуть бути лише на 100% безглуздими здуття.
Однак є головний виняток із цього: DevOps / хмарні розгортання. Ряд постачальників хмарних областей та команд DevOps використовують Git та подібні не лише для відстеження оновлень розробки, але й для активного розгортання своїх додатків та активів для тестування та виробництва серверів. У цій ролі здатність Git ефективно визначати "які файли змінилися?" настільки ж важлива, як і більш детальна здатність визначати "що змінилося в кожному файлі?" Якщо Git повинен зробити майже повну копію файлу для мінімізованих / оптимізованих активів, це займе трохи більше часу, ніж це було б інакше, але нічого не робити, оскільки він все ще робить відмінну роботу, допомагаючи уникати копії "кожного файлу в проекті" на кожному цикл розгортання.
Якщо ви використовуєте Git як двигун розгортання, зберігання в Git мінімізованих / оптимізованих активів може перейти з "ні!" до бажаного. Дійсно, це може знадобитися, скажімо, якщо вам не вистачає надійних можливостей складання / післяобробки на серверах / службах, до яких ви розгортаєтесь. (Як сегментувати активи та розгортання активів у цьому випадку - це окрема банка глистів. На даний момент достатньо знати, що ним можна керувати декількома способами, в тому числі з одним єдиним сховищем, декількома гілками, підрепозиторіями або навіть кількома сховищами, що перекриваються. )
/dev/null
.