2016-07-27 179 views
1

由於我正在開發一個涉及多個開發人員的項目,並且我們正在使用DVCS,因此每位開發人員都將在分配給他們的功能分支上工作。也就是說,功能分支從最新的develop分支中分支出來。在develop分支,在DatabaseHandler分貝版本是Android:控制數據庫版本

私有靜態最終詮釋DATABASE_VERSION = 2;

在我的功能分支中,我需要創建一個新表。所以我必須將版本增加到3,所以我可以在onUpgrade中包含以下內容來執行CREATE_APPLIANCE_TABLE聲明。

@Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     Log.d("Database onUpgrade", "Old is: " + oldVersion + ". New is: " + newVersion); 
     switch(oldVersion) { 
      case 1: 
      db.execSQL(CREATE_USER); 
     case 2: 
      db.execSQL(CREATE_APPLIANCE_ACTIVITY); // for version 3 
    } 
} 

我擔心的是,如果其他開發人員也需要創建一個新表,並且他執行與我相同的過程。他是否將其功能分支中的版本增加到3?如果是這樣,當我們中的任何一方或雙方關閉我們的功能分支並將其合併到develop時,我們的下一步應該是什麼?由於我們都編輯了同一個文件,因此可能會有衝突。那麼在develop分支中,版本停留在3還是?

在此先感謝。 :)

回答

2

因爲我理解你的問題。當你將合併你的代碼文件時,你可以把你所有和他的表格創建成一個數據庫版本。 就像是:

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    Log.d("Database onUpgrade", "Old is: " + oldVersion + ". New is: " + newVersion); 
    switch(oldVersion) { 
     case **N**: 
     db.execSQL(CREATE_YOUR_DATABASE); 
     db.execSQL(CREATE_HIS_DATABASE); 
} 
+0

那麼這是否意味着當我們的兩個文件都合併到'develop'時,數據庫版本將會是3?最初在'develop'中是2.但是在我們的個人功能上,我們增加到3個,因爲我們需要爲我們的功能添加1個新表。 –

+1

如果你們兩個都做到了3 - 它會是3.如果你做到了2,但他做到了3 - 它將會是3 –

+0

是的,我們都做了3以便執行onUpgrade。好的,謝謝你的幫助! –

1

據我瞭解,當兩個開發人員在同一文件上工作,在合併分支最後一個拉變化將獲得該文件中的衝突的時間。因此,在解決所有衝突後,最後一位要進行更改的開發人員可以手動合併這些更改。

在你的情況,如果版本上進行開發是2(市場APK假設版本號爲2),那麼下一個發佈版本(APK市場)的所有分支將是3,提供的所有功能都包含在該版本中。

+0

yeap,最後的開發者將看到代碼A(他)和代碼B(第一開發者),並且他必須將兩者合併到代碼C中。 –