2009-11-05 1 views
17

우리 프로젝트는 코드와 상당히 가까운 거리에서 진행되고 있습니다. (코드의 아주 작은 영역에서 많은 변화가 일어나고 있습니다) 우리의 기능 기반의 git 워크 플로우는 우리의 자바 코드에 정말 좋습니다.git feature branch workflow에서 xml/html을 처리하는 방법은 무엇입니까?

하지만 xml/html 자료가 실제로 제대로 작동하지 않습니다. 관련없는 간단한 변경 (주변 div를 추가하는 디자이너, 요소의 ID를 변경하는 개발자)은 정말 재앙적인 병합을 제공합니다.

이 문제를 처리하는 방법에는 몇 가지 옵션이있을 수 있습니다. 좋은 git xml 병합은 최적 일 것이며, xml/html 코드를 다른 형식으로 다시 포맷하는 데 제한을 두는 것입니다. 그런 가까운 곳에서 일하지 않으면 또 다른 (받아 들일 수없는) 선택이 될 것입니다.

이 문제를 어떻게 효율적으로 해결합니까?

답변

17

힘내 사용자 (예를 들어 모든 *.xml 파일) 경로 당 gitattributes를 통해 선택 드라이버을 병합 수 있습니다.

찾을 필요가있는 것은 XML 인식 병합 드라이버뿐 아니라 Git 규칙과 병합 드라이버 규칙을 변환하는 간단한 스크립트를 작성하는 것입니다. 예를 들어 XML::Merge Perl 모듈이 있습니다. XyDiff이 있지만 3 방향 병합이 부족한 것처럼 보입니다. (XML 양식의 경우에는 A Formal Investigation of Diff3 종이 (PDF)가 작동하지 않음)에 설명 된 것과 같은 diff에서 3 방향 병합을 수행하는 것으로 추측됩니다. Matching, diffing and merging XML 블로그 게시물 (또는 여기에 언급 된 기사)을 읽을 수도 있습니다.

또 다른 해결책은 (병합 충돌을. 그들은 바이너리 파일 WRT처럼 취급 될 것이다) XML 파일에 대한 해제 병합 속성에, 그리고 아마도 git mergetool를 통해 병합 충돌을 해결하기 위해 일부 그래픽 병합 도구를 사용합니다.

+1

나는 모든 종류의 선행/후행 공백을 무시하는 병합 (linebreaks 제외)이 충분히 잘 수행 될 것이라고 생각합니다. 내가 어떻게 이걸 이룰 수 있는지 아십니까? – krosenvold

5

xml 파일 병합과 관련된 병합 문제를 자동화 할 수 있다면 해당 해결 방법을 스크립팅 할 수 있습니다.
스크립트가있는 경우 병합 드라이버에서 일부 디렉토리에서만 xml/xhtml 파일에 맞게 스크립트를 호출 할 수 있습니다.

here (실제로는 단순함)은 병합 드라이버를 참조하십시오.

그런 식으로 남아있는 충돌은 병합 드라이버 스크립트가 해결하지 못했기 때문에 해결해야 할 합법적 인 병합 문제입니다.

관련 문제