2012-02-06 4 views
0

git-flow (ish) 유형의 방법으로 설정되는 git repo가 ​​있습니다. 우리는 3 개의 "mainline"브랜치 인 dev, release 및 production을 가지고 있습니다. 우리의 워크 플로우는 새로운 코드 조각이 2 주 주기로 된 dev에 들어가는 것입니다. 이 2 주가 지나면 dev는 "릴리스"되고, 테스트를 거치고 상황이 고정되지만 새로운 기능은 적용되지 않습니다. 그로부터 2 주가 지나면 릴리스가 배포되고 실제 브로드 캐스트가 아닌 프로덕션 지점이됩니다 (비상 사태 대역 수정을 제외하고)동일한 저장소에있는 다른 설정 파일 버전을 처리합니다.

이로 인해 우리는 데이터베이스의 3 가지 버전을 로컬로 사용할 수 있습니다 3 개의 다른 지점을 추적합니다. 우리는 많은 스키마 변동이있는 경향이 있으므로 dev 브랜치에서 발생하는 변경 사항이 릴리스 또는 프로덕션의 내용을 깨뜨릴 수있는 것은 매우 일반적입니다.

문제는 동일한 자식 저장소에서 3 가지 설정 파일 세트를 어떻게 관리합니까? 현재, 우리가하고있는 일은 .gitignoring하고 모든 사람의 컴퓨터에 코드베이스의 3 개 로컬 버전을 유지하는 것입니다. 그러나 이는 여러 가지 이유로 이상적인 것은 아니며 단일 버전의 repo를 사용하고 지점 간을 전환 할 수 있다면 좋을 것입니다.

브랜치에 파일을 체크하고 거기에 머물러있게 할 방법을 찾고 있지만 메인 라인 브랜치의 머지 (merge) 사이에 집어 들지는 않을 것이라고 생각합니다. 그렇게해서 dev에 버전이있을 수 있습니다. 하나는 배포본이고 나머지 하나는 마스터 버전 일 수 있습니다. 그러나 각각은 다른 것들과 격리 될 것입니다. 일종의 병합과 같은 .gitignore.

그게 가능합니까? 누구도 전에 이것에 빠졌습니까? (우리가 유일한 사람들이라고 믿을 수 없다) 어떻게 그것을 해결 했습니까?

답변

1

환경 구성에 대해 이야기하고 있다면 dev.config, test.config, production.config 등과 같은 각 환경에 대한 구성을 가질 수 있습니다. dev 브랜치에서 dev.config를 변경하면됩니다. 테스트가 완료되고 릴리즈 시간이되면 릴리스의 테스트/프로덕션 구성을 적절하게 업데이트하고 테스트 할 수 있습니다. 모든 환경에 대해 하나의 구성을 갖는 것은 이치에 맞지 않습니다.

+0

그래서 우리는 configs를 qa로 분할하고 적극적으로 개발해야하며 상당히 정기적으로 전환해야합니다. 3 ~ 4 개의 파일 이름을 바꾸지 않거나, 스위치를 사용하기 위해 내 hd의 다른 지점에있는 2 개의 repos가 있어야하는 방법 –

0

Manojlds가 맞습니다 : 분리 된 설정 파일이 가장 좋습니다 (이런 식의 병합 문제는 없습니다).

그것은 '얼룩'스크립트 (체크 아웃시 자동으로 생성하기 위해 콘텐츠 필터 드라이버로 오른쪽 마지막 (하지만 버전이 지정되지 않은) 설정 파일을 그 "값 설정 파일을"결합하는 것이 가장 좋습니다.

자세한 내용은 Something like gitignore, but not gitignore을 참조하십시오.

관련 문제