2012-01-12 4 views
12

병합 드라이버를 만들고 있습니다. 다음과 같이 내가 .gitattributes 파일을 정의 :git merge 드라이버를 저장소에 추가 하시겠습니까?

filename merge=mergeStrategy

다음과 같이 내가 $ PROJECT/.git/설정에 병합 드라이버를 만든

이 로컬 잘 작동

[merge "mergeStrategy"] 
    name = My merge strategy 
    driver = scripts/mergeScript.sh 

,하지만 난 병합 전략이 모든 사람에게 적용되도록이 병합 드라이버를 git 저장소에 커밋하고 싶습니다.

저장소 (또는 다른 Git 구성 옵션)를 저장소 자체에 추가 할 수있는 방법이 있습니까?

답변

9

당신은 간단하게 (물론, .gitattributes 파일과 함께) script/mergeScript 추가하고 커밋 (밀어) 수 일하는 것이

오래 같이

  • mergeScript가의 $PATH에 어떻게 든 병합 드라이버를 실행하는 사용자
  • mergeScript
  • mergeScriptchmod +x이 필요한 경우 (A C ...로 실행에 Perl 스크립트에 bash 쉘에서) 내용을 변경 나중에 당신을 허용, 연장없이, 실행 파일입니다. 로컬 당신을 위해 케이스를했다

    내가 '.'이 있다는 생각으로

는 (그는 주석에서 그들을 언급 한 바와 같이, 마지막 두 점을 들어, MestreLion 감사합니다) 당신의 $PATH,하지만 당신은 모두를 위해 그것을 추측 할 수 없습니다.

그러나, 로컬 설정 파일 (.git/config가)/밀어되지 않습니다 복제 된 (Alexandr Priymak과 코멘트에 밖으로 점), 그래서 사용자는 드라이버를 병합 정의의 선언을 복제해야합니다.
이것은 잠재적 인 "해로운"스크립트를 푸시하지 않고 다음 병합시 자동으로 실행되는 기본적인 안전 조치입니다.

+1

이것은 git 저장소의 구성 설정을 저장하지 않습니다. –

+0

@AlexandrPriymak : 좋은 지적입니다. 나는 그 중요한주의 사항을 답에 추가했다. – VonC

+1

'mergeScript.sh'를'chmod + x'를 사용하여 실행 파일로 설정하는 것을 잊지 마십시오. 그렇지 않으면 작동하지 않을 수 있습니다. 또한 ** 강하게 ** 실행 파일 확장명을 사용하지 말 것을 권합니다 **. 이름을 간단히'mergeScript'로 지정하십시오. 미래에는 쉘 스크립트에서 perl, python 또는 컴파일 된 C 실행 파일로 변경 될 수 있습니다. – MestreLion