2010-01-22 1 views
5

Subversion을 사용하여 특정 분기의 수정 사항을 병합 할 때 파일의 하위 집합을 변경하지 말 것을 지정하는 방법을 찾고 있습니다. 같은 질문을하는 누군가를 발견했습니다. but for git.특정 파일의 충돌하는 병합에 대해 내 로컬 버전을 항상 선택하도록 Subversion에 알리는 방법은 무엇입니까?

내가 가지고있는 것은 Maven pom.xml 파일이다.이 파일은 브랜치에서 각 릴리스에 대해 브랜치를 생성하고 업데이트 할 때 설정된다. 변경 내용을 지점의 트렁크로 다시 병합 할 때이 파일의 변경 내용을 병합하지 않으려합니다 (버전 번호가 트렁크에서도 업데이트되므로 실제로 충돌이 발생합니다). git question에 대한 응답에서 제공된 것과 동일한 효과를 위해 Subversion에이 파일들에 대한 기반을 허용하도록 지시 할 수있는 방법이 있습니까?

다른 사람이 similar question을 요청했지만 질문에 잘못된 질문 (생성 된 코드)이있는 문맥에 넣었습니다.

답변

2

svn:mergeinfo 속성을 파일에 설정하여 스크립트를 변경하여 분기에서 변경된 내용을 병합하지 않아도됩니다. (http://svnbook.red-bean.com/en/1.7/svn.branchmerge.advanced.html#svn.branchmerge.advanced.blockchanges을 참조하십시오.)

maven 프로젝트를 병합 할 때 TortoiseSVN을 사용하고 릴리스 플러그인이 수행 한 pom에 대한 변경 사항 선택을 취소하여 버전 변경 사항을 병합하지 않습니다. 물론, 나는 또한 변경 사항의 대부분이 종속성 변경이므로 pom에 대한 다른 변경 사항을 병합하기를 원합니다. 트렁크가 새로운 종속성 갱신을 얻길 원합니다.

+0

"병합 만 기록"버튼을 누를 때마다 maven이 만든 커밋을 수동으로 병합하는 방법을 사용했습니다. 그렇게하면 나중에 그들을 조심 할 필요가 없습니다. –

1

파일이 항상 충돌 할 것이라는 것을 안다면 svn merge를 '--accept mine-full'옵션과 함께 실행할 수 있습니다. 그러면 분기에서 현재 버전을 받아들임으로써 모든 충돌을 해결할 수 있습니다.

편집 : 나는이 특정 파일에 대해 알고있는 스크립트를 갖고, 병합은 해당 파일의 내용을 되돌아갑니다 다음 이외의 다른 좋은 방법을 생각할 수 없다

. 이는 병합 할 때마다 수동으로 실행하는 것에 의존합니다.

또 다른 대안은이 파일을 소스 제어에 포함하지 않고 빌드의 일부로 자동 생성하고 각 분기의 버전 번호에 대한 정보를 다른 양식 (예 : LDAP 또는 MySQL)에 저장하는 것입니다. , 체크 아웃 또는 빌드 프로세스의 일부로 생성 할 수 있습니다. 이 방법을 사용합니다 (그러나이 변경 사항에서 병합하는 약간의 차이점이 있지만 파일 내용은 각 빌드에서 덮어 쓰여지므로 충돌에 대해서는 신경 쓰지 않습니다).

+0

그 문제는 병합되어야하는 다른 변경 사항이 있다는 것입니다. 저는 걱정할 필요가없는 설정을 원했습니다. –

2

내 프로젝트의 솔루션 :이 파일을 Subversion에 포함시키지 마십시오. 즉, svn : ignore에 포함 시키십시오.

파일을 공유하려는 경우 버전 제어에서 pom-example.xml과 같은 복사본을 가질 수 있습니다. pom.xml과 같은 중앙 파일의 경우 개발자는 새로 체크 아웃 한 후 실제 파일 이름으로 파일을 복사해야합니다.

관련 문제