在svn中,我们有一个使用hibernate等所有数据库逻辑的项目。但是,该项目取决于处于与代码匹配的特定状态的数据库模式。
此外,我们还将在配置目录中运行服务器的配置脚本。
如何在SVN中正确地建立项目结构来克服这个问题?
结构可能是这样的:
--DBHibernateProject
------trunk
------branches
------tags
--DatabaseScriptsProject
------trunk
------branches
------tags
--ConfigProject
------trunk
------branches
------tags
但是我们如何将数据库脚本项目与dbhibernateproject的1.0版联系起来呢?hibernate项目在maven repo中有一个可部署资产(jar),但db脚本没有,我想确保正确的db脚本与应用程序的正确版本相关联。
最佳答案
如果“project依赖于…”意味着“对于dbhibernateproject的每个修订版,我们必须使用databasescriptsprroject和configproject的预定义和固定修订版(它们在dbhibernateproject树中使用/引用)”,则始终可以使用纯subversion端的解决方案:externals和peg修订版
如果不了解源代码树结构,就不能说得更多:“依赖”和“也有配置脚本”不能(容易)转换为形式依赖,比如(我的糟糕重构)
dbhibernateproject的每个版本都必须与
DatabaseScriptsProject(用于此代码的正确架构)和
configproject(对于生成数据库架构的脚本,它是
由dbhibernateproject使用)
如果我的重建是正确的,在subversion样式(没有maven,这可能是我的错误)中,我将在dbhibernateproject tree中创建两个目录类型externals,它们分别引用databasescriptsproject和configproject trees中的“some tree in some state”