我正在一家公司工作,每年都要为生产做几个版本,在每个版本的构建过程中,我们收集了一系列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 /并轻松查看已发生的所有数据库开发。
对我的想法,当前结构或管理这种情况的最佳方法有何评论?
由于
答案 0 :(得分:1)
在subversion中同步数据库更改和代码更改很难
如果您可以选择从头开始构建数据库,则可以将整个DDL与代码一起放入存储库,然后您无需担心哪个更改与哪个版本一起发生。
观察你的情况我不认为你需要使用外部(它们会导致头痛)。您也不需要删除所有内容。签出分支并不困难(或者您可以使用存储库浏览器)。
您可以在发布时将旧的db版本放入单独的标记中,以便它们都在一个位置,数据库人员可以检出。如果你每年发布一次,那就不难了。