Android:控制数据库版本

时间:2016-07-27 05:59:33

标签: android database sqlite

当我正在处理涉及多个开发人员的项目时,我们正在使用DVCS,每个开发人员都将处理分配给他们的功能分支。话虽如此,功能分支从最新的develop分支分支出来。在develop分支中,DatabaseHandler中的db版本是

  

private static final int 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 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:1)

据我所知,每当两个开发人员处理同一个文件时,在合并分支时最后一个拉动更改将在该文件中产生冲突。因此,最后一个提取更改的开发人员可以在解决所有冲突后手动合并更改。

在你的情况下,如果开发版本为2(假设市场上的版本为2),则所有分支的下一个版本(市场apk)将为3,前提是该版本中包含所有功能。