拉/子模块更新的Git通知

时间:2014-10-13 23:49:19

标签: mysql git go git-commit git-pull

我目前正在开发团队使用MySql,Go和前端的自定义模板引擎构建网站。我们使用Git进行版本控制。

在我编辑模型结构时,我偶尔会对数据库结构进行重大更改(我们在这里仍处于早期阶段)。我们在Go代码中构建我们的模式,所以我需要做的就是删除我的数据库,应用程序将在启动时重新创建一个具有正确结构的新模式。

然而,我的队友并不一定知道db的这些重大变化。他们执行pull或submodule更新,大多数事情都可以正常工作,但是当他们移动到网站的特定部分或使用特定功能时,他们会收到奇怪的数据库错误(如图所示,对吧?)。

我想通过某种方式通知我的队友数据库结构发生了变化,并且他们需要重建它。我显然可以将这些信息放入提交消息中,但是每次拉动后他们都需要检查日志。

当用户提取/子模块更新/检出特定提交时,是否有任何方法可以在控制台中显示消息?

1 个答案:

答案 0 :(得分:0)

您可以按照建议使用post-merge挂钩,但是:

  • 需要在所有客户端上部署
  • 如果拉动导致任何冲突,它将不会执行

集中式方法可能是最好的,您可以:

  • 一个版本化脚本,能够重建数据库,并使用消息“DB Vxxx rebuilt”创建新提交
  • 其中包含“Vxxx”的版本化文件,用于记忆或检测数据库的版本是否已更改
  • Git存储库托管服务器上的唯一pre-receive挂钩,如果没有提交的提交包含“DB Vxxx rebuilt”消息,并且匹配内容({{1},则所有开发人员都会拒绝其提交存储官方db版本的文件。

这样,开发人员必须确保他/她的历史记录包括已经重建的数据库的跟踪,其版本与最后修改了所述数据库结构的人所存储的版本相匹配。