Есть ли у вас версия «производных» файлов?
-
09-06-2019 - |
Вопрос
Использование онлайн-интерфейсов для системы контроля версий - это хороший способ опубликовать местоположение самых последних версий кода. Например, у меня здесь есть пакет LaTeX (который выпускается в CTAN всякий раз, когда проверяются изменения, чтобы он действительно работал):
http://github.com/wspr/pstool/tree/master р>
Сам пакет получен из одного файла (в данном случае pstool.tex), который при обработке создает документацию, readme, файл установщика и фактические файлы, которые составляют пакет при его использовании. от LaTeX.
Чтобы упростить загрузку этого материала для пользователей, я включил все производные файлы, упомянутые выше, в сам репозиторий, а также мастер-файл pstool.tex. Это означает, что я буду удваивать количество изменений при каждой фиксации, поскольку файл пакета pstool.sty является сгенерированным подмножеством мастер-файла.
Это извращение контроля версий?
<Ч>@ Джон Лимджап поднял хорошую мысль:
Есть ли другой способ опубликовать созданные вами файлы в другом месте для загрузки, вместо того, чтобы полагаться на управление версиями в качестве сервера загрузки?
Это действительно суть дела в этом случае. Да, выпущенные версии пакета можно получить из других источников. Так что, действительно, имеет больше смысла делать версии только для не сгенерированных файлов.
С другой стороны, @ комментарий Мадира о том, что: р>
удобство, которое является реальным и повторяющимся, перевешивает затраты, которые несут закулисные
также весьма уместно в том смысле, что если пользователь обнаружит ошибку, и я немедленно ее исправлю, он может затем перейти к хранилищу и получить файл, необходимый для продолжения работы, без необходимости запуска какой-либо " установки " шаги.
И это, я думаю, более важный вариант использования для моего конкретного набора проектов .
Решение
Я использую Tortoise SVN для разработки небольших систем ASP.NET. Большая часть кода интерпретируется как ASPX, но существует около дюжины двоичных DLL, сгенерированных с помощью шага компиляции вручную. Несмотря на то, что теоретически нет необходимости иметь версионные версии этих исходных кодов, это, безусловно, позволяет обеспечить их правильное отражение в среде разработки в производственной системе (один щелчок). Также - в случае аварии - откат к предыдущему шагу снова выполняется одним щелчком мыши в SVN. Р>
Поэтому я укусил пулю и включил их в архив SVN - удобство, которое является реальным и повторяющимся, перевешивает затраты, которые скрываются за кулисами.
Другие советы
Мы не делаем версии файлов, которые могут быть автоматически сгенерированы с использованием сценариев, включенных в сам репозиторий. Причина этого заключается в том, что после извлечения эти файлы можно восстановить одним щелчком мыши или командой. В наших проектах мы всегда стараемся сделать это как можно проще и, таким образом, избежать необходимости создания версий этих файлов.
Один сценарий, который я могу себе представить, где это может быть полезно, если «помечать» определенные выпуски продукта для использования в производственной среде (или любой среде, не связанной с разработкой), где инструменты, необходимые для создания выходных данных, могут быть недоступны. р>
Мы также используем цели в наших скриптах сборки, которые могут создавать и загружать архивы с выпущенной версией наших продуктов. Это может быть загружено на рабочий сервер или HTTP-сервер для загрузки пользователями ваших продуктов.
Не обязательно, хотя лучшие практики управления исходным кодом рекомендуют не включать сгенерированные файлы по понятным причинам.
Есть ли другой способ опубликовать созданные вами файлы в другом месте для загрузки, вместо того, чтобы полагаться на управление версиями в качестве сервера загрузки?
Обычно производные файлы не должны храниться в системе управления версиями. В вашем случае вы могли бы создать процедуру выпуска, в которой был бы создан архив, содержащий производные файлы.
Как вы говорите, хранение производных файлов в системе управления версиями только увеличивает уровень шума, с которым вам приходится иметь дело.
В некоторых случаях это так, но это скорее случай использования типа sysadmin, когда сгенерированные файлы (скажем, файлы зон DNS, построенные из скрипта) сами по себе представляют интерес, а контроль версий более линейный. контрольный журнал, чем контроль источника ветвления и тегирования.