Должны ли данные изображения попадать в VCS?
-
21-08-2019 - |
Вопрос
Мы ведем оживленную дискуссию по этому поводу у меня на работе.Мы говорим о загруженных пользователем изображениях для группы продуктов, а не об изображениях, необходимых для отображения основного сайта.Я говорю «ни в коем случае», но мне любопытно, что думают другие.
Обновлять: Просто для уточнения.Это предоставленные клиентами изображения продуктов, которые они вводят/изменяют.
Решение
Я согласен с «ни в коем случае».
Все, что может измениться на сайте в ходе повседневного использования или доступно для редактирования лицом, администрирующим веб-сайт, я считаю «контентом».Сюда входят загруженные файлы и содержимое базы данных, резервное копирование которых выполняется отдельно.Ничто на веб-сайте, находящемся под контролем версий, не меняется после его развертывания.Так проще.
Другие советы
Другие способы узнать, должно ли что-то находиться в системе контроля версий:
- Изображения меняются?
- Связаны ли изменения с чем-то еще?
- Могут ли быть допущены ошибки?
- Желательна/нужна ли прослеживаемость?
Если остальная часть сайта находится под контролем версий, контролируйте версии изображений.
Если изображения генерируются, контролируйте версии генератора.
Вероятно, вы говорите о контенте, который будет классифицироваться как пользовательские данные, а не как файлы проекта.Этот материал, хотя и важен, не нуждается в версионировании — для этого нужен простой старый механизм резервного копирования.
Недавно я добавил новый проект в новый репозиторий SVN, и каждый раз, когда я смотрю на папку «загрузки», я понимаю, насколько глупо я поступил, включив его в первоначальный коммит.
Похоже, вы говорите о контенте, который находится (или, возможно, будет) в базе данных.Если клиент предоставляет вам список продуктов, а также их изображения, то все это должно быть взято из базы данных.В данном случае я бы не стал этого делать, потому что резервная копия вашей базы данных должна быть создана, но не в VCS.
Если это не так и ваш веб-сайт статичен, то я бы сделал это только потому, что это «часть сайта».
Если вы чувствуете, что вам необходимо его пересмотреть, каким-то образом уберите эти ресурсы с пути основного репозитория, а затем создайте специальный репозиторий только для этого контента.
Вы не хотите, чтобы каждый, кто должен проверять код, получал копию каждого изображения при извлечении или обновлении, это медленно и бессмысленно, а размещение их в основном дереве вызовет больше головной боли, чем вы можете себе представить.
/common_ancestor
/project_code/ # repository a
/resources_dir/ # repository b
Если для этого вам нужно использовать символические ссылки или магию веб-сервера, сделайте это, но что бы вы ни делали, НЕ поместите подобный контент в свой основной репозиторий.
Что касается резервных копий и ревизий, такая ревизия действительно дает вам легкий проще, если вы также используете SVN в качестве метода распространения, таким образом, если разработчик потребности копию изображений для целей тестирования, получить относительно обновленный их набор относительно легко.
Если вы не собираетесь предоставлять информацию о версиях клиентам, какой в этом смысл?
Клиенты уже могут самостоятельно использовать контроль версий перед отправкой файлов.Возможно, вы захотите побудить их сделать это.