2013-06-07 3 views
7

장고 프로젝트가 있고 자식을 사용하고 있습니다.병합 할 때 파일을 무시하지만 푸시에 포함 시키십시오.

각 지점마다 다른 settings.py 파일이 있어야합니다.

나는 settings.py를 .gitattributes with merge = ours에 추가했으나 충돌이 없다면 Git이 정상적으로 병합하기 때문에 작동하지 않습니다.

또한 settings.py를 .gitignore에 추가하는 것은 옵션이 아닙니다. settings.py에서 설정을 변경하면 동일한 분기로 푸시해야합니다.

병합 할 때 파일을 무시하지만 여전히 밀어 넣는 방법이 있습니까?

UPDATE :

나는 VonC의 솔루션을 시도하고 나는이 두 가지 설정 만들었습니다 settings_production.py 및 settings_development.py을.

그래서, gitpython를 설치 PIP와 같이, 내 settings.py에서 그것을 사용 :

from git import Repo 
import os 

r = Repo(os.path.realpath(os.path.dirname(__file__))) 
if r.active_branch.__str__(== 'master': 
    from settings_production.py import * 
else: 
    from settings_development.py import * 

그리고 그것은 괜찮 았는데. 내가 선호하는

+0

[브랜칭 : 릴리스/개발을위한 다른 설정 파일] (http://stackoverflow.com/questions/9636492/branching-different-config-files-for-release-development)의 가능한 복제본 –

답변

1

는 버전이 한 :

  • 템플릿 파일 settings.py.tpl
  • 지점 당 값 파일 : settings.py.branch1branch1에서, settings.py.branch2branch2에서, (의미 적없는 병합 문제 : 각 값 파일을
  • 현재 분기를 감지 할 수있는 스크립트가 올바른 값 파일을 가져 와서 최종 파일 settings.py (작업 트리에 비공개 : 버전이 지정되지 않음)

해당 스크립트는 체크 아웃시 올바른 설정 파일을 빌드 할 content filter driver을 통해 자동으로 호출 할 수 있습니다.

smudge

.gitattributes filesettings.py.* 파일이 'smudge'스크립트를 등록 할 수 있습니다.

0

(체크인에 'clean'스크립트에 대한 필요가 없습니다) 그건 하나 VonC의 솔루션, 또는 당신은 당신이 그것이 settings-branchX.py에서 수입 지점 특정 코드에 분기를 확인하여 settings.py 파일을 확인하십시오. 이 솔루션은 VonC에 매우 가깝지만 파이썬에서하고 있고 git을 망치지 않고있다.

당신은 그 gist에서 영감을 얻을 수 있습니다.

관련 문제