注意:回报室被“遗弃”
Roundhouse是一个很棒的工具,我是几年来的主要维护人员之一,因为没有其他人维护它,它为我提供了巨大的价值。但是,该项目已经存在了很多年,并且已经开始产生一些技术债务,这些债务在试图介绍新功能或重构时很难处理。
经过一些想法后,我决定从零开始,并创建一个后继者到Roundhouse,从Modern .NET上开始(始于2021年的.NET 6,现在是.NET 8),跨平台,使用最新的第三方库可以连接到各种数据库等。我删除了Nhibernate作为依赖性,因为它仅用于创建版本工作表,并且似乎有点过分夸张,而且很难推动快速前进的技术。明智的依赖性如此之大。 Log4net也被Serilog替换。
Roundhouse当然将永远不会消失,源代码将留在这里。但是,目前尚无主动发展。我继续与继任者Grate一起旅行。现在是1.6版,被认为是稳定的。这是积极发展的。
请前往那儿,然后尝试一下。如果应该与Roundhouse几乎完全完整,如果您找到任何缺少的东西,请提交问题或提交PR。
项目回报室 - 数据库更改管理正确完成

执照
Apache 2.0-请参阅文档 Legal(仅在邮政编码中合法)
文档
Wiki
信息
概述
Roundhouse是一种自动化数据库部署(变更管理)系统,可让您使用当前的成语并获得更多收益。目前与Oracle 1 ,SQL Server(2000/2005/2008/Express),Access 1 ,MySQL,SQLite和PostgreSQL一起使用。还有其他数据库的未来计划。
它旨在解决维护问题和易于部署的问题。我们遵循与其他数据库管理系统(SQL脚本)相同的成语,但我们的不同之处在于,我们考虑了未来的维护问题。我们希望始终应用某些脚本(任何无状态的函数,视图,存储过程和权限),因此我们不必将所有内容都投入到更改脚本中。这旨在解决未来的来源控制问题。当您可以根据当前的源控制版本版本版本时,它的甜蜜有多甜?
1)仅在Windows上的全帧作品上,而不在跨平台.NET核心全局工具版本上。
起步从回旋处开始
下载
您可以从https://github.com/chucknorris/roundhouse/releases下载Roundhouse
您还可以从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软件包管理器控制台类型
install-package roundhouse
中 - 还有
roundhouse.lib
, roundhouse.msbuild
和roundhouse.refreshdatabase
巧克力
巧克力就像很适合,但适合窗户!这是将Roundhouse当前发布到您的机器上的替代方法!
- 类型
cinst roundhouse
- 然后,您可以在任何地方输入
rh [options]
dotnet核心全局工具(Windows,Linux,MacOS等)
- 键入
dotnet tool install -g dotnet-roundhouse
- 然后,您可以在任何地方输入
rh [options]
您可以在此处阅读有关背景中发生的情况的更多信息:https://natemcmaster.com/blog/2018/05/05/12/dotnet-global-tools/,但简而言之,它将二进制文件安装到您的~/.dotnet/tools
夹。
您的盒子上需要安装dotnet核心才能工作。您可以在这里获取:https://dot.net。
Docker:Dotnet核心全球工具
您可以轻松地将Roundhouse集成到现有的Docker基础架构中。使用Docker组成,或直接将其拉下并运行它。您可能应该基于图像,并及时添加自己的自定义。 Docker映像具有Debian 10 Linux Base图像中Roundhouse的dotnet核心全局工具分布。
- 类型
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)。
发展
构建系统一直在使用尺寸,但这可能无法维持。我们将尝试标准化更多的“主流”构建工具,例如MSBuild和PowerShell。源代码(尤其是在build
文件夹中)中仍然有一些命令,但这可能会在不久的将来被删除。
要使用命令行,您将需要以下路径:
- MS构建
- gitversion(最容易运行巧克力安装gitversion.portable。
- nuget命令行(最容易运行choco install nuget.commandline。您正在运行巧克力,不是吗?)
重要的
注意:如果您正在查看源 - 请在打开解决方案之前运行build.ps1。它提取了iLmerge-ing mysql dll所需的keywords.txt
。
要求
- .NET Framework 4.6.1(用于全框架版本)或
- .NET CORE 2.1+(对于dotnet核心分布)
- SA访问SQL Server(用于创建或删除)
- 更改对数据库的访问(对于其他所有内容)
捐
接受捐款 - 如果您喜欢使用此产品,或者它以某种方式节省了时间和金钱,请考虑捐款。
它有助于保留更新的产品,为网站托管付费。
发行说明
请参阅完整发行日志的版本
1.0.2
BugFix版本
修复了dotnet核心工具的包装中的错误,以及另一个带有日志文件夹路径的错误和连接字符串中的冒号。
1.0.1
合并释放修复
1.0.0
跨平台dotnet核心和dotnet标准++
大技术释放。 Roundhouse除了良好的旧.NET框架外,现在还使用.NET Core。
0.9.1
两个错误文件
在0.9.0发布后,用户确定了两个重要的错误。这些是在快速释放中固定的。
(有关完整发行说明,请参见发行)
0.9.0
专注于现代化工具
Roundhouse在工具方面有一些追赶。依赖于.NET 3.5,旧的,基于Nant的构建链等。我们正在开始这项工作。它尚未完成,而是在途中。功能的吹牛不是很多,但是RH.EXE现在应该能够在Windows Server 2016开箱即用,因为它不再依赖.NET 3.5。
(有关完整发行说明,请参见发行)
0.8.8
赶上拉的请求(请参阅发行说明)
0.8.7
我的天啊!!这是一个圆形释放!!
已经很长时间了。我不想陷入撰写完美的发行说明中,所以我总结了《犯罪历史》的最后四年。我希望没有人对我未能具体承认您的贡献感到沮丧。我打算将来做得更好。
增强
- 添加了以在交易范围之外运行脚本的选项
- 处理Azure连接字符串
- 正确拆分以分离器开头的文件
- 尊重交易标志
- 改进的记录
- 添加了开关 - warnandignoreoneonEnetimesscripsChanges
错误修复
- 仅在SQL连接错误上重试
- 正确处理Postgres连接处置错误
0.8.6
增强
- 使用git作为官方存储库。 (mpareja)
- 升级尺寸为1.4.2版。 (狂热的编码器)
- 数据库还原:使用还原特定的超时值。 (Icetoast-拉#90)
- 当检测脚本更改时,忽略EOL格式会发生变化。 (拉玛 - 拉#104)
- 在调试日志中包括SQL打印语句。 (FerventCoder-第68期)
- 当发生错误时,请在日志中运行语句。 (FerventCoder-第66期)
- 随时添加了“ runbeforeup”目录。 (CDREXLE-拉#51)
- 支持从文本文件解析版本。 (mpareja-拉#50,拉#55)
- 添加选项以将复制脚本关闭为“ itempran”目录。 (拉玛 - 拉#47)
- WarnonOnetimesscriptChange现在将导致更改的一次性脚本重新运行。 (Bightnoise-拉#35)
- 将NHibernate升级到版本3.3.2。 (drusellers)
- 升级fubucore,htmltags和structuremap。 (drusellers)
错误修复
- SQL批处理解析器:处理培训评论,单语引号。 (mpareja-拉#108)
- SQL批处理解析器:修复挂起。 (Andersmalmgren-拉#100)
- 代币替换器:保存无与伦比的令牌案例。 (mpareja-拉#65)
- SQL脚本不再被截断为4000个字符。 (Charoco,FerventCoder-拉#61)
- Oracle:修复零值的处理。 (rdingwall-拉#59,问题#58)
- 脚本文件版仪:修复异常。 (Michael Kobaly- Google代码上的第68期)
- 如果明确告知,仅更改DB恢复模式。 (FerventCoder- Google代码上的第69期)
- 修复了调试命令行开关。 (FerventCoder-第40期)
- 确保在安装Nuget软件包时使用Log4net的1.2.10版。 (FerventCoder-问题#41)
- 修复:改进RH例外的日志记录。 (Torkelo-拉#60)
打破变化
- 如果将
recoverymode
模式选项明确设置为simple
或full
,Roundhouse将更改DB恢复模式。过去,Roundhouse默认为full
,但只能在创建/还原数据库时设置恢复模式。如果您依靠Roundhouse为您创建/还原数据库,并且不希望使用数据库服务器默认值,则应指定恢复模式选项。
0.8.5
- 修复:NhibernateSessionFactoryBuilder中的KeynotFoundException。有关详细信息,请参见[第59期](http://code.google.com/p/roundhouse/issues/detail?id=59)。 (R361)
- sqlite支持! 。请参阅详细信息#21(R360)
- PostgreSQL支持!谢谢Siimv!请参阅详细信息#30(R359)
- 新配置开关! SearchAllSubDirectoriesInsteadOftraverse-所有迁移子文件夹默认情况下遍历并按顺序按每个文件夹的脚本运行。此选项同时运行子文件夹中的所有项目。谢谢Siimv!请参阅详细信息#31(R359)
- 修复:交易无法与还原合作。请参阅详细信息#26(R357)
- 修复:用SQL Server修复了一个令人讨厌的错误,该错误试图持有连接(干扰Drop/Create Mode)并给出传输错误。请参阅详细信息#12(R357)
- 新版本的解析器! - 脚本编号版本。请参阅详细信息#25(R356)
- 修复:自定义创建脚本应拆分批处理语句。请参阅详细信息#22(R353)
- 新的迁移文件夹! RunafterCreateat -atabaseFolder-仅运行一次,并且仅在创建数据库之后才运行。目前,这与有限的数据库类型相关。请测试您是否打算使用。请参阅详细信息#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)
- 修复:迁移不尝试立即配置log4net(导致带有库的问题)(R326)
- 新的迁移文件夹!现在可用索引文件夹(R327)
- 新的迁移文件夹! AlterDatabase文件夹现在可用。请参阅详细信息#6(R324)
- 修复:包括甲骨文的样本不起作用。有关详细信息,请参见[第55页](http://code.google.com/p/roundhouse/issues/detail?id=55)。 (R322)
- 自定义还原选项应使用令牌更换(R321)
- mysql支持! 。谢谢Diyan。请参阅详细信息#3(R320)
0.8.0.300
- RH现在使用'{{propertyName}}'在SQL文件中进行代币替换。有关详细信息,请参见[第33页](http://code.google.com/p/roundhouse/issues/detail?id=33)。 (R299)
- 始终运行具有“每次。”的文件。以名称。有关详细信息,请参见[第51条](http://code.google.com/p/roundhouse/issues/detail?id=51)。 (R299)
- Roundhouse将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 ID列的整理问题。有关详细信息,请参见[第46页](http://code.google.com/p/roundhouse/issues/detail?id=46)。 (R274)
- RestoreFrompath可以采用相对路径。 (R269)
- RH现在无需用户互动即可升级其内部设备。有关详细信息,请参见[第40版](http://code.google.com/p/roundhouse/issues/detail?id=40)。 (R268)
- MSBUILD / NANT任务已弃用,不再连接。请使用控制台并从您的任务中调用它。 (R268)
- RH具有NHIBERNATE架构生成/更新(R267 -Branch,R268)的支持差异
- 现在正在使用Fluentnhibrenate和Nhibrenate进行内部(R267-分支,R268)
- SMO被弃用和删除(R203-分支,R268)
- 宝石和建立升级,哦,我的! (R259)
- SQL2000到2005现在是一个平稳的过渡。 (R221)
- 修复:SQL2000 -ScriptSrun现在正确地引用了外键的版本。 (R220)
- 修复:应在询问数据库是否支持DDL事务之前初始化连接。 (R215)
- 修复:使用Oracle运行时大写用户名。 (R200)
- RH与Redgate有不同的支持。有关详细信息,请参见示例项目。 (R197)
- 修复:SCRIPS运行错误现在更新版本编号和路径,而路径与运行的脚本有关。允许在事务运行期间完成并仍会捕获错误。 (R196)
- 修复:捕获脚本运行错误表中DDL/dml(UP)文件的错误图形更改。 (R191)
- 添加了管理连接字符串以执行管理任务。 (R190)
先前的发行说明
先前的发行笔记在Wiki上。
学分
上线 - 自动化构建(在10分钟或更短的时间内自动化?!)http://projectuppercut.org