当我正在处理涉及多个开发人员的项目时,我们正在使用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,或者?
提前致谢。 :)
答案 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,前提是该版本中包含所有功能。