svn에 관한 질문 드립니다.

moon1t16의 이미지

안녕하세요

전에 다니시던 소프트웨어 개발자분들이 죄다 퇴직하여 저 혼자 인수인계란 전혀 받지 못한 상태에서 어리버리 멍때리고 있는 신입사원입니다.
(머릿글에 이렇게 나열한 이유는 댓글에 "전 직원분한테 전화통화하세요" 이런 답글이 올라올까봐 내심 무섭...ㅠㅋ 전화 안받거든요...ㅠㅠ)

자 그럼 시작합니다 ~! ^^

일단 위에서 지시가 떨어졌습니다.

회사 서버에 svn을 이용하여 소스가저장되어있고 그 소스를 svn을 사용하여 다운받아 컴파일 한 뒤 빌드된 파일을 추출하거라.

?????

이게 뭔 소리랩니까...?

아 그 그래... 뭔 소린진 알겠습니다.. 그래서 제 접근방식은 일단 svn이 뭔지부터 .....

svn이라면 ....
(인터넷 서치 결과)

SVN은 이러한 난감하고 답답한 상황을 어느정도 해소해 준다. 소스의 변경사항 이력관리가 가능하고, 타인의 변경 사항에 대해서 현재 작업중인 파일에 대한 비교, 조합(Merge) 가 가능하며, 변경사항에 대해서 다른 개발 방향으로 분기(Branch)가 가능하다.
수정된 소스 파일에 일률적인 버젼과 로그를 남기고 각 파일의 빌드 이력을 남겨 하나의 프로젝트를 지원하기 위한 어플리케이션이다.

라고 까지만 알고 있습니다.

현재 네이버를 마구마구 뒤지다가 http://tortoisesvn.net/ 싸이트에서 받으라는 블로거의 말을 듣고 따라 하고있습니다.

그 분 블로그는 http://limekatjq.blog.me/40134147739 여기인데요...

이 분이 쓴 글을 보면 버전이 정말 중요하다고 말을 하네요.

여기서 첫번째 궁금점!!!!!

퇴직한 전 근무자가 어떠한 버전의 svn을 사용했는지 모르는 상태인데요 (알려줄리 만무함)

꼭 그 버전에 맞아야 소스를 다운받을 수 있는건가요..?

저는 저~~ 위의 블로그에 들어가서 아무버전의 svn을 받으면 되는거 아닙니까..?

두번째 질문 !

svn 설치된 것을 이용하여 소스를 다운받아야하는데...

어떠한 개념이죠...?

서버 아이피에 접속할수 있는 알ftp같은 프로그램이라고 이해하면 되는건가요...?

컴파일에 대해서는 이 부분이 해결되면 또 다시 여쭈어볼게요...

제 목적은 어떠한 svn프로그램을 설치해서 원하는 파일을 어떻게 다운받는지가 궁금하네요....

답변 기다리겠습니다 ! ㅎㅎ

부디 고수님들 네이트온 abc1000krkr@yahoo.co.kr 친추하셔서 저랑 같이 놀아보실 생각은 없으신건지..ㅠ0ㅠ

addnull의 이미지

> 여기서 첫번째 궁금점!!!!!
> 퇴직한 전 근무자가 어떠한 버전의 svn을 사용했는지 모르는 상태인데요 (알려줄리 만무함)
> 꼭 그 버전에 맞아야 소스를 다운받을 수 있는건가요..?
> 저는 저~~ 위의 블로그에 들어가서 아무버전의 svn을 받으면 되는거 아닙니까..?

svn 이란걸 결국 서버-클라이언트 모델로 소스를 관리하는 툴입니다.
서버는 이미 설치가 되어있을테니 신경쓰시지 않아도 되구요. 클라이언트는 여러 개가 있습니다.
본문에 언급하신 ftp 를 예를 들면, ftp 클라이언트도 종류가 많죠.
알ftp, FileZilla 라든지.. (오프토픽이지만 알ftp 사용은 권장하지 않습니다..)

tortoisesvn (애칭 "똘똘이"??라고도 합니다.)를 고려하시는걸로보아 윈도우 환경에서 개발 중이신것 같군요.
똘똘이가 윈도우 탐색기에 통합되어 동작하는 방식이라서 svn 첫 시작으로 괜찮은 선택인 것 같습니다 =)

하지만 나중에 익숙해지면 rapidSVN 같은 툴이 더 좋으실지도 모르겠군요.
윈도우 탐색기에 통합되면 항상 딸림메뉴(오른쪽 버튼 클릭시 나오는..)에 svn 관련 메뉴가 보이게 되는데 이게 거슬릴 수 있습니다.
좀 더 익숙해지면 최종적으로 CUI 기반의 툴이 가장 편해질 수도 있습니다.

클라이언트 버전은 가장 최신버전을 받으셔도 무관합니다.
결국 서버-클라이언트 간의 프로토콜은 동일하니까요.
다만 최신 버전일 경우에 부가 기능이 몇 개 더 있고 없고의 차이입니다.

> 두번째 질문 !
> svn 설치된 것을 이용하여 소스를 다운받아야하는데...
> 어떠한 개념이죠...?
> 서버 아이피에 접속할수 있는 알ftp같은 프로그램이라고 이해하면 되는건가요...?

기본적으로 소스 코드, 파일들이 모두 서버에 위치해 있고,
각 개발자들은 서버에서 해당 파일을 카피(업데이트)해서 자기 컴퓨터에서 개발(파일 수정)한 후에
변경 내용을 다시 서버에 업로드(커밋)하면,
다른 개발자들은 업데이트 명령을 실행하므로서 다른 개발자들이 커밋한 사항을 받아볼 수 있습니다.

즉, 서버-개발자1-개발자2...개발자n
간에 서로 가진 코드를 싱크해준다고 보시는 기능이 첫번째 핵심입니다.

두번째 핵심으론 코드 변경사항 관리입니다.
예를 들어 A란 파일이 있습니다.
A(1) 을 A 첫번째 버전이라고 생각하면,
프로젝트가 진행되면서 A(2), A(3)... 이렇게 버전이 올라가겠죠?
하지만 때론 A 파일의 이전 내용을 보고 싶을 수 있습니다.
그럴때 svn 서버에 가서 A(보고싶은버전)을 요청하면 볼 수가 있는거죠.

부가적으로 두 버전의 차이점을 비교하는 것도 용이해집니다.
예를 들면 A(1) 와 A(10) 사이에 변경된 내용(9번 바뀐 것들)을 한번에 보고 싶을 때 말이죠.
이건 svn 클라이언트 마다 diff 라는 명칭으로 불리는 기능인데요.
똘똘이의 diff 기능이 좀 부실해서 개인적으론 winmerge라는 툴을 추천해드립니다.
똘똘이 + winmerge 가 윈도우 환경의 개발자들에겐 거의 스탠다드일거라 생각되네요.

도움이 되었길 빕니다.

아참.. 사족으로
svn 클라이언트들마다 사용하는 명령 용어가 좀 다르더군요... 혹시 제가 언급한 용어가 "똘똘이"랑 정확하게 같을지 모르겠네요.
제가 쓰는 용어와 뜻은,

커밋 : 클라이언트 -> 서버로 변경 사항 업로드
업데이트 : 서버 -> 클라이언트로 싱크, 때론 "카피"라고 말하기도 합니다.

익명 사용자의 이미지

똘똘이에서 한참 웃고갑니다 ㅎㅎㅎㅎㅎ