Как мне настроить проекты и решения Visual Studio в хранилище Mercurial?

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

Website 1 Solution
  Website 1
  Shared Library 1 Project
  Shared Library 2 Project

Website 2 Solution
  Website 2
  Shared Library 1 Project
  Shared Library 2 Project

Windows Service Solution
  Windows Service Project
  Shared Library 1 Project
  Shared Library 2 Project

Shared Library Solution
  Shared Library 1 Project
  Shared Library 2 Project

All Projects Solution
  Website 1
  Website 2
  Windows Service Project
  Shared Library 1 Project
  Shared Library 2 Project

Мы хотим начать использовать Mercurial для управления версиями, но я все еще не уверен, что это лучший способ сделать это.

Из того, что я прочитал, вы должны использовать отдельный репозиторий для каждого проекта. Там нет проблем, но где идут файлы решений Visual Studio (.sln)? Должен ли быть отдельный репозиторий с только .sln файлом?

В идеале проекты, использующие разделяемые библиотеки, должны использовать одну и ту же версию, а решение "All Projects Solution" должно строиться без ошибок, но иногда нам нужно разветвлять разделяемые библиотеки. Каков наилучший способ сделать это и как будут устанавливаться репозитории?

Как получить рабочую копию определенного ветки/тега решения для сайта 1, когда каждый проект находится в отдельном репозитории. Должен ли я каждый раз тянуть каждый отдельно или писать script, чтобы сделать все сразу? Может ли черепаха hg сделать это для меня?

Любые другие советы, чтобы облегчить этот процесс?

Ответы

Ответ 1

В идеале я бы использовал mercurial subrepositories для этого. Затем вы можете разместить свое "все" решение в основных репозиториях. Остальные ваши проекты затем могут быть подотчетны этому. Mercurial также поддерживает рекурсивные субрепозитории.

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

Если subrepositores являются слишком большой нагрузкой, вы должны быть в порядке с помещением всего в один репозиторий. Что касается Mercurial, то неважно, разделили ли вы вещи в репозиториях или нет. Единственный предел - ваша ситуация. Если проекты окажутся настолько большими или слишком часты, что управление репозиторией слишком сильное, например, боль.

Или разделите все на отдельные репозитории и script на него. Это полностью зависит от вас.