Мы разработали систему, которая использует единую базу кода, состоящую из четырех проектов Visual Studio с веб-сайтом администратора и веб-сайта, ориентированного на клиента (каждая система имеет собственную базу данных MS SQL).
Это отлично работает, так как все новые веб-сайты (включая администратора) ссылаются на одни и те же базовые проекты кода из SVN, поэтому любые изменения, внесенные в базу кода, затем доступны для всех веб-сайтов.
Каждый веб-сайт имеет другую главную страницу и различные пользовательские элементы управления (.ascx) и, следовательно, частично отличается, хотя основное кодирование по сайтам одинаковое.
Проблема, с которой мы сталкиваемся сейчас, - это ошибка, изменение функции или новая функция, которую мы должны реализовать во всех сайтах отдельно (как для администратора, так и для сайта клиента). Который начинает приводить нас в безумное состояние, а также означает, что у нас есть ОГРОМНЫЙ край ошибки для реализации изменений.
Я думал об использовании svn: externals, но это станет беспорядочным.
Взаимодействие с главным веб-сайтом и главной административной системой может быть вариантом, но слияние для получения нового кода является серьезной проблемой, поскольку сайты не являются точно такими же.
Я думаю, что хороший обзор будет заключаться в том, что разметка совершенно различна для каждого сайта (кроме сайта администратора, который является просто изменением темы), но базы кода одинаковы.
Каков наилучший способ управлять этим или мы застряли, делая много копий и вложений?
ИЗМЕНИТЬ
В каких точках вы хотели бы получить ясность?
Проблемы, возникающие, например, на странице JavaScript различаются, HTML-макеты могут быть совершенно разными на сайтах. Но код для страниц тот же.
Поэтому мне нужно будет "синхронизировать" файл и папку, например, найденные в app_code, но есть и проблемы здесь.
Сайт 1 и сайт 2 могут быть точно такими же, просто другой темой. У сайта 3 есть и другая тема, но у него также есть код на заказ, который требуется только на этом сайте, некоторые из кода в app_code также действуют по-разному на сайт 1 и сайт 2
Теперь я мог бы легко достичь этого с помощью ветвления, но при слиянии с новыми ветвями, если есть различия в коде, тогда будут серьезные конфликты.
Слияние также станет большой задачей и займет слишком много времени, так как нам потребуется объединить только определенные папки и файлы, хотя вы не можете объединить один файл через ветку (это может быть неправильно).
Например:
В корневой папке есть файл download.aspx, который возвращает поток как ответ, а не страницу, это используется для ввода всех запросов на загрузку через систему.
Итак, эта страница на сайте 1 и на сайте 2 одинакова, но на сайте 3 она делает что-то дополнительное, чего не требуется или нуждается какой-либо другой сайт.
Мы не хотим, чтобы эта функция, сделанная на заказ, была перегрузкой, так как мы не хотим/не нуждаемся в ней для других веб-сайтов, теперь мы больше не можем слить этот файл с веб-сайта мастера, он должен быть вручную объединен.
Надеюсь, что это лучше объясняет, чего я пытаюсь достичь.
EDIT 2
Основная структура сайта
|- App_code
|- App_Themes
|- Bin
|- Content
| |- Flash
| |- Images
| |- Scripts
| |- Uploaded
|
|- Controls
| |- MasterPage
| | |-MasterPageControls
| |
| |- Navigation
| |- Search
| |- Templates
| | |- Control Templates
| | |- Page Templates
| |
| |- WebServices
|
|- Errors
|
Все под контролем Навигация, Поиск, Шаблоны являются .ascx файлами.
В корневом файле есть несколько файлов, включая default.aspx, download.aspx и preview.aspx
Это основные страницы сайта (игнорирующие страницы ошибок), все страницы динамически создаются из БД.
В папке "Управление" находится большинство изменений между веб-сайтами в MasterPage и всех других пользовательских элементах управления.