2009-07-27 8 views
27

svn 팀이 트리 충돌을 일으키기로 결정했으나 svn의 병합 기능을 완전히 손상 시켰습니다.svn merge 기능이 트리 충돌로 인해 깨졌습니다.

브랜치가 있으며 트렁크의 최신 변경 사항을 브랜치에 병합하고 싶습니다. 나는 이미 그런 병합을 한 적이 있지만, 이것은 나무 충돌 때문에 실패합니다. 여기에 명령입니다 :

$ svn --force merge -r 3185:3192 svn://chamar2/rx-services/SAMS . 
svn: Attempt to add tree conflict that already exists 

I합니다 (--force없이)이 병합을 시도 처음에만 트리 충돌을 생성하고 아무것도 병합하지 않았다. 이제는 위의 메시지를보고합니다.

분기 작업 복사본에서 svn status을 수행하면 트렁크에 병합되지 않은 변경 사항이있는 모든 파일이 표시됩니다. 물론, 내 지사의 목적은 트렁크에 아직없는이 변경을 수행하는 것입니다.

그들이 이것을했을 때 그들은 무엇을 생각하고 있었습니까?

나무 충돌을 일으키는 원인이 무엇인지에 대한 유용한 정보를 찾지 못했으며 svn이 이러한 작업을 수행 한 지금도 계속 작업 할 수 있습니다.

svn이 트리 충돌을 잊어 버리고 예전처럼 병합을 수행 할 수있는 방법이 있습니까?

저는 1.6 클라이언트와 오래된 svn 서버 (아마 1.3.1)를 사용하고 있습니다.

+2

SVN이 트리 충돌을 기능으로 추가하지 않았습니다. 그들은 개정 통제의 본질에 내재되어있다. 이제는 SVN이 트리 충돌에 대한 작업 처리 및/또는 메시징을 수행한다는 점을 알 수 있지만 적어도이를 감지하고 진행 상황을 알려줍니다. –

답변

12

parent/trunk/디렉토리 대신 merge 소스로 parent/디렉토리를 선택했기 때문에 문제가 발생했습니다. 사용자 오류 였지만 트리 충돌 메시지가 혼동 스럽습니다. svn이 방금 전진하여 병합을 완료했다면 즉시 문제를 보았을 것입니다.

트리 충돌은 익숙해 진 새로운 메시지 의미 체계를 도입했습니다.

나무 충돌에 관한 거북이 문서에 대한 포인터를 보내 주셔서 감사합니다. 그것은 지점에서 작동하는 주소를 본 유일한 문서입니다. 주어진 예제는 브랜치에서 수정 한 파일에 트리 충돌이 발생한 이유를 설명하지 않습니다. 트리 충돌 메시지는 익숙해 질 것입니다.

대부분의 경우 트리 충돌이 해결 된 것처럼 보입니다. 이러한 경우 트리 충돌은 단순한 노이즈처럼 보입니다.

Mark Phippard는 구형 서버 버전이 트리 충돌을 일으키지 않는다고 말합니다. 병합 추적 지원을 원하고 서버가 1.5 이전 인 경우 서버를 업데이트해야합니다. 분명히 추적 나이가 SVN 서버에서 누락 된 유일한 것입니다 병합 :

http://eclipse.open.collab.net/ds/viewMessage.do?dsForumId=62&dsMessageId=332448 
+1

트리 충돌 : 디렉터리를 각 하위 디렉터리가있는 텍스트 파일로 생각하십시오. 이제 파일에서 행을 추가 및 삭제하고 병합하면 충돌이 발생합니다. 이것은 정확히 트리 충돌로 발생합니다. 즉, 병합 편집기가 존재하지 않는다는 것입니다 (분명히 대답은 dir을 올바른 위치에 복사하고 해결 된 것으로 표시 함). – gbjbaanb

2

나는 1.6 클라이언트와 1.3 서버 사이의 잘못된 상호 작용을 관찰하고 있다고 생각합니다. 트리 충돌 감지는 1.6의 새로운 기능입니다. 또한 병합 지원이 1.5로 변경되었습니다 (그리고 훨씬 더 유용 해졌습니다).

서버 및 저장소 형식을 1.6으로 업그레이드하려고 시도하는 또 다른 방법은 1.5 (트리가 충돌하지 않음) 또는 1.4 (및 새 병합이 아닌) 클라이언트를 사용하는 것입니다.

다시, 이것은 ... 모두 추측 정말 유용하지 않을 수 있습니다

+0

나는 나의 클라이언트를 다시 1.5로 다운 그레이드하려고 생각했지만 svn은 새 버전마다 작업 카피 형식을 바꾸는 불쾌한 습관을 가지고 있었고 나의 1.6 작업 복사본은 1.5 클라이언트와 작동하지 않을 것이다. 클라이언트를 다운 그레이드하고 새 체크 아웃을해야 할 수도 있습니다. –

10

SVN : 당신이를 한 후 때문에 이미

서브 존재 트리 충돌을 추가하는 시도는 불평 병합을 생성 한 병합을 수행하면 은 다시 동일한 병합을 수행했습니다. SVN은 충돌을 추가하려고 시도했지만 충돌이 이전 병합 작업에 의해 이미 생성 된 것으로 나타났습니다. 따라서 경고를 올바르게 출력합니다.

병합 작업을 수행 한 결과가 만족스럽지 않으면 을 시도하기 전에 먼저 로컬 변경 사항을 되돌려 야합니다.

원본 트리 충돌에 관해서는 이전 클라이언트와 동작이 다른 이유와 그러한 충돌을 해결하는 방법을 이해하려면 svn 설명서에서 section on tree conflicts을 읽어야합니다. tortoiseSVN 설명서도 좋은 topic on tree conflicts 있습니다.

+4

방금 ​​"이미 존재하는 트리 충돌을 추가하려고했습니다"라는 새로운 병합을 수행했습니다. "스풀 REPORT 요청 응답을 읽는 중 오류가 발생했습니다." – fiddlesticks

+2

-1 : 이전 병합이없는 새로운 병합에서이 오류가 발생합니다. 나는 그것이 문제를 일으키는 동일한 병합에서 두 개의 나무 충돌이라고 믿는다. – darreljnz

-1

이봐, 난 정확히 같은 문제가 있었다 얘들 아, 내가 SVN 병합을하려고 한 트리 충돌합니다. Laurynas가 절대적으로 옳았다는 것이 밝혀졌습니다. svn 저장소가 이전 버전 이었기 때문에 발생했습니다. 서버에서 나는 {repopath} \ db \ format 디렉토리에 들어가서 "2"라는 형식 파일 안에 들어갔다.

은 내가 한 모든 꽤 고통이었다

svnadmin upgrade {repopath} 

을했다.

내가 병합 추적을 사용하려고하자, 더 이상 나무 충돌이 발생하지 않았습니다. 팁 고마워!