在subversion中如何管理sql安装脚本后的运行?

时间:2009-01-21 01:14:25

标签: sql-server svn

我正在一家公司工作,每年都要为生产做几个版本,在每个版本的构建过程中,我们收集了一系列sql安装脚本,如表创建和数据端口。

目前的工作方式是,在发布到生产之后,我们分支,标记然后我们从subversion中删除所有1次脚本。

这似乎完成了工作,但对我而言似乎永远不是解决问题的正确方法。

您能想象在每个版本中删除所有源代码然后编写补丁以进行生产吗?

我看到的缺点是,如果你想引用旧脚本,你必须从subversion签出标签或分支。

我们的SVN Repo目前看起来像这样

svnrepo / mywebsite / SRC svnrepo / mywebsite /数据库/ storedprocs svnrepo / mywebsite /数据库/ installscripts

我认为在SVN中建模我们想做的更准确的方法如下。

使用svn:externals属性指向最新版本。然后在每次发布后都将其指向最新版本。

svnrepo / mywebsite /中继/ SRC / svnrepo / mywebsite /主干/ src目录/数据库/ installscripts / - > svnrepo / mywebsite /中继/数据库/ Release_3

svnrepo / mywebsite /中继/数据库/ RELEASE_1 svnrepo / mywebsite /主干/数据库/ Release_2 svnrepo / mywebsite /中继/数据库/ Release_3

使用此模型,我们不再删除任何sql脚本并使数据库开发人员能够检出svnrepo / mywebsite / trunk / database /并轻松查看已发生的所有数据库开发。

对我的想法,当前结构或管理这种情况的最佳方法有何评论?

由于

1 个答案:

答案 0 :(得分:1)

在subversion中同步数据库更改和代码更改很难

如果您可以选择从头开始构建数据库,则可以将整个DDL与代码一起放入存储库,然后您无需担心哪个更改与哪个版本一起发生。

观察你的情况我不认为你需要使用外部(它们会导致头痛)。您也不需要删除所有内容。签出分支并不困难(或者您可以使用存储库浏览器)。

您可以在发布时将旧的db版本放入单独的标记中,以便它们都在一个位置,数据库人员可以检出。如果你每年发布一次,那就不难了。

This question may also help