2011-01-12 6 views
0

SVN 저장소에서 특정 "라이브러리"의 사본을 여러 개 체크 아웃했습니다 - 동일한 코드를 사용하는 각 업무 관련 프로젝트에 대해 하나씩 복사합니다. 저장소에 커밋 한 내용을 수정 했으므로이 변경 내용을 반영하여 나머지 프로젝트의 복사본을 업데이트하고 싶습니다.는 자신의 개정과 "충돌"을 예측합니까?

그러나, filename.rOLDREV 내가 진행하는 프로젝트 중 하나에 대한 변경의 소수를 거부 할 수있는 권리를 보유하고자하는, 그래서 파일 named asfilename.mine과의 충돌에 대한 경고를 얻을 수있는 방법이 있다면 그것은 좋은 것입니다 , filename.rNEWREV처럼 다른 사용자가 이러한 변경 사항을 커밋 한 것처럼 처리합니다. 그러나 영향을받는 모든 파일 (svn update)을 자동으로 업데이트하는 대신 이러한 변경 사항은 이미 저에게 저장소에 커밋되었습니다.

이것이 가능합니까?

답변

1

동일한 프로젝트를 여러 번 체크 아웃하는 대신 분기를 사용해야합니다. ,

repos 
    |-- trunk/ 
    |-- branches/ 
     |-- projectX 
     |-- projectY 
     `-- projectZ 

이의 당신이 기능을 개발한다고 가정 해 봅시다, 만 projectY에 추가하고 싶었 당신 branches/projectY에 트렁크에서 코드 merge 수 :

이 REPOS을 상상한다.

projectXprojectZ에 다른 기능을 포함하려면이 두 가지 분기 기능을 병합하십시오.

그런 식으로 각 프로젝트에 무엇이 들어가는 지 제어 할 수 있으며, 각 프로젝트에서 역사가 이어집니다.

+0

나는이 아이디어가 마음에 든다. 나는 아마 이것을 미래에 할 것이지만'svn update'로 업데이트를하기 전에 업데이트가 소급해서 볼 수있는 방법이 있습니까? 감사합니다 ... – hatmatrix

+0

@crippledlambda 무슨 뜻인지 확실하지 않습니다. 병합 후 커밋 전에 변경 내용을 알 수있는 방법을 알고 싶습니다. 또는 작업 복사본을 업데이트하기 전에 리포지토리 서버의 변경 사항을 확인하십시오. – yvoyer

+0

@yvoyer : "업데이트"를하고 싶지만 filename.mine, filename.rVERSIONNUMBER 등의 변경된 파일이 있습니다. 업데이트 된 라이브러리 (SVN 프로젝트)를 별도의 분기에 복사 한 후이를 내 병합하려고했습니다. (filename.mine 메카니즘을 통해) 변경을 평가하는 옵션을 제공하지 않고 업데이트 한 것입니다 ... – hatmatrix

1

종속성 B의 이전 개정판에 머물러 있어야하는 프로젝트 A가있는 경우 명시적인 개정 번호로 B를 가리키는 프로젝트 A에서 svn:externals property을 설정할 수 있습니다. 예를 들어, 프로젝트 A의 트렁크 폴더는이 내용으로 svn:externals 속성을했을 :

-r148 http://svn.example.com/projects/B/trunk B 

당신은 체크 아웃 프로젝트 A,이 프로젝트 B. 변경의 트렁크의 개정 (148)를 포함하는 표시 폴더 B가 발생할 때 프로젝트 B에 적용하면 명시 적으로 svn:externals 속성의 수정 번호를 변경할 때까지 A에 영향을 미치지 않습니다.

+0

매우 흥미 롭습니다 ... (실제로는 아니지만) 복잡하지만,이 문제를 해결할 수 있습니다 ... 감사합니다! 곧 다시 돌아올거야. – hatmatrix

+0

이것은 대단한 일이지만 선험적으로 해결하고자하는 갈등을 알고 있어야한다고 생각합니다. 나중에는 유용 ​​할 수도 있습니다. 감사! – hatmatrix

관련 문제