2010-03-02 2 views
3

으로 파일을 대체하십시오. 파일을 최신 ervision으로 교체하도록 설정할 수있는 Subversion 속성이 있습니까 (diff를 수행하지 않고 충돌을 일으킬 수없는 경우). 병합)?Subversion 병합 : 병합을 수행 할 때 항상 새 수정본

내가 언급 한 파일 집합은 C# 프로젝트 파일 (* .csproj)입니다. 이 파일들은 항상 충돌을 일으킨다. 나는 병합을 할 때이 파일들이 항상 새로운 버전으로 업데이트되도록하고 싶습니다.

+5

와우, 활성화하려는 믿을 수 없을만큼 위험한 기능입니다. 확인하지 않고 변경 사항을 자동 삭제합니다. 전복이 당신에게 갈등을주고있는 이유가 있습니다 - 그 문제를 해결하고이 문제는 사라질 것입니다. – Bevan

+2

갈등이 자주 발생하는 이유를 알고 있습니까? 우리의 환경에서 두 개발자가 같은 .csproj 파일을 동시에 변경하는 경우는 거의 없으며 일반적으로 충돌이 발생하여 신중하게 병합해야합니다. –

+0

나는 왜 내가 자주 갈등을하는지 모른다. 일부 파일을 삭제/추가 할 때 svn merge가 충돌을 일으킬 수 있습니다. – David

답변

3

예.

svn merge에 대한 옵션으로 --accept theirs-full을 지정하면 변경 사항을 저장소 측에서 얻고 변경 사항이 있으면 충돌이 발생할 수 있습니다.

편집 : 두 번째 생각에, 나는 당신이 아마 이것을해서는 안된다. 이 작업을 수행하는 권장 방법은 SVN FAQ을 참조하십시오.

+0

Avi에 감사드립니다. 그러나 어쨌든 내가 켤 수 있습니다 - 특정 확장자를 가진 파일을 허용합니까? – David

+0

죄송합니다, 어떤 것도 모른다. 물론 파일을 개별적으로 병합 할 수는 있지만 자동화하기가 다소 어려울 수 있습니다. – Avi

0

이상적으로는 컴파일 할 소스와 필요한 라이브러리 만 프로젝트 파일을 커밋하지 않는 것이 좋습니다. 그런 다음 프로젝트 파일을 svn : ignore에 추가하면 더 이상 걱정할 필요가 없습니다.

프로젝트의 다른 개발자는 자유롭게 기존 작업 영역을 중심으로 C# 프로젝트 파일을 만들고 컴파일하도록 설정하고 빌드를 손상시키지 않고 원하는 프로젝트 설정을 로컬로 수정할 수 있습니다. C# 프로젝트 파일은 약간 성가시다. 그러나 이것은 여전히 ​​최악의 10-15 분 작업이며, 한 번만 수행하면된다.

+1

Visual Studio C# 프로젝트 파일에는 원본 파일 목록 이외의 많은 항목이 포함되어 있습니다. 소스 제어에서 벗어나게되면 다른 개발자가 코드에서 다른 결과를 얻음으로써 많은 "작업 내 작업"오류가 발생할 수 있습니다. – Bevan

+0

프로젝트 참조가 프로젝트 파일에 있다고 생각합니다. 프로젝트 파일을 커밋하지 않으면 참조를 관리하는 것이 더 힘들다고 생각합니다. – David

0

자동으로 svn/tortoisesvn이 (가) 병합 충돌시 자동으로 "동의 함"을 받도록하는 방법을 모르겠습니다. 그것을 수동으로하는 것은 어떻게 내가 항상 bunk merge-conflict를 처리했는지입니다. TortoiseSVN을 사용하면 Tortoise에게 '자신의'파일로 회전하여 변경 한 내용을 지우는 방법으로 충돌을 해결할 수 있어야합니다.

1

우리는 몇 가지 파일 유형에 배타적 잠금을 가지고 있는데, 하나는 cproj 파일입니다. 우리는 또한 devs가 최소한의 시간 동안 잠금을 유지하는 작업 방식을 사용합니다. 즉, 클래스를 추가 한 다음 잠금을 잡고 비어있는 클래스 스텁 (컴파일)을 추가 한 다음 릴리스합니다. 나는 Subversion의 독점적 인 자물쇠를 많이 쓰고 있지만, 중소 규모 프로젝트에서는 꽤 잘 돌아 간다. 큰 프로젝트까지 확장하고 싶지는 않습니다.

관련 문제