TortoiseSVN을 사용하여 분기 및 병합을 수행하는 가장 간단한 방법은 무엇입니까?


답변:


185

작업 디렉토리가 트렁크에서 작동한다고 가정합니다.

"루트 작업 폴더"(이 용어는 항상 Windows 탐색기를 나타냄)를 마우스 오른쪽 버튼으로 클릭하고 svn update작업 폴더를 최신 트렁크로 업데이트합니다.

가지고있는 것이 안정적인지 확인하십시오.

루트 작업 폴더를 마우스 오른쪽 버튼으로 클릭하고 svn commit로컬 변경 사항이 트렁크에 커밋되었는지 확인합니다.

루트 작업 폴더를 마우스 오른쪽 버튼으로 클릭하고 svn repo-browser.

저장소에 아직 브랜치 폴더가없는 경우 : 트렁크 폴더 바로 위에있는 폴더를 마우스 오른쪽 버튼으로 클릭하고 "폴더 생성"을 수행하고 브랜치 폴더를 생성합니다 (예 : 트렁크가 인 http://myserver/svn/MyRepository/MyProj/Trunk경우 생성 http://myserver/svn/MyRepository/MyProj/Branches).

트렁크 폴더를 마우스 오른쪽 버튼으로 클릭하고 Copy To:분기의 새 폴더 이름을 입력하십시오. 예 : http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch. (이것은 많은 공간을 낭비 할 것이라는 걱정은하지 마십시오. 이것을 "저렴한 복사본"이라고합니다. 파일이 변경되지 않는 한 실제로 파일 내용을 복사하지 않습니다).

Repo 브라우저를 닫습니다.

작업 폴더 루트를 마우스 오른쪽 버튼으로 클릭하고 다음을 수행 svn switch하고 새 분기의 폴더 이름 (예 :)을 선택합니다 http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch. 나머지는 모두 기본값으로 둡니다.

이제 지점에서 작업하십시오. 마일스톤에 도달하면 루트 작업 폴더를 마우스 오른쪽 단추로 클릭하고 svn commit분기에 커밋합니다. (이것은 트렁크에서 볼 수 없습니다).

다른 사람들이 동일한 브랜치에서 작업하는 경우 주기적으로 svn update루트 작업 폴더에서 작업하십시오. 이것은 지점에서 업데이트됩니다. (트렁크에서 업데이트를받지 않습니다.)

다른 사람들이 동일한 브랜치에서 작업하는지 여부에 관계없이 트렁크의 변경 사항을 주기적으로 병합하여 나중에 브랜치를 통합하기가 너무 어렵지 않도록해야합니다. 주기적 병합을 수행하려면 : 작업 폴더 루트를 마우스 오른쪽 버튼으로 클릭하고 svn merge. "수정 범위 병합"을 선택합니다. '병합 할 URL'에서 트렁크를 선택합니다 (예 :) http://myserver/svn/MyRepository/MyProj/Trunk. 남겨 개정 범위 밖에 혼자 빈과 휴가 다. 다음을 클릭하십시오. 모든 것을 그대로두고 병합을 클릭 합니다. 모든 것이 여전히 작동하는지 확인하십시오. 그렇지 않은 경우 수정하십시오. 만족 스러우면 svn update작업 루트 폴더에서 정기적 으로 브랜치에서 업데이트를 수행합니다 (SVN을 충족하기 위해 브랜치에서 작업하는 유일한 사람인 경우에도 필요함). 그런 다음svn commit병합 된 트렁크 변경 사항을 분기에 커밋합니다. 이 단계를 원하는만큼 주기적으로 반복 할 수 있습니다.

분기를 통합 할 준비가되면 위의 단계를 마지막으로 한 번 수행하고 최종 테스트를 수행하십시오. 분기에 대한 최종 커밋을 수행합니다.

루트 작업 폴더를 마우스 오른쪽 버튼으로 클릭하고 다른 작업을 수행합니다. svn switch이번에는 트렁크로 전환합니다 (예 :) http://myserver/svn/MyRepository/MyProj/Trunk. 이렇게하면 브랜치에서 수행 한 모든 작업을 본질적으로 "실행 취소"하는 효과가 있지만 걱정하지 마십시오. 작업을 되돌릴 수 있습니다. (또한 브랜치에서 변경하지 않은 파일에 대한 많은 업데이트를보고하지만 이는 "SVN 속성"변경 일뿐입니다. 걱정하지 마십시오.)

작업 폴더를 마우스 오른쪽 버튼으로 클릭하고 svn merge. 이번에는 "지점 다시 통합"을 선택합니다. URL의 경우 브랜치 (예 :)를 입력합니다 http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch. 나머지는 그대로두고 다음을 클릭합니다. 모든 것을 그대로두고 병합을 클릭 합니다. 이제 브랜치에서 수행 한 모든 작업과 트렁크의 최신 작업을 모두 마쳤습니다.

최종 테스트를 수행하십시오. 브랜치의 마지막 테스트에서 가졌던 파일 세트와 동일해야하므로 모든 것이 작동합니다. 루트 작업 폴더를 마우스 오른쪽 버튼으로 클릭하고 svn commit. 브랜치에서 작업하지 않은 파일을 포함하여 모든 것을 커밋합니다 ( "SVN 속성"변경 사항 만 있지만 커밋하면 SVN이 모든 수정 사항을 추적하는 데 도움이됩니다).

이제 트렁크에는 모든 브랜치 작업과 브랜치에서 작업하는 동안 트렁크에서 수행 된 모든 작업이 있으며 모든 것이 작동합니다. 또한 SVN은 브랜치에서 작업하는 동안 체크인 한 개정판까지 포함하여 모든 파일의 전체 기록을 가지고 있습니다.

선택 사항 : Repo-browser로 이동하여 분기 폴더 (예 :)를 마우스 오른쪽 단추로 클릭 http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch하고 "삭제"를 수행합니다. 이것은 트렁크에 영향을 미치지 않으며 더 이상 가지가 필요하지 않습니다. (정말 편집증이 있어도 걱정하지 마세요. 필요한 경우 언제든지 Repo 브라우저에서 삭제 된 브랜치를 다시 가져올 수 있기 때문입니다.)

의견을 주시기 바랍니다!


37
나는 "간단한"이 아니라 "간단한"을 말했다 :)
JoelFan

1
감사! 당신은 :)되어 upvotes 및 즐겨 찾기가 있지만 첫 번째 사실은 (나에게 감사하고 한
JoelFan

분기를 트렁크에 다시 통합하면 해당 분기에서 더 이상 작업을 수행 할 수 없다는 것이 맞습니까? 변경 사항을 추적하지 않고 해당 분기와 더 이상 병합 할 수 없기 때문에?
Michael Waterfall

1
내가 이해하는 한 병합은 동일한 분기에서 두 번 이상 작동하지 않습니다.
JoelFan 2009

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