Visual SourceSafe 6.0 #2

4. Check Out / Check In

소스등록을 완료 했으면 이제 준비작업은 다 끝난 겁니다. 지금까지 걸어온 길은 이제 소스의 버전관리를 위한 준비과정이었습니다.
여기까지 셋팅이 완료되면 이제 진짜 버전관리에 들어가는 것입니다.

맨 처음에 언급한 버전관리라는 부분을 읽고 기억하시는 분도 계시리라 믿지만
혹시나 하는 노파심에 다시 버전관리에 정의를 다시 알려드리겠습니다.
 

버전 관리의 핵은 변화된 시점을 정확히 체크해주는 것입니다. 물론 VSS가 어느 정도의 자동화를 해준다고 하지만, 실제 변화된 시점을
알려주는 것은 바로 개발자의 몫입니다. 물론 이렇게 간단하게 끊어 버리면 많은 분들이 의문을 가질 수 있습니다.
무엇을 끊고 무엇이 변화된 시점인지... 전혀 감이 안 잡힌다는 문제죠.
일단 제가 가진 소스를 가지고 어떻게 표현을 하는지 한번 언급을 하도록 하겠습니다.

소스의 변화라는 것은 단순 주석 변경이나, 엔터키 입력, Space 키 입력을 의미하는 것이 아닙니다.
일 예를 들기위해 제 나름대로의 기준은 클래스 추가, 변경, 삭제 입니다.
물론 정책별로 들립니다. 실행되는 모듈을 기준으로 잡을 수도 있고, 기능의 세세한 부분의 변경도 될 수 있겠지만,
저의 기준은 클래스를 두고 봅니다. 그래서 클래스의 추가가 발생하거나, 클래스 내부가 변경되거나, 삭제 될 때
소스의 버전 업 단계를 둡니다.

하나의 가상의 이야기를 적어 보겠습니다.

제가 이 VSS를 설명하기 위해 제 나름대로의 프로젝트인 naoko를 예로 들겠습니다.
하지만 아직 이 naoko는 현재 Dialog-base MFC Application 형태로 Wizard를 사용하여 자동 생성해놓은 상태입니다. (笑)
일단 설명을 위해 작성한것에 불과하니깐요.
그럼 본격적인 설명으로 들어가죠.
일단 모듈을 하나 추가하고 싶습니다. 자동으로 만들어진 클래스 3개 중에 Dialog 부분에서 LButtonDown 시에 확인창을 띄우는 기능을 추가하고 싶어졌습니다.
일단 제 소스형태를 보여드리죠.

  

보시면 알겠지만 뭐 들어 있는 건 거의 없습니다. Dialog-base로 Wizard로 만들어 놓고, 설계만 하고 코딩은 전혀 안 한 상태죠.

모듈 추가이므로 이 부분을 VSS에게 알려야 합니다. 즉 CNaokoDlg 에 LButtonDown을 추가한다는 사실을 VSS에게 알려줘야
하는 것입니다. 게다가, 이 소스는 바로 앞장에서 말씀 드렸듯이 모든 Source에 Read-only가 되어있다는 사실입니다.
어차피 소스의 수정은 안 된다는 의미입니다.

일단 VSS를 띄우고 해당하는 소스부분을 선택합니다. 지금 수정할 Class가 CNaokoDlg 이므로 naokodlg.h 와 naokodlg.cpp를
수정하게 될 것입니다. 이 부분을 VSS 상에서 선택 처리 해야 합니다.


보시면 아시겠지만 왼쪽 트리에서는 naoko를 선택하고 오른쪽 소스 리스트에서는 해당하는 소스 파일이름을 멀티 셀렉트했음을 알 수 있습니다.
일단 이렇게 선택하시고 메뉴의 SourceSafe -> Check Out을 선택합니다.
즉 소스의 수정의 시작을 의미합니다. 이렇게 선택하면 아래와 같은 대화창이 뜹니다.


여기서 보면 각종 여러 가지 옵션들이 있는데, 이 부분은 나중의 연구부분으로 두고 일단은 간단하게 넘어가도록 하죠.
Comment에 무언가를 쓰게 되어 있고, To에는 현재 프로젝트의 소스파일 위치를 알려주고 있죠.
거기에 Don't get local copy 와 Only show this dialog when the Shift key is down 의 체크가 있고,
Advanced 라고 해서 무언가 더 펼쳐 질것 같고요.
체크와 Advanced 쪽은 넘어가죠.
현재 중요한 것은 Comment 정도니깐요.

Comment에 현재 왜 이 소스를 Check-out 하는 지를 적어 줍니다. 물론 Check-out에서 굳이 내용을 적을 필요는 없습니다.
VSS 로그 상에서는 그 부분은 기재하지 않거든요. 그럼 왜 적어 줄까요?
혼자 작업하는 경우에는 거의 쓰이는 경우가 없지만 단체로 작업할 때는 쓰입니다.
즉 A라는 사람이 해당 Source를 Check-out 해버리면 다른 사람들은 VSS상에서 Check-out을 승인 받지 못합니다.
즉 소스를 전혀 수정하지 못하게 되죠. 이 때 Check-out 승인을 받지 않은 사람은 왜 승인을 못 받는지에 대해서
간단한 메시지를 이 Comment를 통해 받게 되죠.

즉 혼자 짤 경우에는 Comment를 비워놓고 OK 하셔도 됩니다. 하지만 팀 플레이 하게 되는 경우가 발생할 수 있으며
좋은 버릇은 처음 부터 들여 놓는 것이 좋으니깐, 가급적 써주세요. 번.거.롭.더.라.도. 말이죠.
원래 버전관리는 무척 번거로운 작업입니다.


Check-out 하시면 드디어 무언가 변화된 모습을 보실 수 있습니다. naokoDlg.cpp와 naokoDlg.h 아이콘에 check 표시가
되어 있죠. 바로 Check-out의 시작입니다. 즉 이 소스는 User에 적힌 ID로 접근한 사람만이 변경을 할 수 있다는 의미입니다.
Check Out Folder의 의미는 해당 ID로 접근한 사람의 로컬 PC내의 Working Folder를 보여줍니다.
사람마다 소스를 넣는 위치는 다 틀리므로 어디에 있는지 알려주는 것이죠 ^^


자, 이제 LButtonDown의 모듈을 넣습니다.


아주 웃기는 내용이지만 일단 모듈 추가를 한 것이죠. 일단 해당 소스를 컴파일 해서 실험을 합니다.
컴파일은 제대로 되는지 정상적으로 작동하는지. 이 부분의 기준은 개인적으로 가지고 있는 점검표를 가지고 점검을 해보세요.
꼭 점검을 제대로 하시는 것이 좋죠. VSS에 등재하기 전에 꼭 이런 테스트를 가지도록 하세요.
번거로운 작업이지만 나중을 위해서는 꼭 해두는 것이 좋습니다.

그리고 난 뒤에 변경된 소스를 저장하세요. 가급적 Files -> Save All을 통해 저장을 해두시기 바랍니다. 단순히 소스상의
변경된 내용이야 소스파일을 선택해서 저장하면 되지만, 파일을 추가하거나 삭제한 경우 *.dsp 파일이 변경이 되는데
대부분 이 파일을 저장하는 것을 잊어 먹는 경우가 많습니다. Save All 하시면 이 파일도 저장이 되므로 꼭 전체 저장을 해주시기
바랍니다.

자 대망의 Check-in.
체크인전 중요한 점을 잊지 않으셔야 될것 같습니다.
물론 추후 Versionning 이라는 주제로 다시 언급하겠지만, 여기서 간단하게 언급을 하자면, Check-in 전에 반드시 정상적으로 실행되는 모듈이여야 합니다.
Check-in 하게되면 VSS 상에 등록이 되는데, 원래대로 돌아가는데 컴파일 오류나 버그가 있으면 굉장히 곤란한 상황에 빠집니다. 반드시 컴파일 하고, 자신만의 테스트 후에 등록하세요


이제 VSS 상에 변경된 내용을 적용을 해야 합니다. 아직까진 자신의 PC내의 소스만 변경된 것이지 VSS 상에서는 저장이 된 것이 아닙니다. 즉, 이젠 변경된 내용을 VSS에 올리는 작업을 해야 합니다. 바로 전에도 언급했듯이 반드시 전체 저장을 해주시기 바랍니다.
오로지 로컬상에 저장된 파일을 올리지, VC에 떠 있는 파일을 올리는 것이 아닙니다 !!!!



check-in 메뉴가 이전과는 다르게 활성화 되어 있죠?
Check-out이 된 상태의 소스만 저렇게 활성화가 됩니다.
일단 저 두 개의 파일을  Check-in 해줍니다.


Check-out과는 다르게 Comment의 크기가 압도적이죠? Check-in이 되는 순간 VSS상에 기록이 완전히 되버리기 때문입니다.
가급적 상세하게 적어주세요. 물론 빈 채로 두어도 되지만, 자신이 왜 현재 소스를 Check-in 했는지의 여부를 나중에 알 수 있게 되기 때문입니다.
나중에 문득 왜 이렇게 수정이 되었는지를 알 수 있게 되는 중요한 단서가 될 수 있기 때문이죠.

여기서 잠깐! Check-out 이라는 단어의 의미를 먼저 아시면 헷갈릴 위험이 적죠. 지금 check-out을 사전에서 찾아보시면 "기계의 점검"을 의미합니다.
즉 여기서는 소스의 점검이 되겠죠. check-in은 점검 완료의 등재를 의미하게 되죠. 이 부분을 헷갈리지 마세요.
Check Out으로 시작해서 Check In으로 끝난다는 사실을 기억하시면 됩니다.
728x90

+ Recent posts