Subversion : 체크 아웃하고 수정 한 다음 브랜치로 만들 수 있습니까?


80

내 트렁크에서 로컬 DIR로 체크 아웃하고 거기에서 많은 로컬 변경을 수행했습니다. 이제 트렁크에 다시 커밋하고 싶지 않지만이 로컬 버전에서 분기를 만들고 싶습니다. 가능합니까?

난 그냥 다음 분기에 트렁크를 복사 할 수 cd DIRsvn switch지점에?

업데이트 : 답변 주셔서 감사합니다. 단계를 요약하려면 :

  • cd DIR
  • svn copy . new-branch-URL
  • svn switch new-branch-URL .

(점 참고)


그래 넌 할수있어. 나는 tortoiseSVN을 사용하고 당신은 그것을 할 수 있습니다.
Nick

을 (를) 사용하여 충돌이 너무 많이 발견 svn switch되었으므로 new-branch-URL이후 부터 새 복사본을 확인하기로 선택했습니다 svn copy.
fikr4n

답변:


39

명령 줄 도움말에 따르면 svn copy는 디렉토리에서 저장소 URL로 복사 할 수 있습니다. 따라서 작업 복사본을 브랜치에 복사 할 수 있어야합니다. 예 :

svn copy working_directory url_to_branch

52

SVN 책 ( http://svnbook.red-bean.com/en/1.6/svn-book.html#svn.branchmerge.using.create )은 로컬 작업 복사본에서 브랜치를 만드는 것을 권장하지 않습니다.

svn copy작업 복사본 내에서 디렉터리를 복제하는 데 사용하여 분기를 만들 수도 있지만 이 기술은 권장되지 않습니다. 사실 꽤 느릴 수 있습니다! 클라이언트 측에서 디렉토리를 복사하는 것은 실제로 로컬 디스크의 해당 작업 복사 디렉토리 내의 모든 파일과 하위 디렉토리를 복제해야한다는 점에서 선형 시간 작업입니다.

대신 브랜치를 먼저 만든 다음 svn switch명령 을 사용 하여 변경 사항을 커밋 할 수 있습니다. 작업 복사본이 트렁크에서 상당히 오래된 경우 소스 URL에 "@REV"를 추가합니다. 여기서 "REV"는에서보고 한 작업 복사본의 개정판입니다 svn info.

그러나 서버에서 디렉토리를 복사하는 것은 일정한 시간 작업이며 대부분의 사람들이 브랜치를 만드는 방법입니다.

$ svn copy http://svn.example.com/repos/calc/trunk \
           http://svn.example.com/repos/calc/branches/my-calc-branch \
      -m "Creating a private branch of /calc/trunk."

2
이 답변에 감사드립니다. 개정 내역을 유지하므로 더 나은 솔루션입니다.
evanflash

3
로컬 작업 복사본에 변경 사항이있는 svn copy <trunk-URL> <newBranch-URL>경우 트렁크를 svn 서버의 새 분기에 svn switch복사 한 다음 작업 복사본에서 사용 하여 변경 사항을 잃지 않고 새 분기로 전환 할 수 있습니까? 아니면 스위치가 커밋되지 않은 수정 파일을 죽일까요?
Kasapo 2012 년

3
@Kasapo, 네 맞습니다. 또한 트렁크가 구식인지 확인하십시오. 그렇다면 내가 언급 한대로 소스 URL에 "@REV"를 추가하여 지점으로 전환 한 후 로컬 변경 사항 만 차이점으로 표시되도록합니다.
Lucas

Lucas의 솔루션에 대해 자세히 설명하는 매우 유용한 링크를 추가하겠습니다. svnbook.red-bean.com/en/1.6/svn.branchmerge.switchwc.html (하단의 정보 상자 참조). 이것은 실제로 로컬 수정에서 브랜치를 만드는 가장 깨끗하고 편리한 솔루션입니다.
Spiros

9

내 SVN 클라이언트 : TortoiseSVN에서 다음을 수행하면 충분합니다.

  • 분기하려는 최상위 디렉토리를 마우스 오른쪽 버튼으로 클릭하십시오.
  • "To URL"에서 저장소의 분기 디렉토리를 선택하십시오.
  • "다음에서 저장소에 복사본 만들기 :"프레임에서 "작업 복사본"을 선택합니다.

완료 :)

지정된 저장소 URL에 로컬 버전을 복사하는 것과 같습니다.


1

예, SVN 명령 줄tortoiseSVN 으로이 작업을 수행 할 수 있습니다. .

SVN 작업 복사본을 src로 지정하고 새 분기를 대상으로 지정해야합니다.

svn copy <file/path/to/working/copy> <URL/TO/REPOSITORY/BRANCH>

명령.

TortoiseSVN에서 작업 복사본을 가리키고 컨텍스트 메뉴에서 "Branch / tag"를 선택하고 "Create copy in the repository from :"섹션에서 "Working copy"를 선택합니다.

이러한 방식으로 태그를 생성하는 것은 (추적 성 이유로) 좋은 생각이 아니지만 브랜치의 경우 완벽하게 괜찮습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.