Примечание: Roundhouse "заброшен"
Roundhouse - замечательный инструмент, и я был одним из основных сопровождающих в течение нескольких лет, так как никто не поддерживал его, и это принесло мне большую ценность. Тем не менее, проект существует уже много лет и начал начислять какой -то технический долг, с которым стало трудно работать при попытке ввести новые функции или рефактор.
После того, как я подумал, я решил начать с нуля и создать преемника для Roundhouse, начиная с нуля на Modern .net (начинается на .net 6 в 2021 году, теперь на .net 8), кроссплатформенное, используя Последние сторонние библиотеки для подключения к различным базам данных и т. Д. Я удалил nhibernate как зависимость, так как она использовалась только для создания таблиц версий и казалось немного излишним, и было трудно перемещать технологию Fast Forw Мудрый с такой большой зависимостью. Log4net также была заменена Serilog.
Roundhouse, конечно, никогда не исчезнет, и исходный код останется здесь. Но сейчас нет активной разработки Roundhouse. Я продолжаю свое путешествие с преемником, решетка. Теперь он находится на версии 1.6 и считается стабильным. Это активное развитие.
Пожалуйста, отправляйтесь туда и попробуйте. Если должно быть почти полным функции с Roundhouse, и если вы найдете что-то, чего не хватает, подайте проблему или отправьте PR.
Project Roundhouse - Управление изменениями базы данных сделано правильно

ЛИЦЕНЗИЯ
Apache 2.0 - см. Docs Legal (просто законно в папке Zip)
Документация
Вики
ИНФОРМАЦИЯ
Обзор
Roundhouse - это автоматизированная система развертывания базы данных (управление изменениями), которая позволяет использовать ваши текущие идиомы и получить гораздо больше. В настоящее время работает с Oracle 1 , SQL Server (2000/2005/2008/Express), Access 1 , MySQL, SQLite и PostgreSQL. Есть планы на будущее для других баз данных.
Он стремится решить как проблемы с техническим обслуживанием, так и простоту развертывания. Мы следим за некоторыми из тех же идиомов, что и другие системы управления базами данных (сценарии SQL), но мы отличаемся тем, что думаем о будущих проблемах обслуживания. Мы хотим всегда применять определенные сценарии (все, что без хранения, функции, представления, хранимые процедуры и разрешения), поэтому нам не нужно бросать все в наши сценарии изменений. Это стремится решить будущие проблемы контроля источника. Насколько это мило, когда вы можете версировать базу данных в соответствии с вашей текущей версией управления источником?
1) Только на полнокадровых классах в Windows, а не на кроссплатформенном глобальном инструменте .NET.
Начало работы с Roundhouse
Загрузки
Вы можете скачать Roundhouse с https://github.com/chucknorris/roundhouse/Releases
Вы также можете получить копию с сервера сборки по адресу https://ci.appveyor.com/project/chucknorris/roundhouse/build/artifacts.
Драгоценные камни ( не обновлены для 0,9,0 и выше, извините )
Если у вас установлен Ruby 1.8.6+ (и Gems 1.3.7+), вы можете быстро получить текущий выпуск Roundhouse на вашу машину!
- Тип
gem install roundhouse
- Тогда из любого места вы можете ввести
rh [options]
Nuget
С Nuget вы можете быстро получить текущий выпуск Roundhouse в вашем приложении!
- В Visual Studio Package Manager Console Type
install-package roundhouse
- Существует также
roundhouse.lib
, roundhouse.msbuild
и roundhouse.refreshdatabase
Шоколад
Chocolatey похож на Apt-Get, но для окон! Это альтернативный метод для быстрого выпуска Roundhouse на вашу машину!
- Тип
cinst roundhouse
- Тогда из любого места вы можете ввести
rh [options]
Dotnet Core Global Tool (Windows, Linux, MacOS и т. Д.)
- Тип
dotnet tool install -g dotnet-roundhouse
- Тогда из любого места вы можете ввести
rh [options]
Вы можете прочитать больше о том, что происходит в фоновом режиме, например: https://natemcmaster.com/blog/2018/05/12/dotnet-global-tools/ ~/.dotnet/tools
но, короче ~/.dotnet/tools
папка.
Вам понадобится Dotnet Core, установленное на вашем поле для работы. Вы можете получить его здесь: https://dot.net.
Docker: Dotnet Core Global Tool
Вы можете легко интегрировать Roundhouse в существующую инфраструктуру Docker. Используйте Docker Compose, или просто вытяните его напрямую и запустите. Вы, вероятно, должны опираться на изображение и добавить свои собственные настройки, в зависимости от необходимости. Изображение Docker имеет глобальное распределение инструментов Dotnet Core Roundhouse на базовом изображении Debian 10 Linux.
- Тип
docker pull dotnetroundhouse/roundhouse
- Тип
docker run dotnetroundhouse/roundhouse
Источник
Это лучший способ добраться до кровоточащего края того, что мы делаем.
- Клонировать источник до своей машины.
git clone git://github.com/chucknorris/roundhouse.git
- Тип
cd roundhouse
- Тип
git config core.autocrlf false
чтобы оставить линейные окончания такими, какие они есть. - Тип
git status
. Вы не должны видеть никаких файлов для изменения. - Запустить
build.ps1
. Примечание. У вас должен быть GIT на пути (откройте обычную командную строку и введите GIT).
Развитие
Система сборки использовала Appercut, но это, вероятно, не будет поддерживаться в будущем. Мы постараемся стандартизировать больше инструментов построения «основного потока», таких как MSBuild и PowerShell. В исходном коде все еще есть некоторые остатки Appercut (особенно в папке build
), но в ближайшем будущем это, вероятно, будет удалено.
Чтобы работать с командной строкой, вам понадобится следующее на вашем пути:
- MS Build
- Gitversion (легче всего запустить Choco Установить Gitversion.portable. Вы работаете с шоколадом, не так ли?)
- Командная строка Nuget (лучше всего запустить Choco Install Nuget.commandline. Вы работаете с шоколадом, не так ли?)
ВАЖНЫЙ
Примечание. Если вы смотрите на источник - пожалуйста, запустите Build.ps1 перед открытием решения. Он извлекает keywords.txt
.
ТРЕБОВАНИЯ
- .Net Framework 4.6.1 (для версии полной фреймворки), или
- .NET CORE 2.1+ (для распределения ядра DotNet)
- SA доступ к SQL Server (для создания или удаления)
- изменить доступ к базе данных (для всего остального)
Пожертвовать
Принятые пожертвования - если вам нравится использовать этот продукт или он каким -то образом сэкономил время и деньги, пожалуйста, подумайте о пожертвовании.
Это помогает держать в обновленном продукте, оплачивает хостинг сайта и т. Д.
Выпуск заметок
Пожалуйста, смотрите релизы для полных журналов выпуска
1.0.2
Выпуск Bugfix
Исправлена ошибка в упаковке инструмента Dotnet Core и еще одна ошибка с путями папки журнала и толстой кишкой в строке подключения.
1.0.1
Исправлено слияние-ошибочное исправление
1.0.0
Кроссплатформенное ядро dotnet и dotnet Standard ++
Большой технологический выпуск. Roundhouse теперь работает на .net Core в дополнение к хорошей, старой .NET Framework.
0.9.1
Два ошибки
После выпуска 0,9.0 пользователи идентифицировали две значимые ошибки. Они зафиксированы в быстром выпуске.
(См. Выпуск для примечаний на полное выпуск)
0.9.0
Сосредоточьтесь на модернизации инструментов
Roundhouse был немного догоняет, чтобы сделать инструмент. Зависимость от .NET 3.5, старая цепочка сборки на основе Нанта и т. Д. Мы начинаем эту работу. Это еще не сделано, но на своем пути. По функциям не так много, чтобы похвастаться, но RH.Exe теперь должен быть в состоянии работать на Windows Server 2016 из коробки, потому что он больше не зависит от .NET 3.5.
(См. Выпуск для примечаний на полное выпуск)
0,8,8
Угоняйте запросы на выпуск (см. Выпуск для выпуска заметок)
0,8,7
МОЙ БОГ!! Это релиз круглого дома !!
Это было много времени. Я не хотел увязнуть в написании идеальных заметок о выпуске, поэтому я суммирую последние четыре года истории коммита. Я надеюсь, что никто, кто внес свой вклад, не чувствует себя сниженным моей неспособностью конкретно признать ваш вклад. Я собираюсь добиться большего успеха в будущем.
Улучшения
- Добавлена опция для запуска сценариев вне сферы транзакции
- Обрабатывать струны подключения Azure
- Правильно разделенные файлы, которые начинаются с разветвителя
- Уважение флага транзакции
- Улучшенная журнала
- Добавлен переключатель -WarnandIgnoreononetimescriptChanges
Исправления ошибок
- Только повторение ошибок подключения SQL
- Правильно обрабатывать ошибку подключения Postgres
0,8,6
Улучшения
- Используйте GIT в качестве официального репозитория. (Mpareja)
- Обновите Appercut до версии 1.4.2. (Ferventcoder)
- Восстановление базы данных: используйте CRESTORE конкретное время ожидания. (Icetoast - Pull #90)
- Игнорировать изменение формата EOL при обнаружении изменений сценария. (Лахма - тяга № 104)
- Включите заявления SQL Print в журнале отладки. (Ferventcoder - Выпуск № 68)
- Включите оператор, который запускается в журнале, когда возникает ошибка. (Ferventcoder - Выпуск № 66)
- Добавлен каталог "runbeforeup" в любое время. (CdRexle - Pull #51)
- Поддержка разрешения версии из текстового файла. (Mpareja - Pull #50, Pull #55)
- Добавьте опцию, чтобы выключить копирование сценариев в каталог «элементы». (Лахма - тяга № 47)
- WarnononetimescriptChange теперь приведет к повторному заведению единовременных сценариев. (Biggernoise - Pull #35)
- Обновить nhibernate до версии 3.3.2. (Drusellers)
- Обновление Fubucore, HTMLTAGS и structureMap. (Drusellers)
Исправления ошибок
- SQL Part Parser: обрабатывать комментарии к обучению, отдельные кавычки. (Mpareja - Pull #108)
- SQL Parath Parser: Fix Hang. (Andersmalmgren - Pull #100)
- Заменитель токена: сохранение случая непревзойденных токенов. (Mpareja - Pull #65)
- Сценарии SQL больше не усекаются до 4000 символов. (Charoco, Ferventcoder - Pull #61)
- Oracle: исправление обработки нулевых значений. (Rdingwall - Pull #59, выпуск № 58)
- Скрипт -версия файла: исправить исключение. (Майкл Кобали - выпуск № 68 в коде Google)
- Измените режим восстановления DB, только если явно сказал. (Ferventcoder - Выпуск № 69 в коде Google)
- Исправлена коммутатор командной строки отладки. (Ferventcoder - Выпуск № 40)
- Убедитесь, что версия 1.2.10 log4net используется при установке пакетов Nuget. (Ferventcoder - Выпуск № 41)
- Исправлено: улучшить ведение журналов исключений RH. (Torkelo - Pull #60)
Нарушение изменений
- Roundhouse изменит режим восстановления БД, если параметр режима
recoverymode
будет явно устанавливается на simple
или full
. В прошлом Roundhouse по умолчанию был full
, но когда -либо устанавливал режим восстановления при создании/восстановлении базы данных. Если вы зависели от Roundhouse для создания/восстановления базы данных для вас, и вы не хотите, чтобы сервер базы данных по умолчанию использовался, вам следует указать опцию режима восстановления.
0,8,5
- Исправлено: KeyNotFoundException в nhibernatesessionFactoryBuilder. См. [Выпуск 59] (http://code.google.com/p/roundhouse/issues/detail?id=59) для получения подробной информации. (R361)
- Поддержка SQLite! Полем См. Подробности № 21 (R360)
- Postgresql поддержка! Спасибо, Siimv! См. Подробности #30 (R359)
- Новый конфигурационный переключатель! SSISCALLSUBDirectoriesInsteadOftraverse - Все подпалки по миграции пересекаются по умолчанию и запускаются в порядке сценариев каждой папки. Эта опция запускает все элементы в подпапке одновременно. Спасибо, Siimv! См. Подробности № 31 (R359)
- Исправлено: транзакции не работают с восстановлением. См. Подробности № 26 (R357)
- Исправлено: Исправлена неприятная ошибка с SQL Server, где он пытается удерживать соединение (мешает режиму Drop/Create) и дает транспортную ошибку. См. Подробности № 12 (R357)
- Новая версия Resolver! - Номер сценария. См. Подробности № 25 (R356)
- Исправление: пользовательский сценарий должен разделить пакетные операторы. См. Подробности № 22 (R353)
- Новая папка миграции! RunafterCreateDataBaseFolderer - запускается только один раз и только после создания базы данных. В настоящее время это работает с ограниченным набором типов баз данных. Проверьте, если вы планируете использовать. См. Подробности № 20 (R351)
- Почти все сейчас заинтересованное. См. Подробности № 8 и № 15 (R350)
- Исправлено: не удается сбросить базы данных с помощью снимков. См. Подробности № 13 (R349)
- Создать базу данных пользовательский скрипт может обрабатывать пути файлов. См. Подробности № 17 (R348)
- Исправление: SQL Server 2000 должен создать все свои таблицы. См. Подробности № 18 (R346)
- Собрание RH теперь подписаны. См. Подробности № 14 (R342)
- Исправление: удалено временное местоположение журнала. См. Подробности № 7 (R340)
- Новый конфигурационный переключатель! DisableTokenReplacement - замена токена должна быть настраиваемой. Смотрите выпуск 56 для деталей. (R339)
- Исправление: заменчик токена должен заменить только для элементов, которые он находит. Смотрите выпуск 56 для деталей. (R339)
- Возможное нарушение перемены! Кодирование файлов всегда будет пытаться читать файлы как UTF-8, но вернуться к ANSI. Вы не ошибетесь, если кодитесь в ANSI. Смотрите выпуск 39 для деталей. (R337)
- Восстановление немного умнее перемещать файлы в местоположение по умолчанию, когда он не был указан. См. Подробности № 9 или выпуск 13 (R336)
- Исправлено: не запускайте замену токена на пустом тексте. См. Подробности #10 (R330)
- Пользовательские сценарии также запускают замену токена (R321)
- Новые переключатели конфигурации! Доступны два новых коммутатора - CommandTimeout и CommandTimeOutAdmin! (R329)
- Исправление: Migrate не пытается настроить Log4net сейчас (вызывает проблемы с библиотеками, которые это делают) (R326)
- Новая папка миграции! Индексы папки теперь доступны (R327)
- Новая папка миграции! Alterdatabase папка теперь доступна. См. Подробности № 6 (R324)
- Исправлено: включен образец для Oracle не работает. См. [Выпуск 55] (http://code.google.com/p/roundhouse/issues/detail?id=55) для получения подробной информации. (R322)
- Пользовательские параметры восстановления должны использовать замену токенов (R321)
- MySQL поддержка! Полем Спасибо, Диян. См. Подробности № 3 (R320)
0,8,0,300
- RH теперь делает замену токена в файлах SQL, используя '{{PropertyName}}'. См. [Выпуск 33] (http://code.google.com/p/roundhouse/issues/detail?id=33) для получения подробной информации. (R299)
- Всегда запускайте файлы, которые имеют «все время». во имя. Для получения подробной информации см. (R299)
- Круглый дом поставляется в DLL для внедрения. См. [Выпуск 44] (http://code.google.com/p/roundhouse/issues/detail?id=44) для получения подробной информации. У него есть полуфливный интерфейс - см. (Https://gist.github.com/977990) для деталей. (R299)
- Исправление: Файлы, конкретные среды, запускают другие среды, когда другие среды являются частью имени (т.е. Bobtest запускается с тестированием). См. [Выпуск 50] (http://code.google.com/p/roundhouse/issues/detail?id=50) для получения подробной информации. (R299)
- Папка, которая запускается после того, как другие папки сценариев в любое время добавляются. Смотрите #1 для деталей. (R297)
- Исправление сценария, изменяемое дважды, запуская ошибку каждый раз. Смотрите #5 для деталей. (R296)
- Образец теперь является проектом в папке релиза. (R287)
- Msbuild снова доступен. (R288)
0,7,0,281
- Исправлена несколько проблем с использованием строки соединения. Теперь вы должны иметь возможность поставлять только строку подключения, а не сервер/базу данных.
0,7,0,276
- Исправлена проблема с сопоставлением с столбцами идентификатора Roundhouse в таблицах отслеживания. См. [Выпуск 46] (http://code.google.com/p/roundhouse/issues/detail?id=46) для получения подробной информации. (R274)
- RestoreRompath может пойти по относительному пути. (R269)
- Теперь RH может обновить внутренние внутренние действия без взаимодействия с пользователем. См. [Выпуск 40] (http://code.google.com/p/roundhouse/issues/detail?id=40) для получения подробной информации. (R268)
- Задачи MSBUILD / NANT устарели и больше не подключены. Пожалуйста, используйте консоль и позвоните ее из ваших задач. (R268)
- RH обладает дифференцированной поддержкой с генерацией/обновлениями схемы Nhibernate (R267 - Branch, R268)
- Fluentnibernate и Nhibernate в настоящее время используются для внутренних групп (R267 - Branch, R268)
- SMO устарел и удаляется (R203 - Branch, R268)
- Драгоценные камни и обновления, о боже! (R259)
- SQL2000 на 2005 год теперь является плавным переходом. (R221)
- Исправление: SQL2000 - ScriptSrun теперь правильно ссылается на версию для иностранного ключа. (R220)
- Исправление: соединение должно быть инициализировано, прежде чем спросить базу данных, поддерживает ли она транзакции DDL. (R215)
- Исправлено: Имена пользователей в верхнем регионе при запуске с Oracle. (R200)
- RH имеет различную поддержку с Redgate. См. Пример проекта для деталей. (R197)
- Исправлено: Scrips Запустить ошибки, теперь обновляет номер версии и путь с зависимостью от запуска сценариев. Позволяет завершить его во время транзакционных прогонов и все еще захватывать ошибки. (R196)
- Исправление: захват ошибочные изменения в файлах DDL/DML (UP) в таблице ошибок запуска скрипта. (R191)
- Добавлена строка подключения администратора для выполнения административных задач. (R190)
Примечания к выпуску
Примечания при предварительном выпуске находятся на вики.
Кредиты
Appercut - Автоматические сборки (автоматическая сборка за 10 минут или меньше?!) Http://projectuppercut.org