2011-11-18 3 views
3

svn : external 링크가있는 디렉토리 (직장에서 광범위하게 사용하는 디렉토리)가 있으면 브랜치간에 해당 디렉토리를 병합 할 때마다 디렉토리의 모든 파일에 새로운 svn : merge-info 속성이 적용됩니다.svn : svn : externals와 병합하면 svn : merge-info 속성 - 모든 솔루션이 대량 추가됩니까?

외부 링크가 병합에 의해 변경되지 않아서 svn이 자체 하위 트리 (관련이 있지만 Why would svn merge of a branch with no changes causes untouched files to modify svn:mergeinfo property과 같은 문제가 아님)를 계산하므로 추측 할 수 있습니다.

이렇게하면 실제 변경 내용이 모든 병합 정보 속성 변경 내용에 묻혀 변경 집합이 크고 거의 읽을 수 없게됩니다. (우리는 병합 이력과 외부가있는 지점을 사용하여 한 줄의 변경을 병합하면 500Kb의 차이가 발생할 수 있습니다.)

우리가 할 수있는 유일한 방법은 커밋하기 전에 svn : external 링크를 사용하여 하위 트리에서 병합 속성을 삭제하는 것입니다. 이렇게하면 --reintegrate를 사용할 수 없으므로 실제 서브 트리 병합이 발생하면 추적 할 수 없습니다.

누구에게 더 좋은 해결책이 있습니까?

+1

어떤 버전의 Subversion을 사용하고 있습니까? –

+0

은 1.6.15를 사용하고있었습니다. V1.7은이 문제를 해결합니다. – Malcolm

+0

나는 생각했다. 나는이 같은 문제가 있었고 정말 짜증났다. –

답변

3

svn : merge-info는 읽을 의도가 없지만 귀하의 문제를 이해합니다.

한 가지 해결책은 1.7로 업그레이드하는 것입니다 (서버와 클라이언트 모두). 1.7에서 merge-info에 대한 몇 가지 작업이 도움이 될 것입니다.

이미 병합 정보를 알고있는 것처럼 들리지만 어쨌든 몇 가지 추가 정보가 있습니다.

노드 (파일 또는 디렉토리)의 merge-info는 작업 사본을 통해 부모 (디렉터)에서 상속 된 다음 저장소로 전달됩니다. svn은 이 필요한 노드에만 병합 정보를 쓰려고 시도합니다. 즉 부모와 다른 위치에 있습니다.

노드에서 병합 정보를 막으려면 저장소 루트에 가능한 한 가깝게 병합하고 다른 병합이 발생했는지 확인한 다음 상위 디렉터리의 구멍에 병합을 시도하십시오. 이는 아무런 변화도 일으키지 않을 것이지만 병합 정보의 틈새를 채우면 Mergeinfo Elision이 더 효과적입니다.

일부 svn 버전이 병합을 수행 할 때 의도 한대로 작동하지 않는 것으로 나타났습니다. 1.6.6 (하나의 우분투 10.04가 있음)은 부분 병합을 할 때 잘 작동하지 않습니다.

+1

svn 1.7 클라이언트로 업그레이드하면 문제가 해결됩니다. 서버 업그레이드가 필요하지 않았습니다. – Malcolm