본문 바로가기

Dev.../플밍 관련 자료

[펌] 소스 세이프

Visual Source Safe(VSS)에 대해서 | 아하 그렇구나!2004/09/13 15:28
http://blog.naver.com/4eyer/140005789883

Check Out과 Check In이라는 간단한 동작으로 코드에 대한 관리를 해결하게 됩니다.

 

즉, Check Out을 한 상태에서만 소스를 수정할 수 있으며  하나의 파일에 대해서는 단 한 개발자만이 Check Out을 하여 파일을 수정할 수 있습니다.  수정을 완료하면 Check In을 하여 변경된 내용을 데이터베이스에 저장합니다. 중요한 것은, 반드시 Refresh를 하고 Check Out / Check In 해야한다는 것이다.


Check Out - 소스를 수정할 때
Undo Check Out - Check In을 안하고, 소스를 원상복귀하고 싶을 때

Check In - 수정된 소스를 DB에 저장할 때

 

[참고] Check Out을 안하고 수정하고 싶을 때는 파일을 Writable만으로 변경해서 바꾼다.

          이것을 등록할 때에는 나중에 Check Out을 통해 받은 후 변경한 파일과 Merge를 한 후

          다시 Check In 해 준다.

 

좀 더 자세히 알고 싶으면 아래를 참고한다.

http://kr.ks.yahoo.com/service/ques_reply/ques_view.html?dnum=JAI&qnum=131157

 

 

더 자세하게 나온 홈페이지도 있다.

http://canday.pe.kr/wiki/wiki.pl?SourceSafe

------------------------------------------------------------------

소스세이프(MS Visual SourceSafe)에 대해 관심있는 분들이 있어서 간략하게 끄적여보겠습니다. 설명서 등을 읽어보면 구체적인 사용법이 나와있죠, 하지만, 제 주변에서만 그런지는 모르겠지만, 프로그램을 보통 혼자서 만들어온 사람들 뿐이라, 소스세이프가 왜 필요한지, 어떻게 사용되는지, 이게 무슨 목적에서 쓰이는지 등에 대한 이해를 쉽게 못하는 것 같더군요. (물론 저라고 다른 사람들과는 다르게 한것도 아니죠.. 저도 처음엔 이해를 못했죠.) 그래서, 이 짧은 강좌에서는, 그런 궁금증을 조금이나마 긁어드리고자 합니다. 그리고, 기본적인 사용법을 적어보겠습니다.(구체적인 사용법은 소스세이프에 딸려있는 설명서를 읽어보고 알아내세요. 여기서는 간략한 것만 설명합니다.)

우선,저랑 같이 작업하는 프로그래머 아저씨들의 소스세이프에 대한 감정을 적어보죠.

강 모씨. "머 이런게 다있노 쓸데없다."
조 모씨. "열라 짜증나네 귀찮다 귀찮아."
이 모씨. "머 이런 거지같은게 다 있냐 갖다버려라."
김 모씨. "소스세이프를 이렇게 쓰는 사람도 다 있구나."
장 모씨. "머 이미 쓰는거니까 써 주지 머."
과반수가 나쁜 식의 평입니다! 민주사회에서 투표가 빠지면 콩고물 없는 시루떡이죠. 하지만, 중대한 문제가 있으면 거부권을 과감이 행사하는 법. 2년 넘게 잘만 쓰고 있죠. (내 짬밥에 누가 개기리. 엉? 다 개긴다고? ?튼?.)저런 말을 한마디씩 했어도, "그래도 저거를 쓸수밖에 없다"정도 한마디는 합니다. 이 모씨 아저씨는 다른데 가서 저한테 어떻게 소스세이프 깔아 쓰는지를 물어봤습니다.네,맞습니다. 소스세이프는 불편한 놈입니다. 이중 삼중 작업 하는 기분이 들게 만듭니다. 속도도 느려집니다. 왠지는 모르겠지만, 버그 때문인지 비주얼씨를 먹통을 만드는 경우가 있기도 합니다! 소스세이프라는 이름 자체가 과장인 것 같기도 합니다.즉, 소스세이프는 필요없는데도 쓰는건 오히려 작업 환경을 불편하게 만듭니다. 하지만,필요할때는 무척 유용하게 쓰입니다.

그래서, 소스세이프가 우선 꼭 필요한지부터 검토를 해보세요. 보통 필요한 상황이라면,다음 상황을 가급적 많이 만족해야 합니다.

-정확하면서도 잦은 백업이 필요하다.
-실험작 프로그램을 만드는게 아니다.
-프로그램 디자인이 잘 되어 있다.
-프로그램 제작 기간이 다소 길다
-여러명 프로그래머가(보통 서너명 이상) 같이 동시에 작업한다.
-작업하는 컴퓨터들이 랜 등으로 연결되어 있다.
-복잡한 버전 관리를 해야 한다.
-어느 정도의 보안 관리가 필요하다.
-비주얼씨,비주얼베이직,비주얼인터데브(웹사이트만들때 이걸 쓰죠)를 쓴다.

이정도입니다. 복잡한가요? 쉽게 말하자면.. 보통 프로그래머 한둘이서 한두달 정도에 끝나는 작업이라면, 소스세이프를 안쓰는게 차라리 편할겁니다. 하지만, 프로젝트의 크기가 어느 정도 커지면, 쓰는게 좋다고 봅니다.

이쯤에서,"나는 소스세이프가 필요없다"고 생각하시는 분은 그만 읽으셔도 됩니다. 자자..그럼 어떻게 소스세이프를 깔아서 쓰는지를 설명해보죠.

소스세이프는 서버와 클라이언트로 나뉘어집니다. 서버는 모든 소스를 데이터베이스에 저장합니다. 클라이언트는 프로그래머가 쓰는 컴퓨터에 하나씩 깔려있는 소프트웨어인데, 이것은 서버와 네트워크로 통신하면서 소스를 관리할 수 있게 해줍니다. 그러니까, 만약 동시에 작업하는 프로그래머가 5명이라면, -서버 1개
-클라이언트 5개
이렇게 되겠죠. 그런데, 서버와 클라이언트는 한 개의 컴퓨터에 같이 쓰일 수 있습니다. 그러니까, 컴퓨터는 네트워크가 되는 5대가 필요하겠죠.우선,서버를 깔아야겠죠. 비주얼 스튜디오 또는 비주얼 소스세이프 소프트웨어를 우선 갖고 있어야겠죠? 제가 비주얼스튜디오6를 쓰기 때문에,그걸 기준으로 설명하겠습니다. 따로 갖고 계신 분은 알아서 찾으시길..우선,서버가 될 컴퓨터에 비주얼씨등을 깔고 나서,나중에 서버컴퍼넌트를 선택할 수 있습니다. 거기서 Sourcesafe server를 선택해서 설치하면 됩니다. 특별한 옵션은 없습니다. 그냥 full option으로 깔아도 됩니다. 그렇게 용량이 큰것도 아니니까요.
(이후부터는 여러가지 방법으로 설치할 수 있지만,간단한 방법을 제시해보겠습니다. 더 간단한 방법이나,더 안전한 방법 등이 있으면
귀뜸해주세요. 참고로,소스인사이트나 비주얼인터셉트같은 소프트웨어를 덤으로 깔아서 소스세이프를 강화할 수도 있습니다. 그런건 저도 써본적이 없기 때문에 잘 모르겠네요.)

 

======================서버=========================================
다음에, 소스세이프가 깔려있는 폴더를 다른 컴퓨터에서 쓸수 있도록 공유를 해야 합니다. 읽기 쓰기 권한을 모두 주고요.
소스세이프는,정해진 사용자를 제외하고는 건들지 못합니다. 보안 중 하나죠. 그러니까,누가 그걸 쓸수 있는가를 정해야 합니다. 그러니까,시작 버튼을 눌러서 source safe를 선택하면.. source safe admin이라는게 있습니다. administrator라고 하죠. 소스세이프 서버를 관리하는 사용자를 말합니다. 기본 암호는 없거나 admin입니다. 이제 들어가고 나면, 썰렁한 윈도우 하나 나옵니다. 거기서 메뉴를 선택해서 사용자를 추가합니다. 각 사용자들의 암호도 당연히 필요하죠. 그리고, 당연하겠지만,admin의 암호도 뭔가를 집어넣어야겠죠? 만약,네트워크가 NT 도메인이라면,NT 도메인에 등록된 각 사용자의 암호와 사용자명을 그대로 쓰면 편합니다.(왜인지는 아래에 적어놓겠습니다.) 각 사용자에 대해서는 프로젝트 읽기,쓰기 등의 권한이 있습니다. 일단은 여러가지 실험을 해봐야겠죠? 그러니까,가급적 모든 권한을 할당하세요.서버는 이정도면 쫑입니다.

 

======================클라이언트==================================

클라이언트를 이제 깔아야죠. 역시 비주얼씨등을 깝니다. 단,소스세이프 서버는 깔 필요가 없죠. 이제,서버에 공유시켰던 폴더를 그 컴퓨터에서 엽니다. 그리고, 그 안에 있는 netsetup.exe를 찾아보세요. (가끔 win32폴더 등에 그게 있기도 합니다. 상관없으니 일단 찾아보시길.) 찾았으면 실행! 역시 별다른 옵션이 없죠. 설치가 다 되었으면..비주얼씨를 실행해보세요.(비주얼베이직도 소스세이프와 연동되어 돌아가긴 하지만,여기서 비베를 쓰는 사람은 거의 없는것 같더군요.)위에서 NT도메인 궁시렁 한거 있죠? 그대로 한사람은 그냥 뜰겁니다. 하지만, 그렇지 않다면, 아마도 사용자명과 비밀번호를 묻는 박스가 나타날겁니다. 거기서 클라이언트 사용자의 이름과 비밀번호를 넣으세요.다 떴으면,오른쪽 버튼을 툴바에서 눌러보세요. 그러면, source control이라는 새로운 툴바가 있을겁니다. 그걸 켜두세요. 유용하게 쓰입니다.

 

== 서버

이제 소스세이프에 들어갈 프로젝트 하나를 만듭시다. appwizard등을 써서 프로젝트를 하나 만들거나,이미 있는 프로젝트를 여세요. 그다음에,project view(왼쪽에 길쭉한 트리)에서 파일뷰 탭을 누른 다음에 프로젝트 파일이 있는데다가 오른쪽 버튼을 누르면..

add to source control

이라는 항목이 있습니다. 그걸 선택하면,소스세이프의 데이터베이스 트리가 나옵니다. 소스세이프의 데이터베이스는 마치 디렉토리 구조와 같습니다. 프로젝트 1개는 한개의 폴더에 해당하고,폴더 안에는 또 다른 폴더가 들어갈 수 있습니다. 루트 폴더의 이름은 $/입니다. 그러니까, 일단은 $/의 서브 프로젝트로 추가를 해야겠죠.추가를 한 다음에,프로젝트뷰를 보면.. 원래 아이콘은 흰색이었죠? 근데 그게 회색으로 바뀌면서 옆에 빨간 v표시가 있을겁니다. 징그럽죠.. 여기서, 그게 뭔지를 설명하겠습니다.

마이크로소프트에서도 그렇게 하는지는 모르겠지만,프로그램을 만들때, 부득이한 경우가 아니면,소스 파일은 동시에 두명이 건드리지 않습니다. 그리고,각자가 맡은 파일 외에는 웬만하면 직접 건들지 않습니다. 만약 건드려야 한다면 버그레포팅이나 꾸지람(!) 등을 해서 그걸 건드리는 사람이 대신 건들게 합니다. 소스세이프에서는 이러한 기능을 소프트웨어 수준에서 처리하게 합니다. 그걸 어떻게 하느냐? 어떤 파일을 건들기 위해서는,그 파일은 "나만 쓸수 있다"는 독점권과 파일을 가져와야 합니다. 그리고, 그 파일을 작성하고 나서는 "이 파일은 다른 사람에게 전파되어야 한다"는 의미로 다시 파일을 갖다놔야 합니다. 파일을 소스세이프 서버로부터 가져오는것을 체크아웃(check out)이라고 하고,갖다 놓는것을 체크인(check in)이라고 합니다. 어떤 사람이 어떤 파일을 체크아웃하면,다른 사람은 자동으로 그 파일을 만질 수 없게 됩니다. 만지려고 소스에다가 글자 하나라도 입력하려고 하면 삥삥 소리나면서 글자가 안들어갑니다.

소스세이프가 연동된 비주얼씨에서는 그런 파일들을 아이콘으로 구별합니다. 하얀 파일 아이콘은 소스세이프에 묶이지 않은 파일이고,회색 아이콘은 묶인 아이콘입니다. 회색 아이콘 옆에 빨간 v표시가 있으면 그건 check out된 것이고,그렇지 않으면 check in된 것입니다. 우선은 모든 파일을 check in 하죠. check in 하는 방법은,프로젝트 뷰에서 파일을 선택한다음 아까 툴바의 check in버튼을 누르거나,소스세이프 익스플로러(소스세이프 클라이언트의 이름입니다.)에서 프로젝트를 선택한 다음 통째로 체크인할수있습니다. 하지만,일단은 프로젝트뷰에서 파일을 하나하나 다 선택한다음 체크인을 하세요.

옆의 빨간 v가 없어졌을겁니다. 이제,그 파일들의 방금 체크인된 것들은 서버에 저장되었고,다른사람들은 그것들을 가져다가 쓸수 있습니다.

이제,그 소스 파일 중 하나를 열어서,글자를 입력하려고 해보세요. 박스가 튀어나옵니다. "이 파일을 체크아웃해서 쓸거냐?"는 질문이죠. "예"를 선택하면 체크아웃을 합니다. 일단은 그냥 냅두세요. 편의상 이 클라이언트는 컴1이라 부르죠.

 

=== 클라이언트

이제,다른 컴퓨터(편이상 컴2라 부르죠.)에도 아까 언급했던 식으로 클라이언트를 설치하세요. 거기서는 아까 서버에 넣은 소스를 가져와서 작업해야겠죠. 소스세이프익스플로러를 띄우세요. 그러면,아까 넣어둔 프로젝트 폴더가 있을겁니다. 그걸 선택한다음,set working folder버튼을 누르세요. 서버에 있는 폴더는 파일 폴더가 아닙니다. 그렇기 때문에, 그것에 대칭되는 폴더를 각자의 컴퓨터에 마련을 해야 합니다. 그게 working folder입니다. 웬만하면 working folder의 이름과 프로젝트의 이름을 같게 하는게 좋습니다. 안그러면 중간에 짜증나는 일이 생기죠.

 

만들면,서브폴더를 만들건지를 묻습니다. 만드는게 좋습니다. 이제, 서버에서 파일들을 가져와야겠죠. 그렇지만,당장 편집할건 아니고,서버에 저장되어 있는 것들만 가져올 뿐입니다. 그걸 하기 위해서는 get latest version이라는것을 선택하면 됩니다. 그러면,파일들이 클라이언트에 복사가 됩니다. 그걸 비주얼씨에서 프로젝트째로 열면,회색 아이콘으로 나올겁니다. v표시는 없죠?

아까 아까 클라이언트에서 체크아웃 하신거 아시죠? 그 파일을 열고 뭔가를 입력해보세요. 삥삥 소리나면서 글자가 안들어갈겁니다. 다른 사람이 이미 그 파일을 체크아웃했기 때문입니다. 그걸 쓰기 위해서는 그걸 체크아웃한 사람이 다시 체크인을 하거나 체크아웃을 취소해야 합니다.(만약,체크아웃했는데,필요가 없어서 취소하는걸 undo check out이라고 합니다.그러면,소스가 원상복구되죠.) 일단은 체크인을 합시다. 이제,컴2에서 그 파일을 체크아웃하세요. 여전히 삥삥대죠? 비주얼스튜디오의 번거로운 점 하나입니다. 비주얼스튜디오와 소스세이프의 연동관계까지는 좋지만,자기 컴퓨터 바깥에서 일어나는 일에 대해서는 연동되지 않습니다. 그렇기 때문에, 비록 체크인이 된 파일이더라도,그런 상황을 자동으로 알아내지 않습니다. 소스컨트롤 툴바에 보면 느낌표 아이콘이 있습니다. refresh라는 버튼이죠.. 그걸 눌러줘야 외부에서 일어난 다시 검사합니다. 자, refresh버튼을 누른 다음에 다시 소스에다가 입력을 해보세요. 아까 체크아웃할거냐는 질문을 던지죠? 체크아웃을 해보세요. 컴1에서 바꿨던 부분이 역시 튀어나오죠? 왜냐하면 컴1에서 체크인을 했기 때문에,데이터베이스에 있는 그 파일은 컴1에서 변경한 것이 있기 때문입니다. 그런데, 만약 그 파일을 체크아웃하지 않고 그냥 최근판으로 가져오고 싶을 때가 있습니다. 그럴때는 체크아웃대신에 get latest version을 선택하면 됩니다.

소스세이프의 장점 중 하나는,소스 파일의 변경 상황을 모조리 저장한다는겁니다. 그러니까,어떤 파일을 100번 정도 체크인했다면,그 100번 체크인한 소스가 모조리 저장됩니다. 용량 엄청 먹을것 같다고요? 소스세이프는 나름대로의 소스 저장 방식을 갖고 있습니다. 그렇기 때문에,예상보다는 훨씬 적은 양의 하드 디스크를 차지합니다. 예를 들어,제가 쓰고 있는 소스세이프 서버의 데이터베이스는 약 2년간 써왔는데, 전체 용량이 20메가입니다. 어카이빙이라고 해서,소스를 한개 파일로 압축해주는 기능이 있는데,그걸 쓰면 4메가가 됩니다. 소스 전체 합치면 1메가 좀 넘으니까,소스 크기가 일정 속도로 늘었다는 가정하게 계산해보면, 0.5메가(일정 속도로 늘었다고 가정했으니까)*365(하루 한번 체크인했다고 가정)*2하면.. 365메가죠? 그렇지만 실제로는 20메가..(정확하게 몇번 체크인했는지 등을 뽑아내는 방법은 모르기에,이렇게 어림짐작해봅니다.)그게 어떻게 나오는지 해봅시다. 소스세이프익스플로러에서 프로젝트 폴터를 선택한다음 view history를 선택해보세요. 그러면,지금까지,언제 누가 어떤 소스 파일을 어떻게 했다는게 좍 나옵니다. 물론, 옛날 소스 파일을 가져올 수도 있습니다.

이게 소스세이프의 기본적인 기능입니다. 이 외에도, 소스세이프의 기능에는..
branching/merging(한개 이상의 소스 파일 버전을 여러 갈래로 나눠서 여러 사람이 작업하다가 나중에 한꺼번에 합치는 방법)
back up,roll back(어느 날짜 이전의 소스를 가져오거나 그 날짜로 소스를 되돌리는 방법.. 심각한 문제가 발생했을때 이렇게 소스를 복구할 수 있죠.)
command line 사용(소스 파일이 한두개가 아니면,배치파일 등을 만들어서 어느 정도 자동화할 수 있습니다.)
difference(두 개 이상의 소스 파일이나, 한개 소스 파일의 지나간 버전간의 소스 내용의 차이를 구별할 수 있습니다.)
label(체크인할때 넣는 주석과는 달리,프로젝트 통째로 메이저 버전을 넣어서 엮는 방법. 버전 1.1,버전 1.2등 릴리즈가 작성되었을때 이걸 해두면 편합니다.)
report(윗사람한테 어떤 작업하고 있었는지 보고 정도는 해야겠죠?)
share(한개의 파일이 변하면,그게 다른 프로젝트에도 복사되게하는 기능)
webdeploy(웹페이지소스를 웹서버에 올릴때 쓰는 기능. 안써봐서 모르겠네요.)
가 있습니다. 이건 제 강좌를 이해하시면,소스세이프 설명서만 읽어도 충분히 이해갈 수 있는 것들이니까,굳이 어떻게 쓰는건진 설명하지 않겠습니다.

가급적 짧게 쓰려고 했는데,이상하게 길어졌군요. 고삘때 팰콘3.0강좌쓴 이후로 거의 강좌라곤 써본적이 없는지라,좀 어색하네요. 그렇지만,아무쪼록 도움이 되면 좋겠네요.

그럼 이상.

1999년 여름..

--------------------------------------------------------------------------

 

'Dev... > 플밍 관련 자료' 카테고리의 다른 글

[펌] [JMC]2004.07.03  (0) 2005.02.11
[펌] [JMC]2004.07.10  (0) 2005.02.11
[펌] Eclipse와 JavaScript/CSS  (0) 2005.02.11
[펌] Eclipse와 Tomcat 통합의 빠른 길  (0) 2005.02.11
[펌] DataBase 모델링 및 설계  (0) 2005.02.11