2009-12-03 2 views
8

Моя группа разработки использует Visual Source Safe для контроля версий; этот выбор был изначально сделан из-за стоимости и его тесной интеграции с Visual Studio.Версии SQL Server?

Поскольку наш репозиторий вырос, Source Safe действительно начал показывать свои ограничения, и мы рассматриваем возможность перехода к другому решению. Для обсуждения - Team Foundation Server, Subversion, Git и Mercurial.

Мы в основном хранилище данных, поэтому еще одним важным фактором для нас является возможность легко выполнять проекты SQL Server 2005/2008. Это одно из преимуществ использования Source Safe, а также Team Foundation Server - интеграции с Microsoft SQL Server Management Studio.

Мне интересно, имел ли кто-нибудь опыт управления версиями SQL Server с помощью Subversion, Git или Mercurial и может предоставить некоторые прочные плюсы и минусы для каждой из этих систем, а также то, как вы их реализовали.

ответ

1

Git и Mercurial - единственные, которые вы должны рассмотреть ИМХО, а остальные 2 - слишком старомодные. Современные СКМ должны рассматривать такие отрасли, как git.

Для сравнения git vs. mercurial см .: http://rg03.wordpress.com/2009/04/07/mercurial-vs-git/, http://www.russellbeattie.com/blog/distributed-revision-control-systems-git-vs-mercurial-vs-svn.

У меня нет опыта в интеграции SSMS SCM, хотя AFAIK не имеет ни одной из упомянутых систем (кроме TFS). Я бы не назвал это недостатком, так как графический интерфейс - довольно удобный инструмент, который вы найдете более приятным, чем такая интеграция. Это, по крайней мере, мой случай при переходе от SVN (с интеграцией VS с использованием Ankh) к Git (без интеграции вообще) ...

0

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

1

Mercurial имеет интеграцию VS с VisualHG, если вы считаете, что DVCS - это путь. Мы используем это для проектов C++/C# в нашем магазине, и это работает достаточно хорошо. (OTOH, я никогда не использовал никакой «полной» интеграции, поэтому я рад работать с расширением проводника и/или командной строкой для подробных работ VC.)

0

Существует потенциально довольно много альтернатив - SQL Server Management Studio (SSMS) поддерживает интеграцию с любым интерфейсом управления исходным кодом Microsoft MSSCCI. Таким образом, вы можете расширить поиск в системах управления версиями, в которых есть совместимый с MSSCCI провайдер.

В SSMS, выберите «Инструменты» -> «Параметры» -> «Управление источником», чтобы узнать, какие плагины поставщиков установлены в вашей системе.

Например, интеграция Team Foundation Server с SQL Management Studio предоставлена ​​провайдером MSSCCI TFS. Я думаю, что есть провайдер CVS/Subversion («Aigenta Unified SCC») и так далее.

Что касается списка «плюсы/минусы», я думаю, что если есть совместимый провайдер, вы можете открыть вопрос до более широкой аудитории. Мой основной опыт - VSS, TFS и Subversion. Это действительно сводится к вашей команде и окружающей среде. Можете ли вы подробнее рассказать о своей среде?

E.g.

  • Вы бы хотели установить CI (непрерывная интеграция)?
  • автоматизированные сборки/автоматическое управление версиями?
  • Поддержка нескольких сред?
  • Управление конфигурацией?
  • какой размер команды у вас есть? вероятно, будет много слияний/разветвлений и т. д.?
  • у вас уже есть система отслеживания ошибок (вы получаете рабочие элементы/отслеживание ошибок как часть развертывания TFS)?
5

Мой честный ответ - это не интеграция с инструментами базы данных и SCM, если вы можете избежать этого. Используйте файловую систему, где это возможно. Это еще один уровень интеграции, который будет больно. Маленькие отдельные инструменты лучше, чем бегемот.

Мы используем Subversion и SQL 2005 вместе в следующей усадьбе:

  • Мы используем только TortoiseSVN. Нет интеграции VS/SSMS вообще.
  • У нас есть принцип «автоматизировать все», поэтому мы никогда не полагаемся на инструменты GUI для работы.
  • Мы сохраняем все скрипты внутри SVN вместе с кодом. Код, схема и сценарии сопоставляются версиями.
  • Изменения схемы пронумерованы в порядке приложения i.e. 000-create-table-users.sql. Мы записываем максимальный номер сценария, развернутый в каждой среде. Каждый скрипт выполняет переход к следующему номеру базы данных r. Когда мы развертываем, мы проверяем источник и запускаем все сценарии с последнего номера версии до самого большого числа.
  • Любые сценарии без схемы (sprocs/views) являются идемпотентными (могут выполняться любое количество раз с тем же результатом). Они применяются через плагин nant, который мы написали. Они заменяются каждый раз, когда мы развертываем. Не забудьте освежить свои взгляды!
  • Мы избегаем любых сценариев, где это возможно, так как мы используем NHibernate, поэтому в любом случае проблемы с версией сценариев меньше.

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

Мы не используем его для модульного тестирования, однако - мы полагаемся на генерацию схемы NHibernate, чтобы сделать это поверх базы данных SQLite.

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

2

Это может быть полезным инструментом для вас: http://www.liquibase.org/

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

4

Visual Studio Team System 2008 Database Edition (кодовое имя «DataDude») - это то, что вам нужно.

Он позволяет вам изменять объекты базы данных таким образом, чтобы это взорвало ваш разум. (например, обновление сайта клиента до определенной версии или откат к предыдущей версии без уничтожения каких-либо данных).

Ознакомьтесь с особенностями блога Gert Drapers, начиная с this post.

Или, если вы предпочитаете подкаст, послушайте DotNetRocks с помощью Chris Sells in show 494.

Я не знаю, ограничены ли вы TFS для управления версиями при использовании DataDude, но это незаслуженно «недоиспользуемый» член семейства Visual Studio.

+1

«DataDude» - это дополнительная версия Visual Studio 2008 и далее, она не зависит от TFS (на самом деле это всего лишь тип проекта). Вы можете прочитать об этом здесь http://stackoverflow.com/questions/169828/what-are-the-real-benefits-of-visual-studio-team-system-database-edition-gdr – RobS

1

Теперь мы добавили поддержку VSS в SQL Source Control, которая интегрируется с SSMS для обеспечения полностью интегрированного источника управления базой данных. Чтобы попробовать это, посетите: http://www.red-gate.com/MessageBoard/viewtopic.php?t=12265

Смежные вопросы