답변:
Subversion의 분기는 매우 가볍고 효율적인 복사 기능으로 촉진됩니다.
분기 및 태그 지정은 사실상 동일합니다. 저장소를 사용하여 저장소의 전체 폴더를 저장소의 다른 곳으로 복사하십시오.svn copy
명령을 .
기본적으로 이것은 백업, 태그, 브랜치 등 무엇이든 폴더를 복사하는 것이 관례에 따른다는 것을 의미합니다. 사물에 대해 어떻게 생각하고 싶은가에 따라 (일반적으로 과거에 사용한 SCM 도구에 따라) 스타일을 지원하기 위해 저장소 내에 폴더 구조를 설정해야합니다.
일반적인 스타일라는 저장소의 상단에 폴더의 무리를 가지고있다 tags
, branches
, trunk
당신이 당신의 전체를 복사 할 수 있습니다 - 등 trunk
에 (또는 하위 집합) tags
및 / 또는 branches
폴더. 둘 이상의 프로젝트가있는 경우 각 프로젝트에서 이러한 종류의 구조를 복제 할 수 있습니다.
개념에 익숙해지는 데 시간이 걸릴 수 있지만 작동합니다. 사용하려는 규칙을 명확하게 확인하십시오. 분기 / 태그가 작성된 이유와 여전히 적절한 지 여부를 알려주는 이름 지정 규칙을 사용하는 것이 좋습니다.
svn cp
저렴한 사본을 사용 하지만 분기 중에 실제 파일을 복사 하지는 않습니다 . 참조 svnbook.red-bean.com/en/1.1/ch04s02.html
svn copy
다음과 같이 명령을 사용하여 새 분기를 작성하십시오 .
$ svn copy svn+ssh://host.example.com/repos/project/trunk \
svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH \
-m "Creating a branch of project"
svn switch svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH .
(현재 체크 아웃을 새 브랜치로 전환하려는 경우) 또는 svn checkout svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH
(별도의 디렉토리에 새 브랜치가있는 경우) 새로 작성된 브랜치에서 작업을 시작하십시오.
--parents
옵션을 사용해야합니다svn copy
.
-m
옵션을 생략하면 다음 과 같이 표시 svn: E155010: Path '/home/constantine/someDirectory/svn+ssh:https:/myhost.com/svn/dir1/dir2/trunk/dir3/dir4/dir5' does not exist
됩니다. 으로 -m
는 말한다 svn: E205009: Local, non-commit operations do not take a log message or revision properties
. (주소를 대체했지만 ofc, 새 분기 디렉토리 및 어떤 이유로 SVN이 병합 한 전체 경로 + URL을 제외하고는 존재합니다) .
svn cp /trunk/ /branch/NEW_Branch
트렁크에 일부 로컬 변경 사항이있는 경우을 사용 Rsync
하여 변경 내용 동기화
rsync -r -v -p --exclude ".svn" /trunk/ /branch/NEW_Branch
rsync
이 방법 으로 사용할 필요는 없습니다 . svn cp
로컬 변경 사항도 복사합니다.
일반적으로 저장소에 여러 가지를 유지할 수 있도록 svn + ssh : //host.example.com/repos/project/branches/mybranch에 복사하지만 구문은 유효합니다.
저장소 레이아웃을 설정하는 방법 에 대한 조언이 있습니다.
브랜치 병합을 계획하고 있다면 다음을 살펴보십시오.
Subversion 1.5가 더 많은 병합 추적을 빌드한다고 들었지만 그 경험이 없습니다. 내 프로젝트는 1.4.x에 있고 svnmerge.py는 생명의 은인입니다!
다음은 Windows 시스템에서 TortoiseSVN을 사용하여 트렁크에서 분기를 만드는 단계입니다. TortoiseSVN 클라이언트를 설치해야합니다.