2011-09-02 4 views
1

우리는 코드의 절반을 공유하고 git checkout과 동시에 개발하는 프로젝트가 여러 개 있습니다. 이제 문제는 모델이 너무 달라져 더 이상 개발을 위해 동일한 데이터베이스를 유지할 수 없을 때 발생했습니다. config/databases.yml에서 각 브랜치에 대해 데이터베이스 이름을 지정할 수 있지만 추적 할 수는 없습니다. 또 다른 방법은 예를 들어, 설정/branch.txt를 들어, 지점 이름을 가진 일부 외부 파일을 추적하고, 설정/databases.yml에서 참조하는 것입니다 :git 프로젝트의 특정 분기에 대한 서로 다른 데이터베이스

all: 
    doctrine: 
    class: sfDoctrineDatabase 
    param: 
     dsn: 'pgsql:host=localhost;dbname=<?php echo file_get_contents (realpath(__DIR__ . '/branch.txt')) ?>' 

을 어쨌든, 당신이 어떻게 해결합니까?

는 보통 (병합 문제를 처리하지 않고) 지점 사이에 다른 콘텐츠와 같은 파일을 관리 할 무엇
+0

지점을 명확히 할 수 있습니까? 영원히 완전히 분리되어있는 다른 버전입니까, 아니면 어느 시점에서 다시 병합하고 있습니까? 새로운 기능 개발을 위해 분기 한 다음 안정적인 릴리스로 다시 전환 하시겠습니까? –

답변

3

는 것입니다 :

  • 을 사용하십시오 merge driver (keepmine을 같이) 항상을 유지하기 위해 병합하는 동안 파일의 로컬 버전은

  • 또는 사용하십시오 filter driver와 :

    • ,393,457,는 체크 아웃, 템플릿 오른쪽 값,
    • 결합합니다
    • 는 'smudge'스크립트 (버전) (현재 브랜치의 이름과 같은) 환경에 따라 적절한 값을 다시 얻을 수있는 방법을 버전 완전한 config/databases.yml

smudge/clean

스크립트 및 템플릿 파일을 생성하기 위해 항상 지점 (NO 병합 문제)에 지점에서 동일합니다.
결과로 config/databases.yml은 버전이없는 개인용으로 남습니다.

관련 문제