2016-07-27 4 views
1

여러 개발자가 참여하는 프로젝트를 진행하면서 DVCS를 사용하고 있으므로 각 개발자는 할당 된 지사에서 작업하게됩니다. 즉, 기능 브랜치는 최신 develop 브랜치에서 분기됩니다. develop 지점에서 DatabaseHandler의 DB 버전Android : DB 버전 제어

개인 정적 최종 INT의 DATABASE_VERSION = 2이고;

내 지사 지점에서는 새 테이블을 만들어야합니다. 그래서 버전을 3으로 늘려야하기 때문에 CREATE_APPLIANCE_TABLE 문을 실행하려면 onUpgrade에 다음을 포함시킬 수 있습니다.

@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

그렇다면 두 파일을 모두 '개발'에 병합하면 데이터베이스 버전이 3이 될 것입니다. 처음에는'개발'에서 2입니다. 그러나 우리의 개별 기능에서, 우리는 우리의 기능을 위해 1 개의 새로운 테이블을 추가해야하기 때문에 3으로 증가했습니다. –

+1

둘 다 3이라면 3이 될 것입니다. 3이 될 것입니다.하지만 2로 만들면 그는 3으로 만듭니다. 3 –

+0

그래, 우리는 모두 onUpgrade가 실행되도록 3으로 만들었습니다. 좋아, 도와 줘서 고마워! –

1

. 따라서 변경 사항을 가져온 마지막 개발자는 모든 충돌을 해결 한 후 수동으로 변경 사항을 병합 할 수 있습니다.

개발중인 버전이 2 인 경우 (시장 apk의 버전이 2라고 가정) 모든 지점에 대한 다음 출시 버전 (시장 apk)은 모든 기능이 해당 버전에 포함되어있는 경우 3입니다.

+0

yeap, 마지막 개발자는 Code A (his)와 Code B (첫 번째 개발자)를 볼 수 있으며 코드 C와 병합해야합니다. –