2014-08-29 2 views
4

자식 저장소에는 두 개의 파일이 있습니다 : config/conf.yaml.sample (내 자식이 추적하지만 내 프로그램이 시작될 때 무시됩니다) 사본은 config/conf.yaml입니다. git에 의해 무시되지만 프로그램이 시작될 때 읽혀집니다).각 브랜치마다 다른 설정 파일을 유지하십시오.

브랜치 A에서 브랜치 B로 전환 할 때 (항상 config/conf.yaml은 추적 할 수 없기 때문에) 동일한 구성 파일을 가지고 있습니다. 즉, 각 브랜치가 동일한 데이터베이스, 동일한 포트 등과 관련되어 있음을 의미합니다.

각 분기마다 다른 config/conf.yaml을 유지하여 분기를 변경할 때 변경되지만 git 추적 (예 : 데이터베이스에 액세스하기위한 이름과 암호가 포함되어 있음)을 원하지 않습니다.

어떻게하면됩니까?

+2

그래서이 파일을 추적하지 않고 어떻게 추적 할 수 있습니까? 파일을 추적 할 수없는 경우 분기를 변경할 때 파일이 변경되지 않습니다. – pjmorse

+0

* 각 브랜치에 대해 다른'config/conf.yaml'을 유지하고 싶습니다. [...] *'config/conf1.yaml'과'config/conf2.yaml'과 같은 다른 파일을 의미합니까, 아니면 다중 같은 파일의 버전? – Jubobs

+0

@Jubobs 동일한 파일의 여러 버전 (예 : databasename이 "test1"이고 databasename이 "test2"인 다른 버전). – wil93

답변

3

이 망할 놈의 post-checkout hook이 바로 골목까지 것 같다하십시오 git checkout가 worktree를 업데이트 한 후 실행하면

이 훅이 호출됩니다. 후크에는 이전 HEAD의 ref, 새로운 HEAD의 ref (변경 될 수도 있고 변경되지 않을 수도 있음) 및 checkout이 지점 체크 아웃 (분기 변경, 플래그 = 1)인지 여부를 나타내는 플래그 또는 세 개의 매개 변수가 제공됩니다. 파일 체크 아웃 (인덱스에서 파일 검색, 플래그 = 0). 이 후크는 git checkout의 결과에 영향을 줄 수 없습니다.

--no-checkout (-n) 옵션을 사용하지 않는 한 git clone 후에도 실행됩니다. 후크에 주어진 첫 번째 매개 변수는 null-ref이며 두 번째는 새로운 HEAD의 참조이며 플래그는 항상 1입니다.

이 훅을 사용하여 저장소 유효성 검사를 수행하고 이전과의 차이점을 자동 표시합니다 HEAD이거나 다를 경우 작업 디렉토리 메타 데이터 속성을 설정하십시오.

다음 스크립트 (실행 가능이어야 함)를 시작해야합니다. 필요에 맞게 수정하고 .git/hooks/post-checkout으로 저장하십시오.

#!/bin/sh 
# 
# An example post-checkout hook script to perform an action conditionally on 
# the branch (if any) just checked out. 
# 
# Test whether a branch was just checked out 
if [ "$3" -eq 1 ]; then 
    # Save the value of HEAD (do not issue an error if HEAD is detached) 
    symrefHEAD=`git symbolic-ref --quiet HEAD` 
    if [ "$symrefHEAD" = "refs/heads/master" ]; then 
     # Do something useful for master, e.g. 
     # cp config/conf_master.yaml config/conf.yaml 
     printf " --- test: You just checked out master. ---\n" 
    elif [ "$symrefHEAD" = "refs/heads/develop" ] ; then 
     # Do something useful for develop, e.g. 
     # cp config/conf_develop.yaml config/conf.yaml 
     printf "--- test: You just checked out develop. ---\n" 
    else 
     # default case 
     printf "You just checked out some other branch.\n" 
    fi 
else 
    printf "No branch was checked out\n" 
fi 
관련 문제