STL SGI имеет расширение, названное select1st
. Слишком плохо это не находится в стандартном STL!
Мой честный ответ - не Не выполняйте интеграцию с инструментами базы данных и SCM, если вы можете этого избежать. По возможности используйте файловую систему. Это еще один уровень интеграции, который станет проблемой. Небольшие отдельные инструменты лучше, чем гигант.
Мы используем Subversion и SQL 2005 вместе в следующем поместье:
Из этой структуры мы можем воссоздать среду и базу данных по адресу в любой момент времени на любой машине, что важно.
Однако мы НЕ используем его для модульного тестирования - мы полагаемся на создание схемы NHibernate, чтобы сделать это поверх базы данных SQLite.
Единственный негативный момент, с которым мы столкнулись, - это обеспечение соблюдения разработчиками процесс.
Visual Studio Team System 2008 Database Edition (кодовое имя "DataDude") - это то, что вам нужно.
Это позволяет вам изменять версии объектов базы данных способами, которые поразят вас. (например, обновите сайт клиента до определенной версии или откатитесь к предыдущей версии без уничтожения каких-либо данных.)
Ознакомьтесь с функциями в блоге Герта Драперса, начиная с этого сообщения .
Или, если вы предпочитаете подкаст, послушайте DotNetRocks с Крисом Селлом в шоу 494 .
Я не знаю, ограничены ли вы TFS для управления версиями при использовании DataDude - но это незаслуженно «недооцененный» член семейства Visual Studio.
Git и Mercurial - единственные, которые вы должны учитывать, IMHO, остальные 2 слишком старомодны. Современные SCM должны обрабатывать ветки как git.
Для сравнения git и 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) не имеет его. Я бы не назвал это недостатком - например, git GUI - довольно удобный инструмент, который вам покажется более приятным, чем такая интеграция. По крайней мере, это мой случай при переходе от SVN (с интеграцией VS с использованием Ankh) к Git (без интеграции вообще) ...
Mercurial интегрирует VS с VisualHG , если вы думаете, что DVCS - лучший вариант. Мы используем его для проектов C ++ / C # в нашем магазине, и он работает достаточно хорошо. (OTOH, я никогда не использовал «полную» интеграцию, поэтому я счастлив работать с расширением проводника и / или командной строкой для подробной работы VC.)
Это может быть для вас полезным инструментом: http://www.liquibase.org/
Он разработан таким образом, чтобы упростить контроль версий в любой системе и разумно управлять вашими сценариями обновления.
В TFS отсутствуют некоторые функции VSS, в частности расширение ключевых слов. Если вы не встраиваете информацию о ключевых словах ревизии в исходные файлы, это не должно вызывать беспокойства.
Потенциально существует целый ряд альтернатив - SQL Server Management Studio (SSMS) поддерживает интеграцию с любым Microsoft Source Code Control Interface MSSCCI Provider. Таким образом, вы можете расширить поиск до систем управления версиями, в которых есть поставщик, совместимый с MSSCCI.
В SSMS выберите Инструменты -> Параметры -> Контроль версий, чтобы узнать, какие плагины поставщика установлены в вашей системе.
Для Например, интеграция Team Foundation Server с SQL Management Studio любезно предоставлена поставщиком TFS MSSCCI. Я думаю, что есть провайдер для CVS / Subversion («Aigenta Unified SCC») и т. Д.
Что касается списка за / против, я думаю, что при наличии совместимого провайдера вы можете открыть вопрос для более широкой аудитории. Мой основной опыт работы с VSS, TFS и Subversion. Это действительно сводится к вашей команде и окружающей среде. Не могли бы вы подробнее рассказать о своей среде?
Например,