출처 : http://groups.google.com/group/secondlife-korea/web/%EA%B0%84%EB%8B%A8%ED%95%9C+svn+%EC%82%AC%EC%9A%A9+%EB%B0%A9%EB%B2%95



1. 우선 SVN에 대해서 간략하게 설명 하도록 하겠습니다.

SVN이란 Subversion의 약자로 소프트웨어의 버젼을 관리하는 프로그램입니다. 한글화 하는데 버젼 관리가 왜 필요한지 설명을 하도록 하겠습니다. 여러명이서 협동해서 작업을 하다보면 메신저나, 게시판을 통해서 파일을 주고 받는데 한계가 있습니다.

왜냐면 게시판을 통해서 작업 결과물을 공유 한다면 매일 같이 업데이트되는 파일들을 누군가는 그것을 최신으로 관리를 해주고 하나로 묶어 줘야하는데 이거 사람이 직접 손으로 하는건 할짓이 못됩니다. 거기다 사소한 수정한것 까지 다 잡아줘야하는데 이걸 누가 작업해서 줬는지까지 일일이 기록 해야 한다면 그건 정말 지옥입니다. 거기다가 누구는 최신 파일로 작업을 하고 누구는 구버젼으로 작업을해서 파일이 어느게 최신판인지도 모르는 경우도 말도 않되게 많이 발생을 합니다. 재수 없게 이전 파일을 지워서 복구 해야할 경우 매일 같이 파일을 최신버젼으로 관리하고 백업하는 작업을 않했다면 생지옥을 경험 할겁니다.

그런 번거로운 일을 대신 해주는게 바로 버젼 관리 프로그램입니다. 버젼 관리 프로그램의 역활을 요약하면 아래와 같습니다.

* 무언가 잘못되었을 때 복구를 돕기 위하여
* 프로젝트 진행 중 과거의 어떤 시점으로 돌아갈 수 있게 하기 위하여
* 여러사람이 같은 프로젝트에 참여할 경우, 각자가 수정한 부분을 팀원 전체가 동기화하는 과정을 자동화하기 위하여
* 소스 코드의 변경 사항을 추적하기 위하여
* 소스 코드에서 누가 수정했는지 추적하기 위하여
* 대규모 수정 작업을 더욱 안전하게 진행하기 위하여
* Branch로 프로젝트에 영향을 최소화 하면서 새로운 부분을 개발하기 위하여
* Merge로 검증이 끝난 후 새로이 개발된 부분을 본류(trunk)에 합치기 위하여
* 코드의 특정 부분이 왜 그렇게 쓰여 졌는지 의미를 추적하기 위하여

번역 작업 결과물을 저장하기 위해서 SVN이라는 툴을 사용하게된 이유는 위의 내용만으로도 충분히 설명이 되리라고 믿겠습니다. 협업 프로젝트에서 버젼 관리 소프트웨어의 사용은 선택이 아니라 필수라고 생각합니다.



2. SVN 사용법

Linux 혹은 Cygwin 기반의 콘솔로 작업 하시는 분들은 기본적으로 SVN 사용법을 이미 숙지하신 분들이라 믿고, 다수의 참여자분들이 사용할꺼라 추측이 되는 운영체제인 윈도우즈 XP를 기준으로 설명 글을 적겠습니다. 

우선 윈도우즈용으로 나온 GUI(그래픽 유저 인터페이스) 기반의 SVN 툴로는 마우스 클릭만으로도 어느정도 사용이 가능한 TortoiseSVN이 있습니다. 이것을 설명 하도록 하죠. 다른 SVN 클라이언트들에 비해서 사용 방법이 매우 쉬우면서도 기능은 강력합니다.

우선 툴을 다운로드 받아야합니다. 아래 사이트에서 최신 버젼으로 받고 설치하세요. 윈도우즈 리붓을 한번 해야하니 작업 중인게 있으시다면 미리 저장하거나 종료 하시길 바랍니다.

TortoiseSVN : http://tortoisesvn.net/downloads


설치가 끝났다면 이제 부터 본격적으로 SVN 저장소로 부터 소스를 받아와 보도록 하겠습니다. 우선 적당한 폴더에 secondlife-korea라는 폴더를 생성합니다.



참고로 저는 C:\secondlife-project라는 폴더 밑에 생성을 했습니다.

자 다음은 폴더에 대고 마우스 우클릭을해서 TortoiseSVN의 메뉴로 찾아 들어갑니다. 우선 소스를 최신으로 업데이트 해야하니 SVN Checkout을 선택합니다.




그럼 다음과 같은 창이 뜨는데요. URL of repository에다가 다음과 같이 입력합니다.

http://secondlife-korea.googlecode.com/svn/trunk/





그러고 나면 최신 소스를 다운 받으면서 폴더의 아이콘이 아래와 같이 바뀌는걸 볼수가 있습니다.




어때요 쉽죠? 마우스 클릭질 몇번 만으로도 서버에 있는 최신 소스를 내 하드에 저장하게 됩니다. 이방법을 이용해서 세컨드라이프 뷰어의 소스도 똑같이 받으실수 있으니 잘 숙지 해두시면 비록 삶에 질을 우월하게 높혀주는 지식은 아니지만 어딘가 도움이 되지 해가 되지는 않을겁니다 -_ -


3. 본격적으로 수정해서 svn 저장소에 쓰기

위에 설명한 방법은 svn 저장소의 소스를 읽기만 가능한 작업이구요. 저장소에 쓰기(commit) 위해서는 svn 저장소(URL of repository)에 접근하는 프로토콜을 http에서 https로 바꿔야합니다. 아울러 https를 이용해서 접속하게 될경우 id와 패스워드를 입력 해야합니다. 

앞에 생성한 secondlife-korea를 지우고 새로 만들어서 작업 하시면 됩니다. SVN Checkout에서 URL of repository에다가 아래의 주소를 넣으세요.(http에서 https 로 바뀐거 강조!!)

https://secondlife-korea.googlecode.com/svn/trunk/

사실 제한적인 사람들이 소스에 접근이 가능하게되면 소스를 받아서 쓰고 사용하거나 수정하는건 마음대로 할수 있지만, 원본 소스에 대해서는 프로젝트 접근 권한이 있는 사람만 수정이 가능하게 되는 방식이 됩니다. 프로젝트 접근 권한은 프로젝트 오너에 의해서 접근을 허용 할수 있게 설정 할수 있습니다. (이건 제가 다른 참여자분들에게 권한을 나눠드리겠습니다.)

그럼 누구는 SVN 저장소에 소스를 수정할수 있고 누구는 못하느냐? 그건 아닙니다. 뉴스 그룹이나 저를 통하거나 권한을 나눠 받은 분들에게 요청 하십시요. 누구든 참여 가능합니다. 그럼 왜 귀찮게 로그인을 한번 해야 하냐구요? 진짜 최소한의 필터링을 하기 위한 방법이니 이해 해주시기 바랍니다.

소스를 직접 수정하면서 프로젝트 참여를 원하시는 분들은 뉴스 그룹이나 저 또는 가입신청 페이지를 통해서 참여 의사를 밝혀 주시면 쓰기(commit)을 할수 있는 권한을 부여 해드리겠습니다.

그럼 로그인 방법에 대해서 알아 보도록 하곘습니다. 일단 아래의 주소로 들어갑니다.

http://code.google.com/p/secondlife-korea/source/checkout


SVN 저장소에 접근 권한이 있는 분중에 구글 계정으로 로그인 하시고 위의 주소에 들어가면 아래와 같은 화면을 볼수 있을텐데요. 그림상에서 제가 여기 클릭이라고된 부분을 클릭 하시면 본인이 접근 가능한 비밀 번호를 얻을수가 있습니다. 그럼 아이디는 어떻게 아느냐? 지금 그림상에서는 조금 짤렸는데요. 아래와 같은 문구가 페이지에서 보일겁니다. 밑에 제가 노란색으로 강조한 부분 거기에 본인이 접근 가능한 아이디가 나옵니다. 통상 구글 계정으로 가입한 이메일 주소에서 at 뒤에 주소 때고 id라고 보시면 되겠습니다. 

# Project members authenticate over HTTPS to allow committing changes.
svn checkout https://secondlife-korea.googlecode.com/svn/trunk/ secondlife-korea --username 구글 아이디

gmail 말고 다른 메일 계정 사용하시는 분들은 다음과 같이 쓰면됩니다.

# Project members authenticate over HTTPS to allow committing changes.
svn checkout https://secondlife-korea.googlecode.com/svn/trunk/ secondlife-korea --username 아이디@도메인







자 그럼 일단 로그인 했다치고 파일을 하나 직접 commit 해보도록 하겠습니다.

우선 미리 한글화 해둔 panel_preferences_general.xml 파일을 한번 저장소로 commit 해보겠습니다. 메타파일 한글화 하는 방법은 제가 튜토리얼 방식으로 작성해서 매우 친절하게 설명을 또 한번 올리도록 하겠습니다. (사실 이거 메모장만 쓸줄 알아도 할수 있을만큼 쉽습니다 진짜로 - _- !!!!)

그럼 미리 준비한 파일을 한글 메타 파일이 위치 해야할 ko 폴더에 일단 복사해 넣습니다. 콘솔로 카피하던 마우스로 드레깅으로 넣던 콘트롤 C 콘트롤 V를 하던 아무튼 복사해서 넣습니다.

파일이 복사 되어야할 경로는 svn 최상위 디렉토리(truck)를 기준으로 합니다. 만약 위에서 저처럼 source 폴더 이름을 secondlife-korea로 설정하셨으면 경로는 아래와 같습니다.

secondlife-korea/indra/newview/skins/default/xui/ko







자 위와 같이 파일이 복사 되었으면 파일에 대고 마우스 우클릭을 해서 메뉴를 뛰우고 Add를 선택합니다.





Add를 하고 나면 폴더의 아이콘에 느낌표가 붙으면서 아래와 같이 변합니다. 소스가 변경되어서 svn 저장고에 파일을 commit(승인) 해야 할께 있다는 말입니다.





그럼 서버로 commit을 해보도록 하죠. 쉽습니다 commit 할 파일 혹은 최상위 폴더에서 마우스 우클릭으로 메뉴을 뛰운뒤에 SVN Commit을 선택합니다.





아래와 같은 창이 뜰겁니다. Message에는 어떤 부분이 수정이 되었는지 커멘트를 남겨 주면 됩니다. 가급적 길게 적어주세요. 어떤 부분이 끝났고 어떤 작업이 더 필요한지 이런것들이요. Message 입력이 끝이나면, OK 를 눌러서 Commit 합니다.

아래쪽 창은 현재 Commit하고 있는 파일의 대한 정보입니다. 앞에 버젼의 파일과 어떤 것들이 변했는지 볼려면 아래창에서 파일을 더블 클릭하면 됩니다. (현재 파일은 새버젼이기때문에 변경된게 없습니다)







성공적으로 파일이 추가되었는지 어떻게 확인하냐구요? 아래 사이트에 들어가시면 됩니다.

http://code.google.com/p/secondlife-korea/source/list

아래에 보시면 r2에 방금 추가한 내용이 들어가 있는것을 보실수 있습니다.
추가로 말씀 드리자면, http://code.google.com/p/secondlife-korea/source/browse 에서 직접 소스를 브라우징 하면서 읽을수도 있습니다. 수정은 못합니다. 읽기만 가능




자 그럼 이번에는 복습 삼아서 기존의 파일들을 수정해서 한번 올려 보도록 하겠습니다. 고쳐야 할 파일들은 다른 언어들의 메타 파일들에 보면 한글을 선택할수 있는 메뉴가 없는데요. 이부분들을 일괄 수정해서 한번에 commit을 넣어 보겠습니다.

각 언어별 panel_preferences_general.xml 파일에 보면 다음과 같은 부분이 있습니다. 우선 en 폴더에 있는 panel_preferences_general.xml 파일을 열어 보도록 하겠습니다. 파일의 내용을 쭉 보다보면 아래와 같은 부분을 만날수 있습니다.

<combo_box
 control_name="Language"
 follows="left|top"
 height="23"
 layout="topleft"
 left="50"
 max_chars="135"
 name="language_combobox"
 width="200">
    <combo_box.item
     enabled="true"
     label="System default"
     name="System Default Language"
     value="default" />
    <combo_box.item
     enabled="true"
     label="English"
     name="English"
     value="en" />
    <combo_box.item
     enabled="true"
     label="Dansk (Danish) - Beta"
     name="Danish"
     value="da" />
    <combo_box.item
     enabled="true"
     label="Deutsch (German) - Beta"
     name="Deutsch(German)"
     value="de" />
    <combo_box.item
     enabled="true"
     label="Espa?ol (Spanish) - Beta"
     name="Spanish"
     value="es" />
    <combo_box.item
     enabled="true"
     label="Fran?ais (French) - Beta"
     name="French"
     value="fr" />
    <combo_box.item
     enabled="true"
     label="Italiano (Italian) - Beta"
     name="Italian"
     value="it" />
    <combo_box.item
     enabled="true"
     label="Nederlands (Dutch) - Beta"
     name="Dutch"
     value="nl" />
    <combo_box.item
     enabled="true"
     label="Polski (Polish) - Beta"
     name="Polish"
     value="pl" />
    <combo_box.item
     enabled="true"
     label="Portugu?s (Portuguese) - Beta"
     name="Portugese"
     value="pt" />
    <combo_box.item
     enabled="true"
     label="日本語 (Japanese) - Beta"
     name="(Japanese)"
     value="ja" />
</combo_box>

사실 이게 코드 줄 맞춘다고 길게 써놔서 그렇치 별꺼 없습니다. 우리가 추가할껀 딱 한줄입니다. 어디에 추가 하냐구요 일본어 밑에 넣습니다. 위에 넣고 싶어도 참아주세요. 관례상 추가되는 소스는 아래에 넣는게 원칙입니다. 좌우지간 <combo_box.item /> 테그는 <combo_box></combo_box>라는 태그 사이에 위치 해야합니다.

    <combo_box.item     enabled="true"     label="한국어 (Korean) - Beta"     name="(Korean)"     value="ko" />

위에 소스같이 줄 맞춤 하고 싶다면 길게 써도 무관하긴 합니다.

    <combo_box.item
     enabled="true"
     label="한국어 (Korean) - Beta"
     name="Korean"
     value="ko" />

최종적으로 추가되면 아래와 같은 형태가 되면 됩니다. 한줄로 쓰던 여러 줄로 쓰던 알아서 하세요. 저는 소스 스타일에 맞춰서 각각 코딩해 넣었습니다. 누군 한줄로 쓰고 누군 들여쓰기하고... -_ -... 이것도 통일 해야할듯하긴 하네요. 

<combo_box
 control_name="Language"
 follows="left|top"
 height="23"
 layout="topleft"
 left="50"
 max_chars="135"
 name="language_combobox"
 width="200">

           ...
      블라 블라
           ...

    <combo_box.item
     enabled="true"
     label="日本語 (Japanese) - Beta"
     name="(Japanese)"
     value="ja" />
    <combo_box.item
     enabled="true"
     label="한국어 (Korean) - Beta"
     name="Korean"
     value="ko" />
</combo_box>

아무튼 위와 같은 작업을 모든 언어에 걸쳐서 전부 해뒀습니다. 앞으로 작업 하실분들은 신경 않쓰셔도 될듯한 -_ -
자 수정을 하고 나면 아래와 같은 화면이 됩니다. 앞에 SVN 저장소를 만들때 네델란드를 빼먹고 올려서 추가했습니다.
이번에는 최상위 폴더를 우클릭하고 SVN Commit을 했습니다.




수정하고 추가한 내용 대충 적어주고 오케이 눌러서 확인 누르겠습니다. 중간 내용은 앞이랑 같으니 생략 하겠습니다. 위와 같은 방법으로 작업한 소스를 commit 하시면 되겠습니다.

* 아이콘 설명
  저장소와 파일 정보가 일치하는 파일
  저장소의 파일 정보가 일치 하지 않는 수정된 파일
  저장소에 추가되지 않은 파일
  저장소에 추가 예정인 파일

commit을 할경우 빨간색으로 표시된것들은 저장소에 새로 쓰기가 됩니다.

뭐 앞에 소스랑 비교하고 누가 뭘 어떻게 작업했는지 보고 내꺼랑은 뭐가 틀린지 보는 등등 리뷰도 가능한데, 그거까지 이글을 통해서 모두 설명하기에는 너무 방대한 내용들이라 짬짬히 제가 위키나 게시판을 통해서 글을 정리 하도록 하겠습니다. (사실 명령어만 잘 알면은 svn도 콘솔로 작업하는게 편하긴한 - _-)

작업 하시다가 막하시면 주저 말고 뉴스 그룹을 통해서 글 남겨 주시던지 아니면 덧글 남겨주세요. 당연한 이야기지만 네이버는 네이버 가입 해야지 사용 가능하고, source forge는 소스포지 계정 등록, kldp는 kldp 계정 등록 해야지 사용 가능 하듯이 구글 code 오픈소스 SVN은 구글 계정 등록 하셔야지만 사용가능 합니다.

그리고 툴 사용법을 전혀 모르는 분들을 위한 한글화 방법도 튜토리얼 형식으로 제작해서 올리도록 하겠습니다.

+ Recent posts