지점을 어떻게 만듭니 까?


답변:


349

Subversion의 분기는 매우 가볍고 효율적인 복사 기능으로 촉진됩니다.

분기 및 태그 지정은 사실상 동일합니다. 저장소를 사용하여 저장소의 전체 폴더를 저장소의 다른 곳으로 복사하십시오.svn copy명령을 .

기본적으로 이것은 백업, 태그, 브랜치 등 무엇이든 폴더를 복사하는 것이 관례에 따른다는 것을 의미합니다. 사물에 대해 어떻게 생각하고 싶은가에 따라 (일반적으로 과거에 사용한 SCM 도구에 따라) 스타일을 지원하기 위해 저장소 내에 폴더 구조를 설정해야합니다.

일반적인 스타일라는 저장소의 상단에 폴더의 무리를 가지고있다 tags, branches, trunk당신이 당신의 전체를 복사 할 수 있습니다 - 등 trunk에 (또는 하위 집합) tags및 / 또는 branches폴더. 둘 이상의 프로젝트가있는 경우 각 프로젝트에서 이러한 종류의 구조를 복제 할 수 있습니다.

개념에 익숙해지는 데 시간이 걸릴 수 있지만 작동합니다. 사용하려는 규칙을 명확하게 확인하십시오. 분기 / 태그가 작성된 이유와 여전히 적절한 지 여부를 알려주는 이름 지정 규칙을 사용하는 것이 좋습니다.


211
"svn copy"는 분기 이전의 히스토리를 보유한다는 이점이 있습니다. 다른 디렉토리에 수동으로 복사하지 않습니다.
WhyNotHugo

5
또한 일반적으로 "trunk"의 하위 디렉토리에 태그를 지정하거나 분기하는 것은 좋지 않습니다. 따라서 분기 된 하위 디렉토리를 추적하기가 어려우며 대부분의 도구는 이러한 분기로 인해 혼란스러워집니다 (예 : 분기 전환은 WC 변경 사항의 디렉토리 구조를 의미하므로 IDE와 빌드 도구를 혼동하게됩니다). 항상 "트렁크"분기.
sleske

1
@ 실제로 svn cp저렴한 사본을 사용 하지만 분기 중에 실제 파일을 복사 하지는 않습니다 . 참조 svnbook.red-bean.com/en/1.1/ch04s02.html
Walty Yeung의에게

607

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"

24
다음으로 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(별도의 디렉토리에 새 브랜치가있는 경우) 새로 작성된 브랜치에서 작업을 시작하십시오.
Jakub Narębski

3
참고 : 경우에 따라!--parents옵션을 사용해야합니다svn copy.
Jakub Narębski

1
어떤 이유로 든이 cmd를 사용했지만 작동하지 않았지만 svn + ssh를 https로 변경하면 작동했습니다. 내가 잘못 했어? svn + ssh의 의미는 무엇입니까? 감사!
Aviel Gross

먼저 지점에 새 디렉토리를 만들어야합니다-> svn mkdir host.example.com/repos/project/branches/NAME_OF_BRANCH -m "모든 지점을 가지도록 지점 디렉토리를 만드십시오"
Silvio Troia

-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을 제외하고는 존재합니다) .
Hi-Angel

33

https를 통해 repo를 사용할 수있는 경우이 명령을 사용하여 분기 할 수 있습니다.

svn copy https://host.example.com/repos/project/trunk \
       https://host.example.com/repos/project/branches/branch-name \
  -m "Creating a branch of project"

26
svn cp /trunk/ /branch/NEW_Branch

트렁크에 일부 로컬 변경 사항이있는 경우을 사용 Rsync하여 변경 내용 동기화

rsync -r -v -p --exclude ".svn" /trunk/ /branch/NEW_Branch

2
rsync이 방법 으로 사용할 필요는 없습니다 . svn cp로컬 변경 사항도 복사합니다.
케빈 판코

@KevinPanko 커밋되지 않은 변경 사항은 복사하지 않습니다.
Parag Bafna

4
그것은 svn, 버전 1.8.5로 확인되었습니다
Kevin Panko

나는 이것에 대해 궁금합니다. 이것은 가장 쉬운 옵션 인 것처럼 보이고 AFAI는 3 년 전에 SVN과 함께 일했을 때 내가 한 일임을 기억합니다. 그러나 이것과 서버 URL을 직접 사용하는 것의 차이점은 무엇입니까?
oligofren

@KevinPanko 새로 만든 파일도 복사하는지 알고 있습니까?
존 해밀턴

16

트렁크 이름에서 분기를 만들고 ( "TEST") 다음을 사용한다고 가정합니다.

svn cp -m "CREATE BRANCH TEST" $svn_url/trunk $svn_url/branches/TEST


13

새로운 SVN 사용자를위한 팁; 올바른 URL을 빨리 얻는 데 도움이 될 수 있습니다.

svn info현재 체크 아웃 된 분기에 대한 유용한 정보를 표시하려면 실행하십시오 .

루트 폴더에서 svn을 실행하는 경우 URL은 복사해야 할 URL을 제공해야합니다.

또한 새로 작성된 분기로 전환하려면 다음 svn switch명령을 사용하십시오 .

svn switch http://my.repo.url/myrepo/branches/newBranchName

3
또한 저장소 루트 대신 ^ 사용할 수 있습니다
Chim은

11

브랜치 병합을 계획하고 있다면 다음을 살펴보십시오.

Svnmerge.py

Subversion 1.5가 더 많은 병합 추적을 빌드한다고 들었지만 그 경험이 없습니다. 내 프로젝트는 1.4.x에 있고 svnmerge.py는 생명의 은인입니다!


6
  • 현재 프로젝트 외부에 새 폴더를 만듭니다. 어떤 이름이든 지정할 수 있습니다. (예 : "Customization"이라는 프로젝트에 대한 체크 아웃이 있고 "Project1", "Project2"와 같은 많은 프로젝트가 있으며 "Project1"의 분기를 만들려면 먼저 " 사용자 정의 '를 마우스 오른쪽 단추로 클릭하고 새 폴더를 작성하고 이름을 "Project1Branch"로 지정하십시오.
  • "Myproject1"을 마우스 오른쪽 버튼으로 클릭하십시오 .... TortoiseSVN-> Branch / Tag.
  • 작업 사본을 선택하십시오.
  • 브라우저를 엽니 다. "URL로"와 병행하여 오른쪽에 있습니다.
  • customization .....을 선택하고 마우스 오른쪽 버튼을 클릭 한 다음 폴더 추가를 클릭하십시오. 그리고 당신이 만든 폴더를 통해 이동합니다. 여기는 "Project1Branch"입니다. 이제 OK 버튼을 클릭하여 추가하십시오.
  • 이 새로운 banch를 확인하십시오.
  • 다시 만들고 싶은 지점으로 프로젝트로 이동하십시오. TorotoiseSVN-> 분기 / 태그를 마우스 오른쪽 단추로 클릭하십시오. 그런 다음 작업 사본을 선택하십시오. URL을 지점 이름으로 지정할 수 있습니다. {귀하의 IP 주소 / svn / AAAA / Customization / Project1Branch}와 같은 그리고이 이름으로 만 폴더를 만들도록 URL에 이름을 설정할 수 있습니다. {귀하의 IP 주소 / svn / AAAA / Customization / Project1Branch / MyProject1Branch}와 같습니다.
  • OK 버튼을 누릅니다. 이제 로그를 볼 수 있습니다 ... 작업 사본이 지점에 저장됩니다.
  • 이제 체크 아웃하고 작업을 즐길 수 있습니다. :)

-1

다음은 Windows 시스템에서 TortoiseSVN을 사용하여 트렁크에서 분기를 만드는 단계입니다. TortoiseSVN 클라이언트를 설치해야합니다.

  1. 로컬 Windows 시스템에서 업데이트 된 트렁크를 마우스 오른쪽 버튼으로 클릭
  2. 거북이 선택
  3. 지점 / 태그 클릭
  4. SVN 저장소에서 To 경로를 선택하십시오. 도착 URL은 지정된 경로 및 지점 이름에 따라 업데이트됩니다.
  5. 저장소 브라우저에서 분기 내에 폴더를 작성하지 마십시오
  6. 분기 경로를 추가하십시오. 예를 들어 가지 /
  7. 참조 할 수 있도록 의미있는 로그 메시지 추가
  8. 확인을 클릭하면 로컬 시스템에 새 폴더가 생성됩니다.
  9. 새 폴더에 생성 된 지점 체크 아웃
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.