Что лучший способ состоит в том, чтобы управлять sql сценариями изменения для двух разработчиков?

При выполнении многопоточного программирования C/C++ создайте серию макросов, которые утверждают, что функция вызывается на потоке, Вы думаете то, что это было обращенным. Тогда используйте их подробно.

  • ASSERT_ON_UI_THREAD
  • ASSERT_ON_WORKER_THREAD
  • ASSERT_ON_THREADPOOL_THREAD
  • ASSERT_ON_DOWNLOAD _THREAD
  • и т.д.

Использование GetCurrentThreadId () в Windows или pthread_self () на Posix, когда поток будет инициализирован, затем сохраните в globals. Утверждение выдерживает сравнение с хранимой суммой.

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

6
задан Mike 4 September 2009 в 17:08
поделиться

7 ответов

В настоящее время я храню свои сценарии изменения sql в папке и называю их порядковым номером сценария, именем таблицы, описанием изменения

1-User-create-table.sql

2- User-added-columns.sql

...

n

Выполнив эти сценарии, я перемещаю их в новую папку с именем «release 2009-09-01», а затем продолжаю следующий номер

1
ответ дан 10 December 2019 в 02:50
поделиться

Да, вы должны поместить их в систему контроля версий. Соглашение об именах не так важно, как согласование с ним. Один из способов - добавить искусственный (создать один) номер версии приложения в имя файла каждого скрипта. Вероятно, мы могли бы дать вам лучшие примеры именования, если вы дадите больше деталей. Но определенно вы хотите, чтобы они были в системе контроля версий.

5
ответ дан 10 December 2019 в 02:50
поделиться

Важным компонентом, который я бы посоветовал адресовать, является упорядочение - файлы должны включать (возможно, в начале) какую-то сортируемую метку даты и времени. Таким образом, вы можете точно протестировать и отладить порядок , в котором выполняются сценарии.

1
ответ дан 10 December 2019 в 02:50
поделиться

Начните изучать, как использовать ветки с вашим исходным элементом управления. Что может быть очень ценным при совместной работе.

Некоторые стратегии ветвления могут быть следующими:

  • Назовите ветку в честь разработчика (и каждый разработчик в проекте будет нести ответственность за синхронизацию своей ветки с основной веткой).
  • Создайте новую ветку для каждой функции, а затем удалите ветку, как только вы снова объедините ее (реально возможно только с распределенной системой управления версиями)
0
ответ дан 10 December 2019 в 02:50
поделиться

Вам также следует попробуйте GDCM out.

GDCM - это реализация стандарта DICOM с открытым исходным кодом. Он предлагает некоторую совместимость с файлами ACR-NEMA 1.0 и 2.0 (необработанные файлы). Он написан на переносимом C ++ и предлагает оболочку для следующих целевых языков (с использованием swig):

  • Python (поддерживается),
  • C # (поддерживается),
  • Java (поддерживается),

It пытается поддерживать все возможные кодировки изображений DICOM, а именно:

  • RAW,
  • JPEG с потерями 8 и 12 бит (ITU-T T.81, ISO / IEC IS 10918-1),
  • JPEG без потерь 8-16 бит (ITU-T T.81, ISO / IEC IS 10918-1),
  • JPEG 2000 обратимый и необратимый (ITU-T T.800, ISO / IEC IS 15444-1),
  • RLE, Пакетный файл вызывает OSQL с файлом sql в качестве параметра:

    SQLScripts.Bat:

    SET BASEDIR=%%1
    SET SERVER=%%2
    SET DATABASE=%%3
    
    CALL RUNISQLW CreateUserPresets %BASEDIR% %SERVER% %DATABASE%
    CALL RUNISQLW CreateFundWorkflows %BASEDIR% %SERVER% %DATABASE%
    CALL RUNISQLW spFundWorkflowAddFromTemplate %BASEDIR% %SERVER% %DATABASE%
    CALL RUNISQLW spFundWorkflowListForGrid %BASEDIR% %SERVER% %DATABASE%
    CALL RUNISQLW spWorkflowTasksListForGrid %BASEDIR% %SERVER% %DATABASE%
    CALL RUNISQLW fGetToleranceDate %BASEDIR% %SERVER% %DATABASE%
    CALL RUNISQLW fGetNotifyDate %BASEDIR% %SERVER% %DATABASE%
    CALL RUNISQLW spWorkflowTasksManager %BASEDIR% %SERVER% %DATABASE%
    CALL RUNISQLW spWorkflowTasksAnalyst %BASEDIR% %SERVER% %DATABASE%
    CALL RUNISQLW spWorkflowTasksNotify %BASEDIR% %SERVER% %DATABASE%
    CALL RUNISQLW AddGateFrequency %BASEDIR% %SERVER% %DATABASE%
    
    pause
    
    RUNISQLW:
    
    @REM First Parameter: Name of SQL file, without the .SQL extension.
    @REM Second Parameter: Base Directory to run the file in.
    @REM Third Parameter: Name of the server to run the file on.
    @REM Fourth Parameter: Name of the Database on the server.
    
    osql -S %3 -d %4 -E  -i %2\%1.sql -o %2\Output\%1.txt
    

    Затем мы вызываем пакетный файл SqlScripts из файла deployment.bat для каждой конфигурации environemt, Dev, Staging или Production. Это сохраняет согласованность между конфигурациями.

2
ответ дан 10 December 2019 в 02:50
поделиться

Если вы используете VS Team Edition, вы можете использовать выпуск базы данных для создания проекта базы данных для версии сервера sql, который вы используете.

Затем создайте проект из базы данных, так что вы получаете все функции, представления, таблицы в проект.

Затем, когда вы вносите изменения, вносите их в проект, чтобы они легко могли быть в svn (каждый файл там), а затем вы можете просто синхронизировать свои база данных sql server.

0
ответ дан 10 December 2019 в 02:50
поделиться

Другой способ - использовать такой инструмент, как http://www.red-gate.com/products/SQL_Compare/index.htm

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

Кроме того, мне все еще нравится иметь БД в SVN. Я использую SQLScript для см. бесплатную утилиту для создания сценариев объектов БД в ms sql .

РЕДАКТИРОВАТЬ

Теперь я использую Redgate SQL Version . С ее помощью довольно легко внести изменения в SVN Единственная проблема в том, что мне нужно запускать и использовать Приложение, а не автоматизированный процесс.

0
ответ дан 10 December 2019 в 02:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: