2009-01-21 64 views
1

我正在一家公司每年都要进行多次发布生产,并且在构建每个发行版期间,我们收集了1次SQL安装脚本(如表创建和数据端口)的集合。如何管理你的运行一旦sql安装脚本在颠覆?

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

这似乎使工作完成,但对我来说,它似乎从来没有像解决问题的正确方法。

你能想象一下,在每个版本中删除所有源代码,然后编写用于生产的补丁程序吗?

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

我们SVN回购目前看起来是这样的

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

使用这个模型,我们不再SVN删除任何SQL脚本,使数据库开发人员能够检查出svnrepo/mywebsite /主干/数据库/并轻松查看所有发生的数据库开发。

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

感谢

回答

1

同步数据库更改和代码的变化颠覆很难

如果你从头开始建立数据库,你可以把整个DDL到存储库中的代码一起的选项,那么你不需要担心哪个版本会发生哪些更改。

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

您甚至可以在发布时将旧的db版本放入单独的标签中,以便它们都放在一个地方,数据库人员可以检出。如果你每年要发布一次,这并不难。

This question may also help