Как вы работаете с пакетами Oracle в совместной среде с управлением версиями? - PullRequest
9 голосов
/ 01 апреля 2009

Я работаю в многопользовательской среде Oracle с большим пакетом. У нас есть шаблон продвижения DEV => TST => PRD. В настоящее время все изменения пакета выполняются непосредственно в TOAD, а затем компилируются в пакет DEV.

Мы сталкиваемся с двумя проблемами:

  1. Одновременные изменения необходимо продвигать по разным графикам. Например, разработчик A вносит изменения, которые необходимо продвигать завтра, в то время как разработчик B одновременно работает над изменением, которое не будет продвигаться еще две недели. Когда наступает время продвижения, мы обнаруживаем, что вручную комментируем материал, который еще не продвигается, а затем комментируем его потом ... гадость !!!

  2. Если два разработчика вносят изменения в одно и то же время и один из них компилируется, это стирает изменения другого разработчика. Нет хорошего слияния; вместо этого побеждает последняя компиляция.

Какие стратегии вы бы порекомендовали обойти? Мы используем TFS для управления исходным кодом, но еще не использовали его с нашими пакетами Oracle.

P.S. Я видел это сообщение, но оно не полностью отвечает на мой вопрос.

Ответы [ 7 ]

4 голосов
/ 02 апреля 2009

См. мой ответ о Инструменты для работы с хранимыми процедурами в Oracle, в команде (которую я только что пометил).

Итог: не изменяйте процедуры напрямую с помощью TOAD. Сохраните источник в виде файлов, которые вы будете хранить в системе контроля версий, измените и выполните.

Кроме того, я настоятельно рекомендую, чтобы каждый разработчик работал со своей собственной копией базы данных (используйте бесплатную версию Oracle Express). Вы можете сделать это, если сохраните все сценарии для создания базы данных в системе контроля версий. Более подробную информацию можно найти здесь .

4 голосов
/ 01 апреля 2009

Ключ должен принять практику только развертывания кода из системы контроля версий. Я не знаком с TSF, но он должен реализовывать концепции ветвей, тегов и т. Д. Вопрос о том, что развертывать, затем выпадает из тегов сборки и выпуска в системе управления версиями.

Дополнительные советы (для Oracle):

  • это работает лучше всего, если вы разделяете спецификацию и тело пакета на разные файлы, которые используют согласованный шаблон файла для каждого (например, ".pks" для спецификации пакета и ".pkb" для тела пакета). Если вы используете автоматизированный процесс сборки, который может обрабатывать шаблоны файлов, вы можете построить все спецификации, а затем и тела. Это также минимизирует недействительность объекта, если вы развертываете только тело пакета.

  • укажите время для настройки процесса автоматической сборки, основанного на состоянии выпуска или сборки вашей системы контроля версий. Если у вас есть даже умеренное количество объектов кода в БД, вам придется заплатить за то, чтобы иметь возможность встроить код в справочную систему и сравнить его с вашей qa или производственной системой.

3 голосов
/ 03 апреля 2009

Чтобы 2 разработчика не работали над одним и тем же пакетом одновременно:

1) Используйте вашу систему контроля версий в качестве источника кода пакета. Чтобы работать с пакетом, разработчик должен сначала проверить пакет в системе контроля версий; никто не может проверить пакет, пока этот разработчик не вернет его обратно.

2) Не работайте напрямую с кодом пакета в Toad или любой другой IDE. У вас есть без понятия , правильный ли код, над которым вы работаете, корректен или был изменен одним или несколькими другими разработчиками. Поработайте над кодом в сценарии, который вы извлекли из системы управления версиями, и запустите его в базе данных, чтобы скомпилировать пакет. Я предпочитаю использовать хороший текстовый редактор (TextPad) и SQL Plus, но вы можете сделать это и в Toad.

3) Когда вы закончите, верните скрипт в систему управления версиями. Не копируйте и вставляйте код из базы данных в ваш скрипт (снова см. Пункт 2).

Недостатком (если он один) этого контролируемого подхода является то, что одновременно над пакетом может работать только один разработчик. Это не должно быть серьезной проблемой, если:

  • Вы сохраняете пакеты до разумного размера (с точки зрения ЧТО они делают, а не сколько строк кода или количество процедур в них). У меня нет одного большого пакета, содержащего весь код.
  • Разработчикам рекомендуется проверять код только тогда, когда он готов к работе с ним, и возвращать его обратно, как только они закончат вносить и тестировать свои изменения.
2 голосов
/ 01 апреля 2009

Мы используем Oracle Developer Tools для Visual Studio.NET ... подключается прямо к TFS

1 голос
/ 02 апреля 2009

Вы можете использовать средства разработки Oracle для VS или использовать sql developer. Разработчик SQL интегрируется с Subversion и CVS, и вы можете скачать его бесплатно. Смотрите здесь: http://www.oracle.com/technology/products/database/sql_developer/files/what_is_sqldev.html

1 голос
/ 01 апреля 2009

мы делаем это с базой данных Dev для каждого потока и метками для разных потоков.

Наше лицензирование Oracle дает нам неограниченные возможности для разработки и тестирования, но мы являемся независимым разработчиком ПО, у вас может быть другой вариант лицензирования

0 голосов
/ 19 августа 2011

Мы используем Toad for Oracle с поставщиком TFS MSSCCI для TFS 2008. Мы используем Custom Tool , который извлекает проверки базы данных из системы контроля версий и упаковывает их для выпуска.

Насколько мне известно, Oracle Developer Tools для Visual Studio.Net не имеет никакой реальной системы контроля версий с TFS или другим способом.

Вы можете рассмотреть Расширения Toad для Visual Studio , хотя это не дешево, я думаю, возможно, $ 4k.

Другим вариантом является Oracle Change Management Pack , но считаю, что для него требуется корпоративная версия Oracle, которая намного дороже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...