2012-03-16 3 views
12

우리 팀은 TFS에서 Mercurial로 전환했습니다. 3 명이 작업하는 주요 프로젝트는 C#의 Windows Forms 응용 프로그램입니다. 간단한 변경 작업도 디자이너를 사용할 때마다 .Designer 파일로 재 배열하고 변경합니다. 두 사람이이 파일을 작업하면 간단한 변경 작업을하더라도 병합은 절대적인 악몽입니다. 이 문제를 해결할 수있는 쉬운 방법이 있습니까? TFS에서는 동시 편집을 사용하지 않으므로이 문제가 발생하지 않았습니다.Windows Forms .Designer 파일을보다 쉽게 ​​병합 할 수 있습니까?

+2

'* .Designer.cs '병합은 통증 기간입니다. – IAbstract

+0

웹 양식 디자이너 파일에 대해 동일한 질문을 할 것입니다. 잠금이 가장 좋은 해결책 일 수는 있겠지만 실제로하고 싶은 일이 모든 사람이 작동하도록 한 다음 나중에 병합하는 경우 매우 만족스러운 해결책은 아닙니다. – regularmike

답변

1

이러한 종류의 파일을 병합하는 것은 항상 고통 스럽습니다 ... 이것이 Mercurial에 대한 "잠금"확장이있는 이유이므로 필요한 경우 TFS와 동일한 워크 플로를 사용할 수 있습니다.

예를 들어 Martin Geisler가 작성한 Lock extension을 사용하여 .Designer 파일을 다음 push까지 잠그면 동시 병합을 피할 수 있으므로 병합도 방지 할 수 있습니다.

+1

아직도 OP가 요구하는 것이 아니지만 이것이 분기 간 병합 문제를 해결한다고는 생각하지 않습니다. –

+0

"잠금"은 적절한 솔루션이 아닙니다 (분산 환경에서는 실용적이지 않습니다). 문제는 Microsoft의 코드 생성기가 파일을 사람이 읽을 수있게 만드는 데 신경을 쓰지 않는 것입니다 (예 : 멤버 정렬). 정렬 된 방식으로 코드를 출력한다면 작은 행 속성 변경을 위해 수백 개의 행크를 정렬 할 필요가 없기 때문에 한 행만 변경되기 때문입니다. 솔직히 그들이 예측할 수 없을 정도로 그것을 구현 한 방법을 이해할 수 없습니다. 그들은 재미 또는 뭔가를 위해 RNG를 사용해야합니다 ... – bambams

1

문제는 코드 gen 엔진이 다른 순서로 코드를 생성 할 때입니다 !!! 병을 병합시킵니다.

WinForm (.NET) 디자이너 Swing (Java) 디자이너는 코드 엔진에 의존합니다.

ASP.NET의 designer.cs에는 영향을 줄 가능성이 낮은 배킹 필드 만 포함됩니다.

소스 제어를 유지할 필요가없는 obj/*. g.cs에서 WPF의 백업 필드가 생성되므로 병합 문제가 발생하지 않습니다.

관련 문제