CVS와 Subversion은 모두 손쉬운 병합 기능을 제공하므로 사용자가 수정 한 소스 파일을 업데이트하면 다른 사람이 동일한 파일에서 변경 한 사항을 병합 할 수 있습니다.CVS와 Subversion이 병합시 공백을 무시하도록 설정할 수 있습니까?
그러나 변경 사항과 다른 변경 사항이 호환되지 않는 경우 (일반적으로 코드의 동일한 부분을 모두 변경 한 경우) 충돌이 발생합니다. 두 가지 스트레치 소스 코드가 병합 된 파일에 포함되며 유지할 변경 사항을 수동으로 정렬해야합니다. 지금까지 괜찮아.
내 문제는 다른 개발 환경 (알고 있어야하는 경우 Netbeans 대 vi)을 사용하고 Netbeans에 코드를 다시 들여 쓰는 자동 들여 쓰기 기능이 있다는 것입니다. 따라서 변경 사항을 병합 할 때 가끔씩 간단한 들여 쓰기 변경으로 발생하는 엄청난 충돌이 발생하고 코드가 변경되지 않습니다. 종종 이러한 것들은 수 백 줄의 명백한 충돌을 만들어 수동으로 해결해야하지만 대개 몇 줄의 실제 변경 사항이 있습니다. 다른 사람의 편집자가 유닉스와 윈도우의 줄 바꿈을 바꾸거나 그 반대의 경우도 비슷한 상황이 발생합니다.
이렇게 두 버전을 비교할 때 이러한 "충돌"을 무시하도록 병합을 설정할 수 있습니까? 차이점은 --ignore-space-change 또는 -b 옵션을 가지고 있으며 본질적으로 cvs 나 svn에서 동일한 기능을 사용할 수 있기를 원합니다. 서로 다른 프로젝트에서 각 도구를 사용하므로 어느 쪽이든 둘 다에 대한 답을 얻게되어 기쁩니다.
두 최종 노트 :
- 명확하게 병합 프로세스는 공백의 버전이 병합 된 파일에 사용하기로하는 등의 임의의 선택을해야합니다. 나는 그것으로 좋습니다 - 우리는 나중에 언제든지 다시 포맷 할 수 있습니다.
- 나는 좀 더 훈련되고 더 자주 수표를 받음으로써 이러한 것을 피할 수 있습니다. 그러나 나는 완벽하지 않습니다. SVN에 대한
소리가 잘 들립니다. 그렇다면 다음 질문이 있습니다 : 누군가 공백을 무시할 수있는 합병을 알고 있습니까? 다른 질문에 나는 (meld, tortoisesvn) 좋게 보이는 몇 가지 시각적 병합 도구를 찾았지만 누구나 명령 행을 알 수 있습니까? –
당신은 winmerge (http://www.winmerge.org/)를 볼 수 있습니다. 그것은 opensource이고 tortoiseSVN에서 diff/merge 뷰어로 쉽게 사용할 수 있습니다. –
Linux에서이 문제를 조사해 왔으며 이것을하는 쉬운 방법이 없습니다. 예를 들어, "diff3"을 사용하도록 말할 수는 있지만 공백을 무시하는 매개 변수는 없습니다. 그러나 매개 변수를 전달하여 다른 "diff"프로그램을 사용할 수 있습니다. 그래서, 당신은 그것을 "diff -b"라고 부릅니다. 그러나 SVN 명령 (즉, svn (diff3 사용 (diff -b) 사용)))에서 재귀 적으로 (명백하게) 할 수는 없습니다. 필자가 조사 할 해결책은 "diff"를 사용하여 "diff"를 호출하여 공백을 무시하는 쉘 스크립트를 만드는 것입니다. 그런 다음 SVN에서 쉘 스크립트를 사용하게 할 것입니다. – UncaAlby