본문 바로가기

기반시스템/소스코드관리

맥에서 Subversion 사용하기 최근에 맥북을 구매해서 아이폰 개발 작업을 하고 있는데 맥에서 Subversion을 사용하는 환경이 그리 좋지 않다는 것을 알게 되었습니다. 그래서 맥에서 Subversion을 제대로 활용하기 위한 글을 적어보려고 합니다. Subversion 자체에 대해서는 블로그의 다른 글들을 보시기 바랍니다. 일단 Xcode에는 기본적인 Subversion연동 기능이 포함되어 있습니다. 그런데 막상 써보면 기존에 TortoiseSVN의 뛰어난 기능과 성능에 익숙한 사람들은 불만스럽기 짝이 없습니다. 그래서 맥에서 Subversion을 쓰기 위한 방법을 비교해보도록 하겠습니다. Xcode 기본 기능 유/무료 맥용 SVN Client 사용 - Syncro, Diffly 터미널 가상머신 + TortoiseSVN Subve.. 더보기
소스코드는 어디 있나요? 나와 우리 회사에서는 소프트웨어 관련 경영 및 공학 컨설팅을 주로 하지만 드물게 개발을 해야 할 때도 있습니다. 이런 경우 고객 회사의 개발자와 협업을 하게 되는데 "소스코드는 어디 있나요?"라는 질문을 먼저 시작합니다. "소스코드는 어디 있나요?"라는 질문은 Subversion등과 같은 소스코드관리시스템이 어디 있냐는 질문이고 모든 소스코드는 당연히 거기에 저장되어 있고 소스코드가 저장되어 있는 Repository와 Path만 말면 Build script를 찾아서 빌드까지 한번에 끝낼 수 있을 것으로 기대하고 하는 질문입니다. 사용자 ID만 등록하고 필요한 권한만 열어주면 더이상 질문할 것도 없이 협업 준비는 끝나는 겁니다. 그런데 이렇게 해피하게 준비된 경우는 아직 본적이 없습니다. 대부분 아래와 같.. 더보기
베이스라인 "Baseline"이라는 용어가 생소한 개발자들이 있을 수 있습니다. 우리말로 번역을 하면 "기준선"이라고도 하는데, 헷갈리므로 그냥 Baseline이라고 사용해도 무관할 것입니다. 소스코드는 살아 있습니다. 매 순간 변화하고 있다고 봐도 됩니다. 실제로 몇 천명의 개발자가 참여하는 프로젝트에서는 소스코드 관리시스템의 로그를 보면 거의 매 순간 소스코드가 바뀌는 것을 알 수 있습니다. 또 작은 프로젝트라고 하더라도 어느 순간에 소스코드가 바뀔지는 알 수 없습니다. 그래서 Baseline을 관리하지 않으면 소스코드의 어느 의미 있는 순간을 잡아내는 것이 쉽지 않습니다. 그래서 Baseline을 관리합니다. Baseline을 설정하는 방법은 여러 가지가 있습니다. 소스코드를 통째로 특정 디렉터리에 복사를 해.. 더보기
이 소스코드는 나 밖에 못 건드려! "우리 팀은 각자 맡고 있는 소스코드가 다 달라서 서로 충돌 날 일이 전혀 없어요" "이 소스코드를 수정해야 하면 나한테 얘기해, 내가 고쳐 줄게" "내가 지금 고치고 있으니 너도 고치려면 내가 끝낼 때까지 기다려" "지금 이거 한창 고치고 있으니 중간에 다른 것은 끼어들 수 없어요. 이거 다 끝날 때까지 기다려주세요." 이와 같은 현상이 친숙하나요? 그럼 Parallel Development(병행개발)와는 거리가 멉니다. 개발을 이런 식으로 순차적으로 기다렸다가 해야 한다거나 다른 사람이 이 소스코드를 고치고 있지 않은지 걱정을 하고 있거나 이것 때문에 소스코드를 고칠 때 항상 Lock을 걸어야 한다면 이만 저만 불편한 것이 아닙니다. 개발 속도도 떨어지게 됩니다. 아키텍처적인 이슈를 제외하고는 개발자.. 더보기
누가 소스코드를 몰래 바꿔놨다. 누군가 몰래 여러분 회사의 소스코드를 바꿔놓는 일이 가능한가요? 진짜 이런 일이 일어 날 수 있는 환경이라면 당장 고쳐야 합니다. 실제로 이러한 걱정을 하는 회사도 많이 있습니다. 영화 슈퍼맨3를 보면 한 프로그래머가 은행 이자의 우수리 돈을 자신의 계좌로 몰아서 스포츠카를 사는 장면이 나옵니다. 또, 퇴사하는 직원이 악의를 품고 소스코드를 몰래 바꿔놓지 않을까 걱정을 하기도 합니다. 정상적인 시스템과 프로세스를 갖춘 회사라면 이러한 걱정을 할 필요가 없으나 그렇지 못한 대부분의 소프트웨어 회 사들에서는 언제든지 일어날 수 있는 일입니다. 정상적인 경우라면 소스코드의 모든 변경은 기록에 남게 됩니다. 또 소스코드를 변경하기 위해서는 버그ID(또는 이슈ID)가 있어야 합니다. 이것이 소스코드 변경 승인의 .. 더보기
소스코드관리 상세 조사 결과 리포트 지난번 소스코드관리 방법 조사 후 좀더 상세하게 각 회사나 개발팀이 소스코드를 관리하면서 어떤 방법들을 사용하는지 즉 그 성숙도를 알아보기 위해서 약 2주에 걸쳐서 2차 조시를 실시했습니다. 질문항목이 26개나 되는 상당히 긴 투표였지만, 많은 분들이 응해주셔서 나름대로 의미있는 수치를 얻을 수 있었습니다. 투표에 참여해주신 모든 분께 감사드립니다. 투표위젯에 참 참여자 수를 보는 방법이 없어서 가장 많은 득표를 한 항목으로 미루어 짐작해서 35명이 투표에 참여한 것으로 생각하고 있습니다. 질문은 다음과 같았습니다. 각 항목별로 총 득표수는 다음과 같습니다. 아래 조사는 소스코드관리시스템을 사용하는 회사를 기준으로 계산을 할 것이므로 1번 항목은 100%입니다. 그럼 각 항목 별로 분석을 해보도록 하겠습.. 더보기
사라진 소스코드 바이너리는 있는데 소스코드는 없어서 낭패를 보신 적은 없으신가요? 소스코드 백업은 흔히 소홀히 하기 쉽습니다. 사고가 발생한 후에야 문제가 되고, 사고가 그렇게 자주 발생하는 것은 아니죠. 자주 발생하지는 않지만, 일단 발생하는 타격이 아주 큽니다. 일상 생활에서는 보험을 들지만, 소프트웨어를 개발하는 현장에서는 보험을 드는 격인 백업을 제대로 하는 경우는 흔히 보기 어렵습니다. 소스코드는 이러한 경우에 흔히 사라지거나 깨지게 됩니다. 이 때 백업이 없으면 낭패가 됩니다. HDD는 그리 드물지 않게 깨집니다. 그냥 운영 중에 HDD가 깨져버리는 경험은 많이들 있을 겁니다. 장비를 사무실 내에서 옮기거나, 회사가 이사를 갈 때는 HDD가 깨지는 경우가 더 흔합니다. 컴퓨터바이러스 등의 악성 코드에 의해서 .. 더보기
Merge Tool(머지툴) 비교 - (3way merge 기능) - 수정 소프트웨어를 개발하다 보면 소스코드의 브랜치가 일어나고 이를 Merge(머지)하는 일은 피하기가 어렵습니다. 이 Merge(머지)과정을 자동화 툴을 이용하면 상당히 많은 시간을 절약할 수 있습니다. 특히 Merge의 자동화를 위해서는 3way-Merge가 필수적인데, 시중에서 3way머지가 지원된다고 하는 툴 4가지와 SVN에서 지원하는 Unified diff, 이렇게 총 5가지를 비교해봤습니다. 그 결과는 아래와 같이 평가를 하였습니다. KDiff3, P4Merge와 Araxis Merge가 우수하게 나왔습니다. 2way merge툴은 같은 레벨에서 비교 대상이 되지 않기 때문에 비교하지 않았습니다. 2way merge툴보다는 꼭 3way merge툴을 쓰기를 권장합니다. 3way merge툴은 실무에.. 더보기
소스코드 관리 방법 조사 결과 그동안 제 블로그에서 약 20일간 기업의 소스코드 관리 방법 투표를 진행했습니다. 현재 각 기업들의 소프트웨어 개발 환경 및 현황을 파악하고 공유하기 위해서 소프트웨어 개발에 대한 다양한 설문 조사를 시행하고 있습니다. 이번 소스코드관리 설문의 질문은 다음과 같습니다. 소스코드는 어디에 보관하세요? (최신 소스코드의 기준이 되는 저장 장소를 선택해주세요. 다중 선택 가능) 약 3주간의 설문 결과 아래와 같은 분포가 나왔습니다. Answer TextVotes% Subversion 50 45.87% CVS 18 16.51% 개인 PC에 보관 14 12.84% 공용개발서버에 보관 8 7.34% Visual SourceSafe 7 6.42% IBM Rational ClearCase 4 3.67% FileServ.. 더보기
VSS, CVS, SVN 비교 Google Trend에서 세가지 SCM(Software Configuration Management)의 경향을 살펴봤습니다. (아래 그림 참조) CVS가 여전히 압도적인 우위를 점하고 있고, 상대적으로 SVN은 꾸준히 성장을 하고 있습니다. 물론 Google Trend가 실제 제품의 점유율을 보여주지는 않지만 그만큼 사람들의 관심사는 엿볼 수 있을 것 같습니다. CVS의 감소는 SVN으로 대체되고 있는 듯 보입니다. 하지만 이렇게 더딘 이유는 CVS도 충분히 좋은 SCM이고 더 좋은 SCM이 나왔다고 함부로 바꿀 수 있는 것이 아니기 때문입니다. 물론 새로 시작하는 회사가 있다면 SVN을 쓰면 좋겠지만, 기존에 수년가 CVS를 쓰던 회사가 치명적인 문제도 없는데 SVN을 그냥 바꿀 필요는 없겠지요. (.. 더보기