2012-08-31 24 views
0

當我爲使用大量新表的應用程序開發新功能時,表定義在開發幾天後纔會保持穩定。我想將這些不穩定的遷移文件檢入到源代碼控制中,而不是將它們應用到生產框中,當我部署相同代碼庫的錯誤修復時。有沒有辦法可以在開發人員計算機上應用遷移文件,但不能在生產環境中應用遷移文件?

有沒有辦法在遷徙路線遷移文件中開發機器上的應用而不是在生產盒子?

,所以我想避免功能分支,他們對我保持公正太多精力,我不喜歡功能分支。

回答

5

由於我使用Spring 3.1,我能夠利用彈簧的配置文件,以檢測該代碼是在什麼樣的環境來解決我的問題。這是解決方案是如何工作的。

  • db.migrations是哪裏生產的遷移去
  • dev.db.migrations是在發展遷移走。在一個新功能的初始開發過程中,當表格每隔一小時左右發生更改時,遷移文件將被添加到dev.db.migrations並簽入到源代碼管理中,並在開發人員計算機上創建。開發人員通常會丟掉測試數據庫並使用示例數據重新創建測試數據庫,因此在不斷更改dev.db.migrations中的文件時不會造成任何傷害,這也使開發人員有機會爲他們的更改獲取版本號,因爲他們會將他們的文件簽入到源代碼管理中。下面

爲我用彈簧簡檔飛路配置的XML。

<!-- =========================Configure Flyway ========================= --> 
<bean id="flyway" class="com.googlecode.flyway.core.Flyway" init-method="migrate"> 
    <property name="dataSource" ref="dataSource"/> 
    <property name="locations" ref="flyway-migration-locations" /> 
</bean> 

<!-- ========================= Development Profile Configuration ========================= --> 
<beans profile="development"> 
    <bean id="flyway-migration-locations" class="java.util.ArrayList"> 
     <constructor-arg> 
      <list> 
       <value>db.migration</value> 
       <value>dev.db.migration</value> 
      </list> 
     </constructor-arg> 
    </bean> 
</beans> 

<!-- ========================= Production Profile Configuration ========================= --> 
<beans profile="production"> 
    <bean id="flyway-migration-locations" class="java.util.ArrayList"> 
     <constructor-arg> 
      <list> 
       <value>db.migration</value> 
      </list> 
     </constructor-arg> 
    </bean> 
</beans>