개발/안드로이드 어플

SVN 간단 조작 SubVersion TortoiseSVN

외노자개발 2023. 1. 17. 09:12
반응형

소개


Subversion을 잘 사용하고 있습니까? 자유도가 높은 Subversion은 관례를 따르는 경우가 많으며, 관례를 이해하고 잘 리포지토리를 구축해야 합니다. "trunk" "branches" "tags"도 그 중 하나입니다. 

 

먼저이 세 가지를 만드는 것이 좋습니다.

트렁크 사용법


trunk(트렁크)는 개발의 중심(메인 라인)이 되는 디렉토리로, 대부분의 파일을 여기에 저장합니다. 

일반적으로 개발중인 최신 버전을 저장합니다. 

Git에서 말하는 master 브랜치와 같은 것!

후술하는 branches의 하나라고 생각할 수도 있습니다.  트렁크만 있으면 개발을 진행해 나갈 수 있으므로,

초보자는 우선 여기에서 시작해 봅시다.

 

 

트렁크를 만들어 보자.

Subversion 설치


설치방법은 하기를 확인해주세요

 

SVN 한글판 간단 설치 SubVersion TortoiseSVN

https://tortoisesvn.net/downloads.html Downloads · TortoiseSVN download TortoiseSVN tortoisesvn.net SVN(subversion)? SVN 은 버전 관리 시스템이며 CVS 의 단점을 보안 하기위해 만들어진 시스템입니다. SVN 을 기준으로 업데

seodev.tistory.com

 

 

새 리포지토리 만들기


이제 시작하기 전에 새 저장소를 만들어 보겠습니다. 이렇게 하려면 명령 프롬프트(콘솔)에서 다음 명령을 입력합니다. 

여기서는 리포지토리 이름을 "tuto-repo"로 지정합니다. 

 

덧붙여 현재 디렉토리는 적절히 임의의 디렉토리로 이동해 주세요.

 

svnadmin create tuto-repo

명령을 실행하면 새 리포지토리가 만들어집니다. 아직 내용은 아무것도 없습니다.

 

 

트렁크 만들기


그런 다음 이 저장소에 트렁크 디렉토리를 만들어 봅시다. 

다음 명령을 사용하여 디렉토리를 만들고 커밋을 동시에 수행합니다. 리포지토리의 경로는 적절하게 경로로 지정합니다. 형식이 일반적인 경로 표기와 다르다는 점에 주의가 필요합니다.

svn mkdir file:///C:/Users/Test/Desktop/tuto-repo/trunk -m trunk

 

 

트렁크 체크아웃


그럼 이제 방금 만든 트렁크에 커밋해 보겠습니다. 이를 위해서는 먼저 작업 사본을 체크아웃해야 합니다. 

'work'라는 새 디렉토리를 만들고 작업 복사본을 체크아웃합니다.

mkdir work 
cd work 
svn checkout file:///C:/Users/Test/Desktop/tuto-repo/trunk

 

이제 작업 복사본을 체크아웃할 수 있었습니다.

"work"디렉토리를 확인하면 다음과 같이 빈 "trunk"디렉토리 (.svn 숨겨진 디렉터리가 있습니다)가 만들어져 있습니다.

 

트렁크에 커밋


그런 다음 아래 내용의 "example.txt"를 "trunk"디렉토리에 만듭니다.

 

example.txt

Copy123123
fuga123123

 

 

파일을 저장한 후 다음 명령을 사용하여 파일을 커밋합니다.

cd trunk 
svn add example.txt 
svn commit -m 처음 커밋

 

다음은 이 리포지토리에 "branches"를 만들어 봅시다.

 

 

branches 사용법


branches(브랜치)는 트렁크에서 분기된 또 다른 트리입니다. 브랜치(branch)라는 이름은 트렁크(트렁크)에서 가지로 나뉘어져 있습니다.

트렁크와는 별도로 개발을 진행하고 싶을 때 트렁크에서 분기를 만듭니다. 

브랜치를 만드는 것은 트렁크 디렉토리를 브랜치로 "branches" 디렉토리에 복사하는 것입니다. 

 

별도의 디렉토리로 존재하기 때문에, 물론 히스토리도 별도의 리비전을 가지게 됩니다.

 

 

branches 만들기


시작하기 전에 trunk와 유사한 명령을 사용하여 branches 디렉토리를 만드십시오. 커밋도 동시에 수행합니다.

svn mkdir file:///C:/Users/Test/Desktop/tuto-repo/branches -m branches 만들기

 

 

 

새로운 브랜치 만들기


그럼, 디렉토리도 할 수 있었던 것이므로, 트렁크로부터 새로운 브랜치를 만들어 봅시다. 조금 긴 명령이므로 명령 인수에 오류가 있는지 확인한 다음 실행하십시오. 여기에서는 브랜치 이름을 "new-branch"로 합니다.

svn copy file:///C:/Users/Test/Desktop/tuto-repo/trunk file:///C:/Users/Test/Desktop/tuto-repo/branches/new-branch -m 새 브랜치 만들기

이 명령으로 무슨 일이 일어났는가 하면, 현재의 「trunk」디렉토리가, 「new-branch」로서 「branches」디렉토리에 카피되어 커밋되었습니다. 이것이 브랜치를 만드는 것입니다. 잘 만들었는지 브랜치를 체크아웃하고 확인하세요.

cd .. 
svn checkout file:///C:/Users/Test/Desktop/tuto-repo/branches

 

명령을 실행한 후 "work" 디렉토리를 확인해 봅시다. "branches"디렉토리 안에 "new-branch"디렉토리가 만들어져 있네요. 내용도 "trunk"디렉토리와 동일합니다.

 

나중에 트렁크와 마찬가지로 파일을 추가하거나 파일을 변경하여 커밋 할 수 있습니다. 물론 브랜치에 대한 변경이 이루어지므로 트렁크에는 영향을 미치지 않습니다. 잘 트렁크와 브런치를 구분해 봅시다. 다음으로, 유사한 개념인 「tags」에 대해 해설해 갑니다.

 

태그 사용법


tags(태그)는 특정 시점의 트렁크에 이름을 붙인 것입니다. Subversion의 리포지토리는 기록을 유지하므로 언제든지 과거 파일을 자유롭게 검색할 수 있습니다. 하지만 리비전 번호에서는 꺼내고 싶은 히스토리가 몇개의 리비전인지 곧 알 수 없습니다. 거기서 태그로서 이름을 붙여 두는 것으로, 필요할 때에 태그를 참조해 곧바로 꺼낼 수 있도록(듯이) 합니다. 태그의 실제는 tags 디렉토리에 복사된 트렁크 디렉토리입니다. 일반적으로 한 번 만든 태그는 변경하지 않습니다. 기본적으로 파일은 읽기 전용이 아니므로 실수로 변경하지 않도록주의하십시오.

 

태그 만들기


이쪽도 branches 같이, 우선은 디렉토리를 작성하지 않으면 안됩니다. 친숙한 명령을 사용하여 디렉토리를 만들고 커밋합니다.

svn mkdir file:///C:/Users/Test/Desktop/tuto-repo/tags -m tags 만들기

 

 

 

새로운 태그 만들기


이제 트렁크에서 새 태그를 만들어 보겠습니다. 브랜치와 마찬가지로 이전의 긴 명령을 사용합니다. 실수하지 않도록주의하십시오. 여기에서는 태그 이름을 'version-1.0'이라고 합니다.

svn copy file:///C:/Users/Test/Desktop/tuto-repo/trunk file:///C:/Users/Test/Desktop/tuto-repo/tags/version-1.0 -m 새 태그 만들기

 

 

이 명령은 분기 시간과 동일합니다. 현재의 "trunk" 디렉토리가 "version-1.0" 디렉토리로서 "tags" 디렉토리에 복사되어 커밋되었습니다. 잘 작동하는지 태그를 체크아웃하여 확인해 보세요.

svn checkout file:///C:/Users/Test/Desktop/tuto-repo/tags

「work」디렉토리를 확인하면, 「tags」디렉토리 안에 「version-1.0」디렉토리가 작성되어 「trunk」디렉토리의 내용이 카피되고 있네요.

 

이미 알고 있을지 모르지만, 브랜치를 만드는 흐름과 태그를 만드는 흐름은 대상 디렉터리가 다를 뿐이므로 그 이외는 동일합니다. 왜냐하면, 브랜치와 태그(및 트렁크)는 Subversion에 있어서는 개념에 지나지 않고, 아무리 특별한 것이 아니기 때문입니다. 어디까지나 관례로서, 브랜치와 태그가 정의되고 있는 것만으로, 내부적으로는 차이는 없습니다.

따라서 사용자 측이 제대로 역할을 이해하고 구분할 필요가 있습니다. 브랜치는 트렁크와는 다른 작업을 하는 디렉토리, 태그는 어느 시점의 트렁크를 보관 유지하기 위한 디렉토리라고 기억해 둡시다. 잘못해도 태그에 대해 커밋해서는 안됩니다. 리포지토리 후크라는 것을 사용하여 태그에 대한 커밋을 방지하는 방법도 있습니다. 그렇다고는 해도, 소인수로 사용하는 경우에는, 모두에게 주지하는 것만으로도 문제 없을 것입니다.

 

요약

'trunk', 'branches', 'tags'는 Subversion의 기본입니다. 사용법을 확실히 기억해 둡시다. Subversion에서는 리포지토리를 어떻게 사용하는지 사용자에게 맡깁니다. 자유롭게 조작할 수 있는 것은 확실합니다만, 관례가 되고 있는 베스트 프랙티스에 따르는 것으로, 보다 좋은 리포지토리가 되어 갈 것입니다.

반응형