我不想将schema.rb
添加到.gitignore
中,因为我希望能够从该文件加载新的数据库模式。然而,保持它的签入会导致各种虚假的冲突,而这些冲突很容易通过新的db:migrate:reset
解决。
基本上,我想要一种方法:
会有一两个人负责更新schema.rb
,并知道它是正确的。
有没有办法让我既吃蛋糕又吃蛋糕?
发布于 2013-07-30 02:29:48
对我来说,真正有效的是删除和.gitignore schema.rb
,然后在他们rake db:migrate
时为每个开发人员重新生成它。
通过定期“汇总”迁移,您仍然可以实现您想要的迁移,而不需要从0开始迁移,也不会冒着多年前迁移失败的风险。您可以通过以下方式完成此操作:
ActiveRecord::Schema.define
block中的迁移内容def up
(覆盖已存在的内容中的所有其他迁移
现在,您的initial_schema迁移是新系统的起点,您不必担心schema.rb
中可能无法正确解决的冲突。它不是很神奇,但它是有效的。
发布于 2009-04-10 17:24:36
恐怕你要找的神奇解决方案并不存在。此文件通常在版本控制中管理,对于版本行上的任何冲突,只需选择两个日期中较晚的一个即可。只要您还在运行所有相关的迁移,就不会以这种方式失去同步。如果两个开发人员对schema.rb的相似区域进行了修改,并且除了版本之外还存在冲突,那么您将面临正常的合并冲突解决方案,但在我看来,这些冲突通常很容易理解和解决。我希望这对你有所帮助!
发布于 2012-09-03 03:32:12
你可以做的另一件事是使用:
git update-index --assume-unchanged /path/schema.rb
这会将文件保留在存储库中,但不会跟踪更改。您可以使用以下命令随时切换跟踪:
git update-index --no-assume-unchanged /path/schema.rb
https://stackoverflow.com/questions/737854
复制相似问题