일식에서 SVN 분기 (개념)
문제
나는 분기와 병합의 기본 개념을 이해합니다. 내가 찾은 모든 설명은 전체 트렁크를 분기하여 지점 프로젝트를 만들고 작업 한 다음 다시 합병하는 것에 대해 이야기합니다. 프로젝트의 하위 집합을 분기 할 수 있습니까?
예를 들어, 내가하고 싶은 일을 가장 잘 설명하는 데 도움이 될 것이라고 생각합니다. 파일 10을 통해 10 개의 파일 파일이있는 응용 프로그램이 있다고 가정합니다. 모든 파일은 상호 의존적이며 하나의 파일을 테스트 할 수 있도록 다른 모든 파일을 빌드에 포함시켜야합니다. File0에서 작업하고 싶지만 File1을 통해 File1을 변경할 필요는 없습니다. File0에 커밋 된 변경 사항이 File0에 커지면 MyRepos/Branch/A-Branch/File0과 같은 것을 업데이트 할 수 있지만 작업 사본의 다른 모든 파일은 단순히 트렁크에서 나옵니까?
내가 이것을하고 싶은 이유는 수만 개의 파일로 거대한 J2EE 애플리케이션을 진행하고 있기 때문에 전체를 분기하는 데 정말 오랜 시간이 걸릴 것 같습니다. 또한, 나는 서브 클립과 함께 이클립스를 사용하고 있습니다 (그리고 이것에 대해 잘못 될 수 있습니다). Eclipse에서 프로젝트를 분기하면 지점을 가리키기 위해 새로운 Eclipse 프로젝트를 설정해야합니다. 불행히도이 특정 프로젝트를 SVN에서 Eclipse로 가져 오면 응용 프로그램의 크기로 인해 몇 시간이 걸립니다. 이 시간을 많이 보내는 것은 현실적이지 않습니다.
나는 개념을 잘못 할 수 있다고 생각합니다. 아마도 전체 프로젝트를 분기하면 새로운 작업 사본이 전혀 필요하지 않습니까?
이 문제에 대한 조명에 감사드립니다.
다른 팁
파괴적으로, 지점을 만드는 것은 단순히 디렉토리의 계층 구조 사본을 만드는 것입니다. 따라서 서브 세트를 분기 할 수 있지만 해당 하위 집합이 디렉토리의 계층에 의해 정의 될 수있는 경우에만 해당됩니다.
File0에 커밋 된 변경 사항이 File0에 커지면 MyRepos/Branch/A-Branch/File0과 같은 것을 업데이트 할 수 있지만 작업 사본의 다른 모든 파일은 단순히 트렁크에서 나옵니까?
이 질문에 답하기 위해 : 아니요, 단일 파일을 분기 할 수 없습니다. 그러나 대신 당신이하고 싶은 것은 지점을 만들고 일하는 것입니다. file0
거기. 당신이 변경할 때 trunk
파일, 당신은 간단합니다 그것들을 당신의 지점으로 병합하십시오 당신이 일하는 곳 file0
.
이런 식으로 항상 최신 정보를 얻을 수 있습니다. trunk
, 테스트 할 수 있습니다 file0
트렁크와 독립적으로 변경됩니다. 그런 다음 사용할 수 있습니다 svn switch
트렁크와 분기 사이에 "파일 렌즈"를 이동하려면 (그러나 일식은 그러한 shenanigans에 대해 불평 할 수 있습니다).
SVN 분기는 게으른 사본 메커니즘을 기반으로하므로 모든 프로젝트를 안전하게 분기 할 수 있습니다. 오래 걸리지 않습니다.
질문에서 언급했듯이 "SVN에서 개별 파일을 어떻게 분기합니까?", 당신은 서브 세트를 분기 할 수 있지만, 나는 이것이 위험 할 것이라고 생각합니다. SVN : Merginfo 특성 메커니즘: 부동산이 프로젝트의 루트에서 설정되어 있다는 것이 더 잘 작동합니다.
SVN의 분기는 O (1) 작업입니다. 또한 SVN은 내부적으로 게으른 복사를 사용하므로 변경 사항에 대한 공간 페널티 만 지불합니다.
따라서 확실하지 않다면 왜 전체 프로젝트를 분기하지 않겠습니까?
(Quark가 언급했듯이, 큰 프로젝트를 분기하는 데있어 한 가지 문제는 여러 지점/트렁크를 병렬로 체크 아웃하면 많은 로컬 디스크 공간이 필요할 수 있다는 것입니다.)