Во-первых, я прошу прощения за явный размер этого вопроса, так как я уверен, что то, что я предлагаю, является "большой сделкой" с точки зрения внедрения и, вероятно, может состоять из трех или четырех отдельных вопросов. Я бы не спросил, не нуждаюсь ли я в помощи.
Мне дана монументальная задача пересмотреть процедуры управления рисками моей компании в отношении нашей онлайн-работы.
Поскольку мы не берем резервные копии и не защищаем наши данные, я решил, что, как и все, кто участвует в профессиональном программировании, мы уже собираемся защищать нашу работу через контроль источника. В настоящее время я делаю это на локальном уровне с помощью Git, но другие не используют никакого контроля источника, и в конечном итоге мы теряем много преимуществ, которые предлагает исходный контроль. Я бы предпочел, чтобы у нас была система, в которой все используют Git, и приложите ее к соблюдению правила, если оно не находится в контроле источника, оно не остается. Очевидно, нам понадобится план резервного копирования, но, как разработчик, я предполагаю, что первое, что нужно сделать, - разобраться в аспекте кодирования вещей, прежде чем сортировать решение для резервного копирования - очевидно, любые советы по этому поводу - это больше, чем приветствуются.
Мы запускаем веб-сайт ASP.NET с бэкэнд SQL Server 2005, работаем с Sitecore в качестве нашей CMS. В идеальном мире я бы хотел, чтобы все изменяющиеся части этого сайта CMS находились под контролем источника, включая базу данных.
На данный момент, и я знаю, что это не самая лучшая идея, я запускаю одно решение для всех подрайонов, построенных в Sitecore. Это находится под контролем источника, и благодаря Git мне удалось добавить ветки и нажимать новые функции и легко исправить ошибки (используя Git -flow как мое решение для рабочего процесса). Я все еще новичок в Git, поэтому мне не удалось что-то слишком сложное за пределами фиксации, игнорируя определенные файлы и т.д.
Кроме того, я также хотел бы использовать элемент управления источником, чтобы получить содержимое базы данных под контролем источника. Насколько я понимаю, вы можете сериализовать элементы контента Sitecore как огромное дерево в файловой системе (сохранено как .item файлы, если я правильно помню?). Если это идеальное решение, я также хотел бы добавить их в исходный элемент управления, хотя я точно не знаю, где они будут сохранены в файловой системе. Моя файловая система сейчас выглядит следующим образом:
- Data (Logs, indexes, etc - is this needed to be in source control?)
- Source (Helper files, although occasionally modified)
- Website (Containing all the files I edit, and other essential Sitecore stuff)
Как уже упоминалось, мой текущий репозиторий работает только в моей системе и состоит из одной папки с папкой с .ascx,.ascx.cs,.ascx.cs.designer и нечетным .aspx файлом или двумя. Это, как правило, облегчает мою жизнь при загрузке, например, с помощью
То, что я хотел бы вводить, - это идеальный способ управления этим для всех разработчиков. Несмотря на использование DVCS, я предпочел бы, чтобы живой сервер рассматривался как основной репозиторий, а для всех остальных разработчиков - отталкиваться от него и друг от друга. Мы будем использовать git -flow workflow solution, так как он хорошо соответствует нашему способу развития. Очевидно, я беспокоюсь о том, что это правильно, без разрушения того, что в настоящее время является очень дорогим сайтом с высоким трафиком на сервере без резервного копирования.
Советы и рекомендации относительно того, сколько данных на сервере хранится в репозитории, рекомендации по обработке сериализованных данных в Sitecore и, возможно, как использовать исходный элемент управления как способ резервного копирования в отдельный репозиторий будет приветствоваться. Это первый раз, когда мне пришлось создать систему управления версиями/рабочий процесс для живого веб-сайта, поэтому любые рекомендации и рекомендации о том, что было бы лучше всего для меня, были бы очень оценены.
EDIT: я собираюсь пожертвовать этим, чтобы попытаться получить больше руководств о том, как люди обрабатывают Sitecore с помощью Git.
Чтобы прояснить себя, я НЕ ищу способ создать резервную копию моей работы, а не так, чтобы ряд разработчиков могли работать над ней и убедиться, что код на веб-сайте обновлен с помощью центрального репозитория. Например, я уже упоминал, что я буду использовать Git -flow для управления моим рабочим процессом. Репозиторий происхождения будет существовать на общем сервере (который, скорее всего, будет тестовой средой), и все разработчики будут иметь клоны того, над чем работать и нажимать. Отсюда я хочу, чтобы удалять изменения с исходного репо на общем диске на живой сервер и обратно, если обнаружены ошибки. Я также хотел бы включить сериализованные элементы контента в свое репо.