Ott*_*tto 49 git workflow ruby-on-rails schema.rb
我不希望添加schema.rb
到.gitignore
,因为我希望能够从该文件中加载一个新的数据库架构.但是,保持检查会导致各种各样的虚假冲突,这些冲突很容易通过新鲜的方式解决db:migrate:reset
.
基本上我想要一种方法:
将有一两个人负责更新schema.rb
并知道它是正确的.
有没有办法我可以吃蛋糕然后吃它?
Ada*_*der 21
我担心你所寻找的神奇解决方案不存在.此文件通常在版本控制中进行管理,然后对于版本行上的任何冲突,只需选择两个日期中的较晚者.只要您还运行所有相关的迁移,任何事情都不会以这种方式失去同步.如果两个开发人员对schema.rb的类似区域进行了修改,并且除了版本之外还会遇到冲突,那么您将面临正常的合并冲突解决方案,但在我看来,这些通常很容易理解和解决.我希望这会有所帮助!
您可以做的另一件事是使用:
git update-index --assume-unchanged /path/schema.rb
Run Code Online (Sandbox Code Playgroud)
这将使文件保留在存储库中,但不会跟踪更改.你可以随时使用以下方式切换跟踪:
git update-index --no-assume-unchanged /path/schema.rb
Run Code Online (Sandbox Code Playgroud)
对我来说非常有效的方法是删除 .gitignore schema.rb
,然后在每个开发人员 .gitignore 时重新生成它rake db:migrate
。
您仍然可以实现您想要的目标,而无需从 0 开始迁移,也无需冒着几年前迁移失败的风险,只需定期“汇总”迁移即可。您可以通过以下方式执行此操作:
rake db:migrate
schema.rb
中的内容ActiveRecord::Schema.define
def up
(覆盖已有的内容)现在,您的initial_schema 迁移是您新系统的起点,您不必担心schema.rb
可能无法正确解决的冲突。这并不神奇,但确实有效。
归档时间: |
|
查看次数: |
16187 次 |
最近记录: |