Сохранение встроенных двоичных файлов в SCM - PullRequest
1 голос
/ 05 августа 2011

Нет сомнений в сохранении кода src в SCM, но как насчет сгенерированных сборок? Вместо того, чтобы хранить их в файловой системе, было бы хорошей практикой сохранять их в SCM, учитывая, что у вас много клиентов с разными версиями и в пределах досягаемости?

Ответы [ 3 ]

2 голосов
/ 06 августа 2011

Вы не должны хранить сгенерированные двоичные файлы в системе контроля версий. Они должны быть результатом компиляции и связывания исходного кода в вашем хранилище с использованием сценариев сборки в вашем хранилище. Если по какой-то причине ваши сборки не воспроизводятся, устраните причину. Не злоупотребляйте контролем версий, применяя его к артефактам, которые не развиваются.

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

Если вам просто нужна резервная копия того, что вы отправили клиентам, поместите полные образы или архивы в ту же резервную файловую систему, в которой вы храните свой репозиторий. Нет ничего особенного в том, чтобы хранить их в дополнительном слое упаковки VCS поверх файловой системы. Во всяком случае, это менее надежно, поскольку есть еще один момент возможной коррупции. В любом случае, если вы заботитесь о целостности этих архивных сборок, вы должны взять их криптографические хеш-коды при их отправке и записать их вместе с архивами, чтобы вы могли проверить их позже. Если вы действительно параноик, подпишите файл контрольной суммы закрытым ключом, который не хранится на этом файловом сервере.

1 голос
/ 05 августа 2011

Конечно, вы не сможете просматривать различия в двоичных файлах, но любой файл может быть помещен в систему управления версиями.

У меня никогда не было проблем с двоичными файлами в SVN, но если вы не будете осторожны, в некоторых других SCM (Git, возможно, в других) они могут быть повреждены.

Если вы используете SVN, еще одна вещь, которую следует учитывать, это то, что каждый раз, когда вы загружаете новую версию бинарного файла, объем пространства, используемого вашим репо, будет расти так же, как размер бинарного. Это происходит потому, что не имеет смысла различать двоичные файлы, поэтому каждая последующая копия должна храниться целиком. Поэтому, если возникает проблема с дополнительным пространством хранения на сервере или у вас большие двоичные файлы, вы можете рассмотреть альтернативное решение.

Так ... вы используете SVN? :)

0 голосов
/ 05 августа 2011

Не рекомендуется сохранять сгенерированные артефакты в SCM.

Не знаю, какую программу вы разрабатываете, для проекта Java рекомендуется использовать Maven для создания и хранения артефактов в репозитории Maven. Пожалуйста, прочитайте эту статью , чтобы узнать больше о репозитории Maven и почему бы не поместить двоичные файлы в SCM.

...