首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在git中管理schema.rb的首选方法是什么?

在git中管理schema.rb的首选方法是什么?
EN

Stack Overflow用户
提问于 2009-04-10 14:48:08
回答 8查看 17.5K关注 0票数 51

我不想将schema.rb添加到.gitignore中,因为我希望能够从该文件加载新的数据库模式。然而,保持它的签入会导致各种虚假的冲突,而这些冲突很容易通过新的db:migrate:reset解决。

基本上,我想要一种方法:

  1. 将schema.rb保留在存储库中,用于部署时数据库设置
  2. 将schema.rb保留在'.gitignore‘中,用于常规开发

会有一两个人负责更新schema.rb,并知道它是正确的。

有没有办法让我既吃蛋糕又吃蛋糕?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2013-07-30 02:29:48

对我来说,真正有效的是删除和.gitignore schema.rb,然后在他们rake db:migrate时为每个开发人员重新生成它。

通过定期“汇总”迁移,您仍然可以实现您想要的迁移,而不需要从0开始迁移,也不会冒着多年前迁移失败的风险。您可以通过以下方式完成此操作:

  1. 使用there)
  2. Delete运行所有未完成的迁移ActiveRecord::Schema.define block中的迁移内容
  3. 将其粘贴到initial_schema迁移中的def up (覆盖已存在的内容

中的所有其他迁移

现在,您的initial_schema迁移是新系统的起点,您不必担心schema.rb中可能无法正确解决的冲突。它不是很神奇,但它是有效的。

票数 2
EN

Stack Overflow用户

发布于 2009-04-10 17:24:36

恐怕你要找的神奇解决方案并不存在。此文件通常在版本控制中管理,对于版本行上的任何冲突,只需选择两个日期中较晚的一个即可。只要您还在运行所有相关的迁移,就不会以这种方式失去同步。如果两个开发人员对schema.rb的相似区域进行了修改,并且除了版本之外还存在冲突,那么您将面临正常的合并冲突解决方案,但在我看来,这些冲突通常很容易理解和解决。我希望这对你有所帮助!

票数 21
EN

Stack Overflow用户

发布于 2012-09-03 03:32:12

你可以做的另一件事是使用:

代码语言:javascript
复制
git update-index --assume-unchanged /path/schema.rb

这会将文件保留在存储库中,但不会跟踪更改。您可以使用以下命令随时切换跟踪:

代码语言:javascript
复制
git update-index --no-assume-unchanged /path/schema.rb
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/737854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档