SVN 1.5.5가 저장소로 사용되는 환경에서 최근에 레거시 코드베이스로 작업하기 시작했습니다. 여기서 개발 팀은 버려진 SVN 브랜칭의 메커니즘에 어려움을 겪었습니다. Id는 적절한 경우 브랜치 연습을 유지하고 이전에 SVN을 사용해 본 경험이없는 몇 가지 어려움을 겪었다.SVN 1.5 변경되지 않은 많은 수의 변경되지 않은 파일과의 분기 병합
트렁크를 브랜치에 병합 할 때 변경되지 않은 많은 수의 파일이 수정 된 것으로 나열되고 충돌이 자주 발생하는 경향이 있습니다. SVN은 파일 자체가 혼재 된 부분으로 고발을 표시합니다. 아무도 실제로이 파일을 편집하지 않았기 때문에 정확한 버전을 선택하기 쉽고 계속 진행하지만 개발자에게 프로세스에 대한 불안감이 여전히 남아 있습니다. 그런 다음 브랜치를 다시 트렁크에 병합 할 때 아무도 편집하지 않은 동일한 파일 집합이 충돌합니다. 이것은 svn 병합 알고리즘이 분기 또는 트렁크 중 하나 또는 둘 모두에서 파일이 합법적으로 편집 될 때 생성되는 것으로 유명하다는 다른 성가신 충돌에 추가됩니다.
일반적으로 as is done in this guide으로 분기하고 병합합니다. 그러나 저장소와 직접 상호 작용할 12-15 명의 개발 팀원이 있으며, 모든 사람이 "모범 사례"를 100 % 따르도록 보장 할 수는 없습니다. 또한 지난 8 년 이상이 프로젝트에 많은 다른 개발자들이있었습니다.
아무도 편집하지 않은 파일에 대해서도 svn mergeinfo에서 많은 충돌이 나타납니다. 이런 일이 발생할 때마다 완전히 다른 파일 세트가 있지만 언제든지 분기가 발생하도록 보장됩니다. 지점을 만든 이후로 시간이 지남에 따라 더 많은 갈등이 발생합니다.
"--dry-run"옵션을 사용하면 충돌하지만 편집되지 않은 파일이 종종 예측 가능합니다. 경우에 따라 "--dry-run"을 사용하면 예기치 않은 충돌이 표시되지 않지만 동일한 병합 명령을 실행하면 변경 사항이없는 약 45 개의 파일이 충돌하게됩니다. 내가 'svn의 propget SVN : mergeinfo'실행하면
내 트렁크의 루트에, 나는 같은 branchnames 그들이 커버 버전 번호의 큰 목록을 얻을 : 같은
/branches/5###_active_feature:27629-27780
/branches/7###_auto_friend_feature:43686-43693
/branches/7###_mobile_navigation:45430-45690
/branches/8###_tracking:44442-44719
/branches/9###_video_module:45388-45418
/branches/9###_episode_guide:45233-45287
...
/branches/11###_redesign:28289-28395,46973-48171
54 라인, 합계. 저것은 propget mergeinfo의 예상 출력입니까? 분기 목록일까요?
나는 무엇인가가 고장 났다고 생각하며, 이것은 겉보기에 기본 방식으로 분기/합병 할 때 예상되는 결과 일 수 없다. 나는 SVN을 2007-08 년부터 1 년 넘게 사용했고, 결코이 정도의 문제는 없었습니다. 그러나, Im는 해상도를 찾기 시작할 곳을 잘 모르겠습니다. 일부 동료와 나는 다음을 고려했습니다 :
우리의 svn 버전 (1.5.5)이 도청되었습니다. 우리는 업그레이드가 필요합니다. 일부 관료주의와 싸울 필요가 있지만 너무 고통스럽지 않아야합니다.
저장소의 기록에서 svn mergeinfo가 손상되었거나 수동으로 편집되었습니다. 이것을 확인하는 방법이 있습니까? 만약 그렇다면 그것을 해결할 방법이 있습니까?
리포지토리 내역의 어느 시점에서 어떤 방식 으로든 "손상"되었습니다. 여기서 어떻게 진행해야할지 모르겠다.
다른 누구에게도 비슷한 문제가 있습니까?문제가 수정되지 않은 파일이 충돌로 표시되지 않도록 수정하고 팀에서 코드베이스의 무작위 문제를 걱정하지 않고 다시 분기를 계속 사용할 수 있습니까?
은 (공식적으로, 자식로 전환하는 장기 프로젝트가 불행하게도, 당분간 SVN 함께 붙어 있었다..)
DVCS와 여전히 SVN 일부를 사용할 수 있습니다 (필요한 단계) 훨씬 쉽게 병합을 얻을 것이다 브릿지 (git-svn 또는 hgsubversion) –