이 섹션에서는 작은 테스트 저장소에서 가장 일반적으로 사용되는 기능 중 일부를 시도하는 방법을 보여줍니다. 물론 모든 것을 설명하지는 않습니다. 이것은 단지 빠른 시작 가이드일 뿐입니다. 일단 시작하고 실행되면, 이 사용자 가이드의 나머지 부분을 읽는 데 시간을 할애해야 합니다. 이 가이드는 훨씬 더 자세히 설명합니다. 또한 적절한 Subversion 서버를 설정하는 방법에 대해서도 더 자세히 설명합니다.
실제 프로젝트의 경우 안전한 곳에 저장소가 설정되어 있고 이를 제어할 Subversion 서버가 있을 것입니다. 이 자습서에서는 하드 드라이브에 생성된 저장소에 서버 없이 직접 액세스할 수 있는 Subversion의 로컬 저장소 기능을 사용할 것입니다.
먼저 PC에 새 빈 디렉터리를 만듭니다. 아무데나 만들 수 있지만, 이 자습서에서는 C:\svn_repos라고 부르겠습니다. 이제 새 폴더를 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 → 을 선택합니다. 그러면 폴더 안에 저장소가 생성되어 사용할 준비가 됩니다. 또한 버튼을 클릭하여 기본 내부 폴더 구조를 생성할 것입니다.
로컬 저장소 기능은 테스트 및 평가에 매우 유용하지만, 한 대의 PC에서 단독 개발자로 작업하는 경우가 아니라면 항상 적절한 Subversion 서버를 사용해야 합니다. 소규모 회사에서는 서버 설정 작업을 피하고 네트워크 공유를 통해 저장소에 액세스하려고 할 수 있습니다. 절대로 그렇게 하지 마십시오. 데이터를 잃게 될 것입니다. 이것이 왜 나쁜 생각인지, 그리고 서버를 설정하는 방법을 알아보려면 “네트워크 공유에서 저장소 액세스” 섹션을 읽어보십시오.
이제 저장소가 있지만, 현재는 완전히 비어 있습니다. C:\Projects\Widget1에 추가하고 싶은 파일 세트가 있다고 가정해 보겠습니다. 탐색기에서 Widget1 폴더로 이동하여 마우스 오른쪽 버튼으로 클릭합니다. 이제 → 를 선택하면 대화 상자가 나타납니다.
Subversion 저장소는 URL로 참조되며, 이를 통해 인터넷 어디든 저장소를 지정할 수 있습니다. 이 경우 file:///c:/svn_repos/trunk URL을 가진 자체 로컬 저장소를 가리켜야 하며, 여기에 자체 프로젝트 이름인 Widget1을 추가합니다. file: 뒤에 슬래시가 3개 있고, 전체적으로 역슬래시가 아닌 슬래시가 사용된다는 점에 유의하십시오.
이 대화 상자의 또 다른 중요한 기능은 가져오기 메시지 상자로, 수행 중인 작업을 설명하는 메시지를 입력할 수 있습니다. 나중에 프로젝트 히스토리를 살펴보면, 이 커밋 메시지들은 어떤 변경 사항이 만들어졌고 그 이유는 무엇인지에 대한 귀중한 지침이 됩니다. 이 경우 “Widget1 프로젝트 가져오기”와 같이 간단하게 말할 수 있습니다. 을 클릭하면 폴더가 저장소에 추가됩니다.
이제 저장소에 프로젝트가 있으므로, 일상적인 작업을 위해 사용할 작업 사본을 만들어야 합니다. 폴더를 가져오는 행위가 자동으로 해당 폴더를 작업 사본으로 바꾸는 것은 아닙니다. 새 작업 사본을 만드는 Subversion 용어는 체크아웃입니다. 우리는 저장소의 Widget1 폴더를 PC의 C:\Projects\Widget1-Dev라는 개발 폴더로 체크아웃할 것입니다. 해당 폴더를 생성한 다음, 마우스 오른쪽 버튼으로 클릭하고 → 을 선택합니다. 그런 다음 체크아웃할 URL을 입력합니다. 이 경우 file:///c:/svn_repos/trunk/Widget1을 입력하고 을 클릭합니다. 그러면 개발 폴더에 저장소의 파일이 채워집니다.
기본 설정에서 체크아웃 메뉴 항목은 TortoiseSVN 하위 메뉴에 있지 않고, 탐색기 메뉴의 상단에 표시됩니다. 하위 메뉴에 없는 TortoiseSVN 명령에는 SVN이 앞에 붙습니다:
이 폴더의 모양이 원래 폴더와 다르다는 것을 알 수 있을 것입니다. 모든 파일의 왼쪽 하단 모서리에는 녹색 확인 표시가 있습니다. 이는 TortoiseSVN의 상태 아이콘으로, 작업 사본에만 존재합니다. 녹색 상태는 파일이 저장소의 버전과 비교하여 변경되지 않았음을 나타냅니다.
이제 작업을 시작할 시간입니다. Widget1-Dev 폴더에서 파일을 편집하기 시작합니다. 예를 들어, Widget1.c와 ReadMe.txt를 변경했다고 가정해 봅시다. 이 파일들의 아이콘 오버레이가 이제 빨간색으로 바뀌어 로컬에서 변경 사항이 생겼음을 나타냅니다.
하지만 변경 사항은 무엇일까요? 변경된 파일 중 하나를 마우스 오른쪽 버튼으로 클릭하고 → 를 선택합니다. TortoiseSVN의 파일 비교 도구가 시작되어 정확히 어떤 줄이 변경되었는지 보여줍니다.
자, 변경 사항이 마음에 드니 저장소를 업데이트해 봅시다. 이 작업은 변경 사항을 커밋하는 것이라고 합니다. Widget1-Dev 폴더를 마우스 오른쪽 버튼으로 클릭하고 → 을 선택합니다. 커밋 대화 상자에는 변경된 파일 목록이 체크박스와 함께 표시됩니다. 해당 파일 중 일부만 선택할 수도 있지만, 이 경우에는 두 파일의 변경 사항을 모두 커밋할 것입니다. 변경 사항에 대한 메시지를 입력하고 을 클릭합니다. 진행률 대화 상자에는 파일이 저장소에 업로드되는 과정이 표시되며, 작업이 완료됩니다.
프로젝트가 진행됨에 따라 새 파일을 추가해야 할 것입니다. 예를 들어, Extras.c에 새로운 기능을 추가하고 기존 Makefile에 참조를 추가했다고 가정해 봅시다. 폴더를 마우스 오른쪽 버튼으로 클릭하고 → 를 선택합니다. 추가 대화 상자에는 이제 모든 버전 관리되지 않은 파일이 표시되며, 추가하려는 파일을 선택할 수 있습니다. 파일을 추가하는 또 다른 방법은 파일 자체를 마우스 오른쪽 버튼으로 클릭하고 → 를 선택하는 것입니다.
이제 폴더를 커밋하러 가면 새 파일은 추가됨으로 표시되고 기존 파일은 수정됨으로 표시됩니다. 수정된 파일을 두 번 클릭하여 정확히 어떤 변경 사항이 있었는지 확인할 수 있습니다.
TortoiseSVN의 가장 유용한 기능 중 하나는 로그 대화 상자입니다. 이 대화 상자는 파일 또는 폴더에 대해 수행한 모든 커밋 목록과 입력한 상세 커밋 메시지를 보여줍니다(제시된 대로 커밋 메시지를 입력하셨나요? 그렇지 않다면, 이제 이것이 왜 중요한지 알게 될 것입니다).
음, 여기서 약간 속임수를 써서 TortoiseSVN 저장소의 스크린샷을 사용했습니다.
상단 창에는 커밋 메시지의 시작 부분과 함께 커밋된 리비전 목록이 표시됩니다. 이 리비전 중 하나를 선택하면 중간 창에 해당 리비전에 대한 전체 로그 메시지가 표시되고, 하단 창에는 변경된 파일 및 폴더 목록이 표시됩니다.
각 창에는 정보를 사용하는 훨씬 더 많은 방법을 제공하는 상황에 맞는 메뉴가 있습니다. 하단 창에서는 파일을 두 번 클릭하여 해당 리비전에서 정확히 어떤 변경 사항이 있었는지 확인할 수 있습니다. 전체 내용은 “리비전 로그 대화 상자” 섹션을 읽어보십시오.
모든 리비전 제어 시스템의 한 가지 기능은 이전에 수행한 변경 사항을 되돌릴 수 있다는 것입니다. 예상대로 TortoiseSVN은 이를 쉽게 액세스할 수 있도록 합니다.
아직 커밋하지 않은 변경 사항을 제거하고 파일을 편집하기 전 상태로 되돌리고 싶다면 → 가 도움이 됩니다. 이 기능은 변경 사항을 (혹시 모를 경우를 대비해 휴지통으로) 버리고 처음에 시작했던 커밋된 버전으로 되돌립니다. 변경 사항 중 일부만 제거하고 싶다면 TortoiseMerge를 사용하여 차이점을 확인하고 변경된 줄을 선택적으로 되돌릴 수 있습니다.
특정 리비전의 영향을 되돌리고 싶다면, 로그 대화 상자에서 시작하여 문제가 되는 리비전을 찾으십시오. → 를 선택하면 해당 변경 사항이 취소됩니다.