팀 블로그

SVN 강좌(2) – SVN을 효율적으로 사용하기 위한 여러 기능

2008.01.24 17:56:50

관리자




지난 편에서 SVN의 가장 기본적인 부분을 확인했다면, 이제는 좀 더 나아가 SVN을 효율적으로 사용하기 위한 여러 기능을 알아볼 차례입니다.

SVN의 기능은 정말 많은 것이 있으므로, 개발이나 프로젝트에 어떤 것이 필요한지 필요하지 않은지를 잘 선별하여 적용하는 것이 좋겠습니다.

자, 그럼 한번 알아보도록 하겠습니다.


실시간으로 알 수 있는 아이콘
SVN을 사용하다 보면, 체크아웃 된 최상위 폴더와 파일에 오버레이 아이콘이 표시되는 것을 볼 수 있을 것입니다.
아이콘을 통해서 현재 해당 폴더나 파일의 상태 등을 실시간으로 알 수 있습니다.

1.jpg

2.jpg






SVN의 기능
위에서 언급했듯이, SVN은 참으로 많은 기능을 갖고 있습니다.
여기서는 저희가 가장 많이 사용하고 기본적인 기능을 위주로 작성해보았습니다.

일단 기능을 살펴보기에 앞서 자주 쓰는 용어를 알아두어야 하는데요.
아래와 같은 용어는 항상 기억해두고 있어야 기능 사용에 무리가 없을 것입니다.

원본 저장소 (Repository) : 원본 소스를 저장하고 있는 저장소를 의미합니다.
작업 디렉토리 (Working Copy) : 원본 저장소로부터 체크아웃을 통해 내려 받은 내 로컬 PC에 있는 작업 사본 디렉토리를 의미합니다.
리비전(Revision) : 소스 파일들을 수정하여 커밋하게 되면 일정한 규칙에 의해 숫자가 증가 합니다. 저장소에 저장된 각각의 파일 버전이라 할 수 있습니다. Subversion의 경우 파일 별로 리비전이 매겨지지 않고 한번 커밋 한 것으로 전체 리비전이 매겨 집니다. 리비전을 보고 프로젝트 진행 상황을 알 수 있습니다.

2.jpg

1. SVN Update : 체크아웃을 받은 Working Copy를 원본 저장소의 가장 최신 커밋된 버전까지 업데이트하는 명령어입니다.

2. SVN Commit : Working Copy에서 변경, 추가 및 삭제된 파일을 원본 저장소인 서버에 적용하는 것을 말합니다.

3. Show log : 어떤 파일이 커밋 되었는지와 그 파일에 대한 작업자들의 커밋 내용을 볼 수 있습니다.

3.jpg






4. Repo-Browser : 원본 저장소를 브라우저로 탐색할 수 있으며, 따라서 서버에서 직접 작업이 가능합니다.

4.jpg

작업본에서 작업을 할 때와 다른 점이 없는 듯 하지만, 원본 저장소에서 직접 수정을 가함과 동시에 자동으로 커밋이 완료된다는 점을 주의해야 합니다.





5. Update to Revision : 원하는 리비전으로 파일을 변경할 수 있습니다.

5.jpg




6. Add/Delete : 폴더 및 파일을 삭제합니다. 원하는 폴더나 파일을 선택 후, Delete 버튼을 누른 후에 커밋을 해주어야만 적용이 됩니다.

- Add 하는 방법

6.jpg

7.jpg

파일을 선택한 후 Add 버튼을 누르게 되면 위와 같은 창이 팝업 됩니다.





8.jpg

추가된 파일을 적용시키기 위해서는 커밋을 해줘야 합니다. 커밋을 하면 위와 같은 창이 팝업 됩니다

9.jpg

OK 버튼을 누르면 파일 추가가 완료됩니다.




Delete 하는 방법

10.jpg

파일을 선택한 후 Delete 버튼을 누르면 파일이 사라집니다.


10.jpg

삭제된 파일을 적용시키기 위해서는 커밋을 해줘야 합니다. 커밋을 하면 위와 같은 창이 팝업 됩니다.


120.jpg

위와 같은 창이 나오면 완전 삭제되었음을 알 수 있으며, 삭제되었을 시의 리비전도 확인 가능합니다.






7. Revert : 최근에 작업 디렉토리에 예약했던 작업을 되돌립니다.

130.jpg






8. Clean up : 폴더나 파일 단위 별로 각종 트랜잭션에 의해 업데이트 등이 되지 않는 등의 lock 이 된 경우 클린업을 함으로써 트랜잭션들을 무효화시켜 정리해주는 역할을 합니다.



9. Get lock, Release lock : 여러 작업자가 한번에 작업을 하게 되므로, 다른 작업자가 변경하지 못하도록 파일을 잠그거나 푸는 기능을 합니다. 이때 로그를 적어 왜 파일을 잠갔는지를 기록할 수 있습니다

140.jpg




10. Switch : 다른 원본 저장소로부터 업데이트를 받을 수 있습니다.
예) A서버의 파일을 B서버로 내려 받을 수 있음





11. Merge : 파일을 동일하도록 적용하는 기능입니다. 메인 svn과 파생되어 나온 브랜치 svn의 파일을 동일하게 만들어 주는 역할을 합니다.



150.jpg

12. Export : 원하는 폴더나 파일을 다른 폴더로 보낼 수 있는 기능입니다. SVN에서 필요한 폴더나 파일을 바로 복사하게 될 경우, 읽기 전용 파일(.svn)까지 함께 복사되어 용량이 매우 커지게 됩니다.
이런 단점을 보완해주기 위하여 Export 기능을 사용합니다.





13. Add : 폴더 및 파일을 추가합니다. 원하는 폴더나 파일을 선택 후, Add 버튼을 누른 후에 커밋을 해주어야만 적용이 됩니다.




14. Create patch/Apply patch : 커밋 권한 없이 읽기 기능만 가능한 작업자가 수정된 사항을 서버에 적용 시킬 시 사용하는 기능입니다. 파일을 저장하여 커밋 권한이 있는 관리자만 커밋을 할 수 있도록 하는 방식입니다.

160.jpg

Create patch를 누르면 위와 같은 창이 팝업 되며 수정된 파일을 선택하여 저장합니다.


170.jpg
원하는 폴더에 관련 파일을 patch 나 diff 확장자로 저장합니다.




180.jpg
Apply patch를 눌러 관련 파일을 서버 내에 적용합니다.





14. Setting : SVN 내의 옵션이나 기타 세팅을 변경하는 기능입니다.
주로 사용하는 옵션은 아래와 같습니다.


- 불필요한 파일을 쉽게 제외해보자.
커밋 시 불필요한 업로드를 줄여주기 위한 방법입니다. 일일이 손으로 해당 파일을 제외하기 힘들 경우, 이곳이 무시할 파일의 확장자나 파일명을 입력하면 됩니다.
예를 들어, tmp으로 되어 있는 확장자는 무시하고 싶다면, 아래 칸에 *.tmp 이라 적어주면 됩니다.

190.jpg



- 계정 문제로 충돌이 일어나 svn 작동이 되지 않을 경우

200.jpg

간혹 자신의 PC에 계정정보가 1개 이상 캐쉬되어 있을 때 위와 같은 오류가 일어날 수 있다.
이런 경우에는 인증정보 캐쉬를 초기화 해야하는데, 이 때 Setting 에서 클리어 시킴으로써 오류를 없앨 수 있다.




10.jpg

지금까지 SVN의 기본적이고 자주 사용하는 기능에 대해서 알아봤습니다.
다만 처음 말씀 드렸다시피, SVN은 이 외에도 유용한 많은 기능을 갖고 있습니다. 좀 더 자세한 기능에 대해서는 마지막 편인 다음 편에 더 많이 알아보도록 하겠습니다.