Как хранить код в системе контроля версий?

19

Как хранить код в системе контроля версий?

Разработчик дружелюбен ? чтобы программист мог быстро взять последнюю версию и запустить из своего редактора, не внося много изменений? (как файлы конфигурации, указывающие на dev DB..etc)

или

Должно ли это быть дружественным к производству ? источник должен быть таким, чтобы его можно было легко развернуть в производственной среде, а когда разработчик использует последнюю версию, он должен вносить изменения в соответствии со своими потребностями разработки.

Паван Г.Р.
источник

Ответы:

56

Почему выбирают? Это должно быть как.

Ваша среда разработки должна быть настроена так, чтобы ее можно было легко проверить, открыть, собрать, запустить, отладить (например, без абсолютного пути!). Это можно легко сделать с помощью директив компиляции, внедрения класса конфигурации + зависимости или даже таких хитростей, как perso.config в ASP.NET.

Ваш сценарий автоматической сборки должен быть настроен так, чтобы заботиться о конкретной конфигурации производства, очистке, упаковке и т. Д.


источник
Что такое perso.config? Быстрый Google не помог мне.
Тим Мерфи
1
В файле конфигурации приложения .NET вы можете сослаться на другой файл конфигурации приложения, который при обнаружении переопределит указанные параметры. Таким образом, вы можете создать файл dev.config, который переопределяет такие вещи, как строки подключения и другие вещи, и исключает его из репозиториев.
5
+1 - разработчики не должны думать, чтобы получить правильный источник. Также производственное развертывание не должно происходить непосредственно из системы контроля версий, а должно быть с правильно построенными, протестированными и отслеживаемыми элементами. Этот процесс должен быть полностью автоматизирован.
9

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

Моя самая большая неприязнь к проектам с открытым исходным кодом заключается в том, что очень редко в репозитории содержатся все зависимости, необходимые для сборки кода (иногда по практическим или юридическим причинам), но когда их нет - некоторые даже не удосуживаются рассказать вам, какие зависимости вам нужно, или, что более важно, какая из них вам нужна. (и желательно где их взять)

Иногда вы можете потратить более половины дня на сборку и компиляцию нескольких других проектов, чтобы создать проект, который вам нужен.

Конечно, это действительно актуально только для разработки под Windows.

Марк Н
источник
1
Это чертовски раздражает меня. Вы даже можете найти это на очень хорошо известном OSS.
Тим Мерфи
1
Существуют системы, которые решают эту проблему, автоматически выбирая зависимости. Например, Apache Maven, Ivy или scons.
слеске
4

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

ТИА
источник
Производственное развертывание не должно быть проблемой, если вы используете механизм непрерывного развертывания для сборки.
1

Это должно быть удобно для производства, в противном случае проблематично поддерживать автоматизированные сборки.

Sharptooth
источник
8
Почему? Сценарий автоматической сборки может сделать все необходимые переводы для реструктуризации источника в развертываемую форму. Никогда не беспокойте людей тем, что автоматизация может решить.
Джори Себрехтс
1

Я за снижение трения, чтобы было легче выполнять работу, но вам также нужно учитывать режимы отказов.

Если исходная версия репозитория всегда настроена для производственного использования, каков результат того, что разработчик не смог перенастроить перед запуском системы? Разработчик запускает код против производства.

Независимо от того, существуют ли другие препятствия на пути разработчика к случайным изменениям в производственной среде, сборка в режиме сбоя, который поощряет это, кажется опасной.

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

Беван
источник
0

Я стремлюсь к производству, дружественному. Он сохраняет ваши сборки в чистоте и предотвращает попадание посторонних настроек в производство.

Майк Кларк
источник
0

Определенно дружественный к разработчику, со скриптами для автоматизации изменений для обеспечения качества и производства.

Уильям Пейн
источник
-1

Почему бы не иметь ветку (в зависимости от того, какой контроль версий вы используете - я использую Git) для развертываемого кода и другую для версии, готовой для разработчика? Это звучит намного лучше и не так сложно настроить.

Вы можете работать и фиксировать свои изменения, а затем объединить их в развертываемую версию.

Рикардо Соуза
источник
Поскольку долгоживущие ветки дороги в управлении и их трудно объединить. Вы должны помнить, чтобы внести все изменения в обеих ветвях. Гораздо лучше сделать обе версии одинаковыми и / или иметь скрипт для генерации развертываемой артефакта из готового кода разработчика.
bdsl