2013-06-13 2 views
1

중앙 자식 레포에서는 특정 파일을 repo에 푸시 할 때 변경 사항을 무시해야합니다. 나는 전체 푸시를 거부 (실패)하고 싶지는 않지만 단순히 변경 사항을 무시하십시오. 일부 변경 사항을 단순히 걸러 낼 수있는 git hook이 있습니까?특정 파일에 대한 변경 사항을 자동으로 무시하기위한 Git 서버 후크

나는 filters을 사용하는 것에 대해 생각했지만, "맨손"으로 중앙 repo에 익숙해 질지 확신하지 못합니다. 예를 들어 작업 복사본이 없습니다.

세부 정보 : this과 비슷한 시나리오에서 수십 명의 개발자가 해당 파일을 변경하고 있습니다. 중앙 저장소에 git update-index --assume-unchanged을 사용해 보았습니다.하지만 "누락 된"dev에 의해 수행되는 모든 푸시에 의해 재설정됩니다. 그러면 dev에있는 나머지 devs로 전달됩니다. 한 번에 모든 개발자의 repos를 변경할 수는 없습니다. 중앙 repo에서 변경 한 다음 해당 파일의 변경 사항을 무시하고 싶습니다.

답변

0

이것은 기술적으로 가능하지만 엄청난 실용적인 번거 로움이 있습니다. 마치 서버가 자체 서버와 완전히 다른 기록을 보유하고있는 것처럼 보입니다. 사용자는 필터 된 기록을 필터링되지 않은 기록과 병합하고, 푸시가 푸시에 의해 필터링되면 결국 이야기가 반복됩니다.

이런 이유로 일반적으로 후크를 거부하거나 모든 개발자가 비교할 수있는 사전 커밋 후크를 설치하는 것이 좋습니다. 문제의 파일 중 하나가 감동되었는지, git rev-list를 포함하는 것을 사용,

  • 확인 : 당신이 고통을 즐길 경우

    는, 여기에 작업을 수행하는 방법의 개요입니다 어쨌든/업데이트 후크를 미리받을 수 있습니다. 그렇지 않다면, 다음 단계는 꽤 고통 스러울 것이기 때문에 그냥 보석금을 내야합니다.

  • 푸시하기 전에 일시적으로 내역을 체크 아웃합니다 (git-new-workdir contrib 스크립트를 사용하여 가능할 수 있음).
  • 새로운 커밋 목록을 확인합니다.
  • 각각을 적용하고 문제의 파일에 대한 변경 사항을 즉시 수정합니다.
  • 임시 체크 아웃을 제거하십시오.
  • 분기를 업데이트하고 코드가 0이 아닌 코드로 후크를 종료하십시오 (이로 인해 사용자에게 오류가 표시되지만 함께 메시지를 보낼 수 있습니다). 이렇게하면 일반적인 푸시 프로세스가 지점 자체를 업데이트하고 노력을 취소 할 수 없습니다.
0

커밋 된 파일을 제외하면 해시가 변경되므로이 작업을 수행 할 수 없습니다. 나는 당신을 의미합니다 할 수 있지만 절대 원하지 않아요.

상황에 따라 가장 합리적인 해결책은 실제로 "다음 파일을 수정할 수 없습니다 : ..."와 같은 의미있는 오류가있는 파일을 수정하고 커미터를 교육하는 것입니다.