TortoiseSVN
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
TortoiseSVN은 Subversion 버전 관리 시스템을 윈도우 운영체제에서 편리하게 사용할 수 있도록 돕는 클라이언트 프로그램이다. 저장소 관리, 파일 가져오기, 추가, 체크아웃, 업데이트, 커밋, 충돌 해결, 브랜치, 태그, 병합 등의 기능을 제공한다. TortoiseCVS, TortoiseGit, TortoiseBzr, TortoiseHg, RabbitVCS와 같은 유사 도구들이 존재한다.
더 읽어볼만한 페이지
- 버전 관리 시스템 - 미디어위키
미디어위키는 위키백과 등 위키미디어 재단 프로젝트에서 사용되는 PHP 기반의 자유 소프트웨어 위키 엔진으로, 확장성, 다양한 기능, 사용자 지정 용이성 등을 바탕으로 위키 기반 웹사이트 구축 및 관리에 기여한다. - 버전 관리 시스템 - 깃 (소프트웨어)
깃은 리누스 토르발스가 개발한 분산 버전 관리 시스템으로, 빠른 분기 및 병합, 분산 개발 환경 지원, 대규모 프로젝트 처리 효율성 등의 특징을 가지며, 깃허브, 깃랩 등에서 서비스되며 소프트웨어 개발 분야에서 널리 사용된다. - 윈도우 전용 자유 소프트웨어 - VirtualDub
VirtualDub은 윈도우 운영 체제에서 실행되는 무료 오픈 소스 비디오 캡처 및 처리 유틸리티이며, AVI 파일을 주로 처리하고 플러그인을 통해 다른 파일 형식도 지원하며, 동영상 캡처, 편집, 비디오 처리 및 필터 기능을 제공한다. - 윈도우 전용 자유 소프트웨어 - 미디어 플레이어 클래식
마이크로소프트 윈도우 미디어 플레이어의 대안으로 개발된 미디어 플레이어 클래식은 가벼운 미디어 플레이어로서, 다양한 코덱 지원과 확장성을 제공하며 인기를 얻었으나, 개발 중단 이후 여러 파생 버전이 개발되어 기능 개선과 새로운 코덱 지원 등의 발전을 이루어왔다. - 2003년 소프트웨어 - 사파리 (웹 브라우저)
사파리는 애플이 개발한 웹 브라우저로, 2003년 처음 출시되어 웹킷 엔진을 기반으로 빠른 속도와 웹 표준 지원을 제공하며, macOS, iOS, iPadOS 등에서 기본 브라우저로 사용된다. - 2003년 소프트웨어 - 키노트
키노트는 스티브 잡스가 맥월드 엑스포에서 사용하기 위해 개발한 애플의 프레젠테이션 소프트웨어이며, 3차원 애니메이션과 전환 효과를 제공하고, iWork 패키지에 통합되어 HD 테마, 3D 그래픽 효과, 다양한 파일 형식 지원 등의 기능을 제공한다.
| TortoiseSVN - [IT 관련 정보]에 관한 문서 | |
|---|---|
| 일반 정보 | |
| 개발 | |
| 개발자 | 팀 켐프 |
| 프로그래밍 언어 | C++ |
| 릴리스 정보 | |
| 최초 릴리스 | 2002년 |
| 최신 릴리스 버전 | 1.14.7 |
| 최신 릴리스 날짜 | 2024년 4월 16일 |
| 시스템 정보 | |
| 운영 체제 | 마이크로소프트 윈도우 |
| 크기 | 20.3 MB |
2. 프로그램 용어
TortoiseSVN은 원래 명령 줄 응용 프로그램인 Subversion의 프런트엔드 중 하나로, Microsoft Windows의 셸 확장으로 구현되어 있다.[8] 윈도우 탐색기의 컨텍스트 메뉴에 Subversion 명령어를 추가하고, Subversion 워킹 카피의 상태를 나타내는 인디케이터를 아이콘에 오버레이하는 기능을 제공한다.
SourceForge.net 2007 Community Choice Awards의 Best Tool or Utility for Developers 부문을 수상했다.[9] TortoiseSVN 배포물에는 파일의 차이점을 시각적으로 비교하는 TortoiseMerge 유틸리티가 포함되어 있다.[10]
VisualSVN, VsTortoise, AnkhSVN 등의 서드파티 플러그인을 사용하여 Microsoft Visual Studio에 통합할 수 있다.[11]
TortoiseSVN의 사용자 인터페이스는 공식 웹사이트에서 제공하는 언어 팩을 설치하여 일본어 등으로 번역할 수 있다.
2. 1. 저장소 (Repository), 가져오기 (Import), 추가 (Add)
TortoiseSVN은 버전 관리 관련 데이터를 저장소(Repository)에 저장한다. 저장소 구성 방법은 다양하다. 한 저장소에 여러 프로젝트를 담을 수도 있고, 한 프로젝트만 담을 수도 있다. 일반적으로 한 프로젝트당 하나의 저장소를 사용하는 것이 권장된다.[1]새 저장소를 만들려면 명령 줄에서 다음 명령어를 사용한다.
```
svnadmin create [대상 경로 이름]
```
Subversion에 새 프로젝트를 가져오기(Import)하는 방법은 다음과 같다.[1]
1. 프로젝트 관련 파일들이 저장된 폴더에서 불필요한 파일(임시 파일, 컴파일러나 링커가 생성하는 파일 등)을 제거한다.
2. `svn_repository` 폴더 아래 새 폴더에 프로젝트를 담을 저장소를 만든다.
3. 저장소 안에 `trunk`, `branch`, `tags` 세 개의 폴더를 만든다.
4. `trunk`로 프로젝트를 가져온다(Import). 저장소 안의 잘못된 폴더 레벨로 가져오는 경우가 빈번하므로 주의한다.
5. 작업 공간으로 다시 프로젝트를 체크아웃(Check-out)한다.
Subversion에 새 프로젝트를 추가(Add)하는 방법은 다음과 같다.[1]
1. 저장소 브라우저(Repository browser)로 저장소 안에 폴더를 직접 생성한다.
2. 만들어진 폴더를 가져오고자 하는 파일이 있는 폴더(체크인 대상 프로젝트의 파일들이 저장된 최상위 폴더)로 체크아웃한다. 예를 들어, `~/source/file.c`, `~/source/subfolder/subfolderfile.c`를 추가하고 싶다면 `~/source/` 폴더로 체크아웃한다. 경고가 뜰 것이다. 최상위 레벨 폴더는 버전 관리되지만 내용은 버전 관리되지 않는 상태가 된다.
3. `TortoiseSVN` → `Add...` 명령으로 버전 관리하고 싶은 파일을 추가한다. 파일이나 하위 폴더 아이콘에 물음표 상태로 `Add..` 명령이 뜨지 않으면 폴더 창 배경에 마우스 오른쪽 버튼을 클릭한다.
4. 최상위 레벨 폴더를 커밋(commit)한다.
저장소 안의 잘못된 폴더 레벨로 가져왔을 경우 바로잡기 어렵다. 이동(Move)은 허용되지만, 이동 이전과 이후의 파일은 별개의 객체로 인식되는 것으로 보인다.[1] Subversion에 새 프로젝트를 가져올 때 원하는 파일만 가져오는 것은 사실상 어렵기 때문에 새 프로젝트를 추가하는 방법을 참조하는 것이 좋다.[1]
Subversion에 여러 저장소를 만들려면 저장소별로 하나씩 폴더를 만들어 주는 것이 바람직하다.[1]
2. 2. 체크아웃 (Check out), 업데이트 (Update), 커밋 (Commit), 충돌 (Conflict), 해결 (Resolve), 키워드 (Keyword)
- 체크아웃 (Check out): 저장소에서 프로젝트를 작업 공간으로 가져오는 것이다. Download와 유사하다.
- * 체크아웃 방식
# 작업할 폴더의 상위 폴더를 만든다. 예를 들어, 희망하는 작업 공간의 위치가 `My Documents\Development\Project01\` 라면, "My Documents" 아래에 "Development"라는 이름의 폴더를 만들면 된다.
# Checkout 대화상자를 연다. "Development" 폴더를 열고 폴더 배경에서 오른쪽 마우스 클릭하여 SVN Checkout... 메뉴를 선택하면 Checkout 대화상자가 열린다.
# "URL of repository"난의 [...] 버튼을 눌러 저장소 위치 (예: `file:///c:/svn_repository/Project01/trunk`)를 선택한다.
# "Checkout directory"난에 작업 폴더 (예: `My Documents\Development`)를 선택한다.
# Checkout Depth는 Fully recursive를 선택한다.
# Revision은 HEAD로 하면 최신 파일이 들어온다. 다른 revision을 선택하고 싶을 때는 [Show log] 버튼을 눌러 확인한다.
# [OK] 버튼을 누르면 저장소의 내용이 작업 공간으로 복사된다. 처음에는 초록색 체크 표시가 되어 있는데, 이는 파일이 저장소의 내용과 일치한다는 의미이다.
- 커밋 (Commit): 작업 공간에서 수정한 프로젝트를 저장소에 반영하는 것이다. Upload와 유사하다. Commit하기 전에 작업 공간의 파일을 충분히 시험해야 한다.
- * 수정된 파일 하나를 Commit 하는 방법
# Check out 되어 버전 관리되고 있는 파일이 저장소의 내용과 일치할 때는 초록색이다. 이 파일을 수정하면 붉은 느낌표가 나타난다. 저장소에 변경한 내용을 반영하려면 Commit해야 한다.
# 파일의 아이콘에 오른쪽 마우스 클릭하면 "SVN Commit..." 명령이 나타난다.
# 선택하면 Commit 대화 상자가 나타난다. Message난과 Changes made난이 있다.
# Message 난에 Commit message를 상세히 입력한다. Changes made 난에서 수정 부분을 확인할 수 있는 "Compare with base" 명령을 선택할 수 있다.
# [OK] 버튼을 누르면 변경 내용이 repository에 반영 된다.
# 다른 사용자가 같은 프로젝트를 check-out하거나 "Update" 명령을 사용하면 변경 내용이 반영된다.
- * 한 프로젝트 안에서 여러 개의 파일을 수정한 후 한번에 Commit하는 방법
# 수정된 파일을 담고 있는 폴더 아이콘을 확인한다. 붉은 느낌표가 떠 있으면 아이콘에 오른쪽 마우스 클릭하여 "SVN Commit..." 명령을 선택한다.
# Commit 대화 상자의 Message 난에 Commit message를 상세히 입력한다. Changes made 난에는 수정된 파일의 목록이 나타난다. 필요에 따라 compare with base 하여 변경 내용을 확인 할 수 있다.
# [OK] 버튼을 누르면 변경 내용이 repository에 반영 된다.
# 다른 사용자가 같은 프로젝트를 check-out하거나 “Update” 명령을 사용하면 변경 내용이 반영된다.
- 커밋 메시지 (Commit message): Commit 할 때 수정된 내용의 의미를 적어둔다.
- 업데이트 (Update): 공동으로 작업할 때 다른 사람들이 수정하여 commit한 모든 최신 version을 일괄적으로 받아오는 것이다. 역시 download와 유사하다.
- 차이점 비교 (Diff): 수정된 파일의 내용 또는 저장소에 저장된 두 revision 사이의 차이를 비교해 준다. TortoiseSVN의 배포물에 포함된 TortoiseMerge 유틸리티를 통해 시각적으로 비교할 수 있다.[10]
- 충돌 (Conflict)[15]: 여러 사용자가 동시에 같은 파일의 같은 부분을 수정했을 때 발생한다.
- 충돌 해결 (Resolve): 충돌 발생 시, 수정 내용을 병합하거나 한쪽의 변경 사항을 선택하여 해결한다. 예를 들어, Sue가 r4를 우선 update 받아서 수정 (Hot Dog을 추가 또는 파일 전체 덮어쓰기)한 다음 commit할 수 있다.
- 여러 사람이 동시에 작업한 결과를 안전하게 합치는 법
- * 모든 경우에 다 가능한 것은 아니다.
- * 잘만 되면 생산성을 n배 늘릴 수도 있다.
- * CVS나 Subversion인 경우에는 가능하지만, 다른 version control system에서는 불가능할 수도 있다.
- * 주의: Commit에 성공과 compile에 성공은 별개의 문제이다. Conflict 없이 여러 commit에 error 없이 성공하더라도 build 과정에서 error가 발생할 수 있다. Compile에 성공과 bug 없는 SW도 별개의 문제이다.
# 먼저, 어느 version을 기반으로 작업할 것인지 결정한다.
# 누가 어느 부분을 개정할 것인지 겹치지 않게 분명하게 결정한다. (누가 먼저 commit하더라도 상관 없도록 한다.)
# 각자 개정 후 commit 한다.
- 어떤 프로젝트가 lock 되었을 때의 효과: Subversion은 기본적으로 locking을 별로 선호하지 않는 시스템이다. 충돌이 일어날 수 있는 상황인 두 사람이 같은 파일 같은 version의 같은 부분을 수정할 확률이 높지 않다고 보는 것이다. 그러나 파일의 크기가 크지 않은 경우에는 누가 수정을 하더라도 비슷한 위치에서 수정이 일어나기 때문에 충돌이 일어날 가능성이 더 높을 것이다. 또한, 그림 파일 등과 같이 merge가 곤란한 파일의 경우, lock을 하는 편이 훨씬 안전하다. Harry가 어떤 파일을 lock하면, Sally는 파일을 check-out하거나 update 받을 수는 있지만 commit하지는 못한다. 이후 Harry가 lock을 풀면 Sally가 다시 commit할 수 있다.
- 키워드 (Keyword): Subversion 안에 보관중인 파일 자체에 파일의 이름, 저자, 개정 번호 등의 정보를 자동적으로 기록, 갱신하기 위하여 keyword를 사용할 수 있다. Subversion에서 사용할 수 있는 keyword들은 다음과 같다. (대소문자 구별)
| 키워드 | 설명 |
|---|---|
| $Date$ | 마지막으로 commit된 날짜 |
| $Revision$ | 마지막으로 commit된 개정판 |
| $Author$ | 마지막으로 commit한 개발자 |
- * 사용 예시 (C 소스)
```c
//$Date$
//$Revision$
//$Author$
#include
int main ()
{
printf ("Hello subverion!!!\n");
}
```
# 그 후 TortoiseSVN→Properties...를 선택하여 대화상자를 연다.
# svn:keyword를 선택한 후 Property value난에 “Date Revision Author”를 입력한다.
# [OK] 누르고 Commit 한다.
# Command line을 이용한다면 다음과 같이 할 수 있다.
```bash
$ svn propset svn:keywords "Date Author Revision" [대상 file 이름]
2. 3. 브랜치 (Branch), 태그 (Tag), 병합 (Merge)
- Branch: 프로젝트의 진행에 영향을 주지 않으면서 새로운 기능, 기술 등을 시험해 보고 싶을 때 사용한다. branch를 만들어서 프로젝트의 본류와 병행으로 개발할 수 있다. 개발이 성공적이라면 추후에 본류에 합류시킬 수 있다. 그렇지 못하다면 합류시키지 않으면 된다.
- Branch 또는 Tag 만들기
1. TortoiseSVN → Branch/tag
2. Copy (Branch / Tag) dialog box의 To URL 항목에서 [...] button 선택, Repo Browser를 연다.
3. branch 또는 tag를 저장할 folder를 새로 만든다. 예를 들어 원류가 file:///c:/svn_repository/Project01/trunk/ 였다면 branch 위치는 file:///c:/svn_repository/Project01/branch/ 와 같은 형식, Tag 위치는 file:///c:/svn_repository/Project01/tags/Success_LED_On/ 와 같은 형식으로 한다.
4. Copy (Branch / Tag) dialog box로 돌아온다.
5. file:///C:/svn_repository/Test/branch/[file이름]
6. Branch를 만들 revision을 선택
7. Log message 기록
8. Switch working copy to new branch/tag 선택
9. [OK] click
10. Branch가 정상적으로 이루어졌는지 보려면 해당 file을 우 클릭하고 Revision graph 선택.
- Tag: 따로 뽑아둔 중요한 개정판. 상업 배포판 (예: 윈도우 3.0, 3.1, 95, 97, ...) 또는 중요한 성공을 이룩한 개정판은 tag를 따로 붙여준다.
- Branch 또는 tag를 만들면 별도로 checkout해야 하는가?
- 불필요하다. Switch하면 변경된 data만 download 받는다. 원한다면 Main trunk를 check-out 한 folder 밖에 새로 folder를 하나 만들어서 check out할 수도 있다.
- Merge: 별도의 branch로 개발된 성과를 본류에 합치는 것
- Branch를 trunk에 합치기(merge)
1. Branch를 commit해둔다.
2. TortoiseSVN → Switch... 선택, Switch To Branch / Tag 대화상자를 연다.
3. To URL 난에서 trunk의 URL을 선택한다.
4. Revision은 보통 HEAD revision을 선택한다.
5. [OK]를 클릭하면 Working copy가 본류의 최신판으로 돌아간다.
6. TortoiseSVN → Merge... 선택 Merge 대화상자를 연다.
7. Merge a range of revisions를 선택한 다음 [Next]
8. URL to merge from에서 아까 작업하던 branch를 선택한다. 잘 기억 나지 않으면 [...]을 눌러서 repo-browser로 확인한다.
9. Revision to merge에는 보통 HEAD라고 입력한다음 [Next]
10. [Test merge]를 눌러 본다. Conflict가 나타나면 실제로 Merge할 때도 conflict가 발생할 것이다. 이는 수동으로 해소 (resolve) 해 주는 것이 바람직하다.
11. Resolve Conflict 대화상자가 나타나면 [Edit conflict]를 누른다.
12. Merge 화면이 나타날 것이다. 창틀(pane)이 두개면 오른쪽이 최종 결과이고, 셋이면 Merged가 최종이다. 셋인 경우를 기준으로 설명하면 위 두 창틀에서 어느쪽을 사용할 것인지 정해서 우click, Use this text block을 선택해 준다.
13. Save 하고 Merge 화면을 닫는다.
14. Resolve Conflict 대화상자에서 [Resolved]를 click한다. Merge 된 file이 working copy에 반영된다.
15. TortoiseSVN → Diff 선택하여 변경 내용이 바르게 반영되었는지 확인한다.
16. Commit 한다.
3. 유사 도구
- TortoiseCVS는 CVS를 위한 유사한 도구이며, TortoiseSVN의 기반이 되었다.
- TortoiseGit는 Git를 위한 유사한 도구이다.
- TortoiseBzr는 Bazaar를 위한 유사한 도구이다.
- TortoiseHg는 Mercurial을 위한 유사한 도구이다.
- RabbitVCS는 리눅스에서 사용할 수 있는 유사한 도구이다.
4. 통합 개발 환경(IDE) 지원
TortoiseSVN은 Microsoft Visual Studio에 통합할 수 있는 VisualSVN, VsTortoise, AnkhSVN 등의 서드파티 플러그인을 제공한다.[11] SVN-Monitor라는 서드파티 저장소 모니터링 애플리케이션은 TortoiseSVN을 사용하며, 2011년에 Vercue로 발전했다.[12]
참조
[1]
웹사이트
History
https://web.archive.[...]
[2]
웹사이트
Status
https://tortoisesvn.[...]
[3]
웹사이트
SourceForge.net 2007 Community Choice Awards
https://sourceforge.[...]
SourceForge.net
2024-04-23
[4]
웹사이트
tortoisesvn: TortoiseMerge - a text diff tool
http://tortoisesvn.t[...]
2024-04-23
[5]
웹사이트
SVN-Monitor
http://www.svnmonito[...]
2024-04-23
[6]
웹사이트
https://tortoisesvn.[...]
[7]
웹사이트
https://tortoisesvn.[...]
[8]
문서
でびあんぐる p.185
[9]
웹사이트
SourceForge.net 2007 Community Choice Awards
https://sourceforge.[...]
SourceForge.net
2011-10-29
[10]
웹사이트
tortoisesvn: TortoiseMerge - a text diff tool
http://tortoisesvn.t[...]
2011-10-29
[11]
웹사이트
VisualSVN: Subversion for Visual Studio
https://www.visualsv[...]
2011-10-29
[12]
웹사이트
SVN-Monitor
http://www.svnmonito[...]
2011-10-29
[13]
웹인용
TortoiseSVN - A Subversion client for Windows
http://tortoisesvn.n[...]
2009-06-14
[14]
서적
이클립스 프로젝트 필수 유틸리티
한빛 미디어
[15]
웹인용
A Visual Guide to Version Control
http://betterexplain[...]
BetterExplained
2009-06-14
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com