日期:2014-05-20  浏览次数:20668 次

如何把程序代码和数据库一起加入版本控制?
本帖最后由 gqqnb 于 2014-03-10 12:19:41 编辑
写一个带有数据库的程序很常见吧,我想要把这个项目归入版本控制系统。比如git好了。然后这个项目我要公开,所以发布到github上了。

但是程序所需要的数据库没在github里啊!协作者从仓库里更新了代码,一运行,诶,数据库没有!

假设我用mysql数据库。请问有什么好方法把数据库和程序代码一起发布到github,协作者从仓库一更新,就可以运行?

我曾经用visual studio写过asp.net。那时sql server数据库是以一个文件的形式,存放在项目目录里。我对这个项目启用版本控制,这个数据库文件也被列入控制范围。我把项目提交到google代码,数据库也传上去了。

但是mysql支不支持任意位置的数据库文件呢?
------解决方案--------------------
像楼主的情况,数据库不能移动,不能直接纳入版本控制系统。这种情况下,可以使用钩子。git和svn都有钩子。
svn有
# start-commit 提交前触发事务  
# pre-commit 提交完成前触发事务  
# post-commit 提交完成时触发事务  

你可以在pre-commit钩子中写脚本,比如把数据库一并提交,或数据库保存为sql文件然后提交。

svn没有更新前/后钩子。你可能需要自己另创一个脚本,先执行svn更新(从服务器更新最新的文件到本地),然后把本机数据库删除,替换为下载下来的数据库。

git的钩子多一点,有提交前钩子,也有更新后钩子。http://wendal.net/418.html