mirror of
https://github.com/moodle/moodle.git
synced 2025-02-26 04:52:33 +01:00
214 lines
20 KiB
HTML
214 lines
20 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<title>Moodle Docs: How to use CVS</title>
|
|
<link rel="stylesheet" href="docstyles.css" type="TEXT/CSS" />
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
|
<style type="text/css">
|
|
<!--
|
|
style ol {margin-left:40px;}
|
|
.style1 {color: #990000}
|
|
.style3 {color: #990000; font-weight: bold; }
|
|
.style4 {
|
|
color: #0000CC;
|
|
font-weight: bold;
|
|
}
|
|
-->
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<h1>무들 개발자를 위한 CVS</h1>
|
|
<blockquote>
|
|
<p>CVS 는 <strong>Concurrent Versioning System</strong>의 머릿글자를 따온 것으로, 대형 소프트웨어 프로젝트를 수행할 때 소스코드를 관리하는 일반적인 방법입니다. CVS는 모든 파일의 모든 버전을 유지해서 결코 어느 것도 잃어버리지 않으며, 다른 사람들에 의해 사용한 경과를 기록하여 둡니다. 또한 동일한 파일에 대해 여러 사람이 작업을 할 경우에도 이들을 잘 통합할 수 있는 방법을 제공합니다. 모든 버전 그리고 모든 코드를 중앙 서버(무들의 경우에는 <a target="_top" href="http://www.sf.net/">Sourceforge</a>)에 저장해 놓습니다.</p>
|
|
<p>만일 여러분이 CVS를 이용하여 무들을 내려받아 사이트를 운영하려고 한다면, 이 소개는 별로 소용이 없을 것입니다. 그냥 <a target="_top" href="http://moodle.org/download">Moodle download page</a>에 있는 CVS 안내서에 있는 대로 따라하기만 하면 될 것입니다.</p>
|
|
<p> </p>
|
|
<ol>
|
|
<li><a href="#n1">개발자로서 프로젝트에 참여하기</a></li>
|
|
<li><a href="#n2">CVS 모듈</a> </li>
|
|
<li><a href="#n3">기본 CVS 명령</a> <br />
|
|
3.1. <a href="#n3.1">Unix에서의 CVS</a> <br />
|
|
3.2. <a href="#n3.2">Windows에서의 CVS</a></li>
|
|
<li> <a href="#n4">가지에서의 작업</a><br />
|
|
4.1. <a href="#n4.1">개발을 위한 본줄기</a><br />
|
|
4.2. <a href="#n4.2">각 배포판을 위한 안정 가지</a><br />
|
|
4.3. <a href="#n4.3">큰 변화를 위한 기능 가지</a> </li>
|
|
</ol>
|
|
</blockquote>
|
|
<br />
|
|
<h2><a name="n1" id="n1"></a>1. 개발자로서 프로젝트에 참여하기</h2>
|
|
<blockquote>
|
|
<p>그렇게만 한다면, 여러분은 무들의 관리자 겸 개발자로서 우리를 도울 수 있는 CVS 쓰기권한을 부여받게 될 것입니다! <a href="http://sourceforge.net/project/memberlist.php?group_id=30935">개발자로 초청합니다</a>!</p>
|
|
<p><a target="_top" href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/moodle/moodle/">Moodle's CVS archive</a>에 변경사항을 반영하기 위해서는, 우선 Sourceforge (<a href="http://sourceforge.net/account/register.php">무료 등록</a>)에 계정을 생성해야 합니다. 예를 들어 우선 여러분의 사용자명이 <strong><font color="#990000">myusername</font></strong>이고 비밀번호가 <strong><font color="#990000">mypassword</font></strong>라고 가정해 봅시다. 특히 소스포지의 <a target="_top" href="http://sourceforge.net/docman/display_doc.php?docid=768&group_id=1#develhomedir">CVS 홈디렉토리 생성</a>에 있는 안내문을 주의깊게 살펴보시기 바랍니다. 새로 계정을 만드신 경우 CVS 를 "사용 가능"하게 설정하셔야 합니다. 또 기본적으로 cvs.sourceforge.net에 접속하여 이용하려면 ssh를 사용해야만 합니다.</p>
|
|
<p>일단 소스포지 계정을 가지고 작업을 시작하려면 <a
|
|
target="_top" href="http://moodle.org/user/view.php?id=1&course=1">Martin Dougiamas</a>에게 연락해야만 여러분들이 작업하고자 하는 무들 경로의 쓰기 권한을 확보할 수 있습니다.</p>
|
|
<p>CVS 접속시 매번 여러분의 <strong><font color="#990000">mypassword</font></strong>를 요청하는 것을 막기 위해서는 <a target="_top" href="http://sourceforge.net/account/editsshkeys.php">소스포지 인증키 설정 요령</a>에 나오는 방법에 따라 인증키를 만들어 두면 됩니다. 사실 이 과정은 꼭 필요한 것은 아니지만, 이 방법대로 하면 훨씬 수월하게 CVS를 이용할 수 있습니다.</p>
|
|
<p>이 과정을 마치면, 필요한 제반 권한은 확보한 것입니다. 따라서 다음은 여러분의 컴퓨터를 설정하고 현재의 소스를 내려받은 다음 작업을 시작하면 됩니다.</p>
|
|
<p> </p>
|
|
</blockquote>
|
|
<h2><a name="n2" id="n2"></a>2. CVS 모듈</h2>
|
|
<blockquote>
|
|
<p>CVS 내부에서 "모듈(modules)"이란 각각의 코드 집합을 의미합니다. 무들 저장고에는 다음과 같은 모듈들이 들어있습니다.</p>
|
|
<blockquote>
|
|
<p><strong>moodle</strong> - 무들에 쓰이는 주 프로그램들</p>
|
|
<p><strong>contrib</strong> - 사용자들에 제공하였거나 기타 개발중에 있는 프로그램들</p>
|
|
<p><strong>mysql</strong> - 데이터베이스 관리자를 위해 무들에 최적화된 phpMyAdmin</p>
|
|
<p><strong>windows-cron</strong> - 윈도우 시스템에서 cron이 가능하게 만든 작은 패키지</p>
|
|
<p><strong>docs</strong> - 특별한 사용자들이 제공한 다양한 문서들</p>
|
|
</blockquote>
|
|
<p>대부분의 사람들은 <strong>moodle</strong>의 모듈에 있는 기존 성능에 대해 작업을 하고 있지만, 또 많은 사람들은 <strong>contrib</strong>모듈에 새로운 아이디어로 공헌하고 있습니다. 일단 <strong>contrib</strong> 영역에서 어느 정도 만족할 만한 수준에 오르게 되면, <strong>moodle</strong>영역으로 옮겨갈 수도 있습니다.</p>
|
|
<p> </p>
|
|
</blockquote>
|
|
<h2><a name="n3" id="n3"></a>3. 기본 CVS 명령</h2>
|
|
<blockquote>
|
|
<h3><a name="n3.1" id="n3.1"></a>3.1 Unix에서의 CVS</h3>
|
|
<blockquote>
|
|
<p>소스포지에서는 보안 전송 계층으로 ssh를 사용하기 때문에 여러분의 유닉스 쉘에 CVS_RSH 환경 변수를 설정해 두어야 합니다. 매번 명령을 입력하기 보다는 여러분의 .bashrc 혹은 .cshrc 파일에 다음과 같은 명령어를 각각 미리 입력해 놓는 방법이 가장 좋습니다<strong>:</strong></p>
|
|
<div class="commandline">setenv CVS_RSH ssh <em>(csh 혹은 tcsh 등을 사용할 경우)</em><br />
|
|
export CVS_RSH=ssh <em>(sh 혹은 bash 등을 사용할 경우)</em></div>
|
|
<p>그 다음에는 아래와 같은 명령으로 무들의 최신 개발 버전을 점검할 수 있습니다. </p>
|
|
<div class="commandline">cvs -z3 -d:ext:<span class="style1">myusername</span>@cvs.sourceforge.net:/cvsroot/moodle co moodle</div>
|
|
<p>다른 모듈을 점검할 때도 비슷합니다.</p>
|
|
<div class="commandline">cvs -z3 -d:ext:myusername@cvs.sourceforge.net:/cvsroot/moodle co contrib</div>
|
|
<p>다만, 처음 CVS 명령을 실행할 때는 현재 설치되어 운영되고 있는 무들 디렉토리에서는 하지 마십시오. 대신 새로운 디렉토리에서 시작하기 바랍니다.</p>
|
|
<p>여러분이 <a target="_top" href="http://sourceforge.net/account/editsshkeys.php">인증키</a>를 설정하지 않은 경우 CVS를 접속할 때마다 <strong><font color="#990000">mypassword</font></strong>를 묻는 프롬프트가 뜬다는 것을 유념하여 주시기 바랍니다.</p>
|
|
<p>이제, 여러분을 새 'moodle' 디렉토리를 갖게 되었습니다. 여러분은 맘대로 새로 이름을 줄 수도 있고, 옮길 수도 있습니다. 한번 들어가 봅시다.</p>
|
|
<div class="commandline">cd moodle </div>
|
|
<p>가장 최근의 무들 파일들이 거기에 있을 겁니다. 이제 여러분은 그 파일들을 고칠 수 있습니다. 여러분이 작성한 파일 및 디렉토리를 CVS 서버의 것들과 비교를 하기 위해서는 cvs diff 명령을 씁니다. 예를들어 : </p>
|
|
<div class="commandline">cvs diff -c config-dist.php<br />
|
|
cvs diff -c lang </div>
|
|
<p>서버로 부터 마지막 변경 사항을 반영하기 위해서는 : </p>
|
|
<div class="commandline">cvs update -dP</div>
|
|
<p>내 변경 사항을 서버로 보내기 위해서는 다음과 같이 하면 됩니다.</p>
|
|
<div class="commandline">cd lang/ca <br />
|
|
cvs commit</div>
|
|
<p>그러면 약간의 주석을 쓰라고 요구할 것입니다.(여러분이 쓰는 편집기에 따라 다르겠지만).. 몇 마디 주석을 달아주고 편집기를 닫습니다. 그러면 파일은 소스포지로 전송되어 저장됩니다. 다 되었습니다! </p>
|
|
<p>시간을 절약하기 위해서는 기본적인 사항들을 미리 여러분의 홈 디렉토리 내의 .cvsrc에 설정해 두면 좋습니다. 아래는 제 .cvsrc 속에 있는 내용들 입니다.</p>
|
|
<div class="commandline">diff -c <br />
|
|
update -dP</div>
|
|
<p>좀더 자세한 사항을 알고 싶으시면 'cvs help' 를 입력해 보시기 바랍니다.</p>
|
|
<p> </p>
|
|
</blockquote>
|
|
<h3><a name="n3.2" id="n3.2"></a>3.2 Windows에서의 CVS</h3>
|
|
<blockquote>
|
|
<p>먼저, 여러분의 개발자 계정을 이용하여 완벽한 무들의 새 복사본을 내려받을 필요가 있습니다.</p>
|
|
</blockquote>
|
|
<ol>
|
|
<li><a target="_top" href="http://www.tortoisecvs.org/">tortoisecvs.org</a>에서 TortoiseCVS를 내려받아 설치하고, 재부팅합니다.</li>
|
|
<li>무들을 내려받을 새 폴더를 생성해 놓거나 준비해 둡니다.</li>
|
|
<li>준비한 폴더에 대고 오른쪽 마우스 클릭을 하여 메뉴의 "<strong>CVS Checkout</strong>" 을 실행합니다. 그러면 다이알로그 박스를 볼 수 있습니다.</li>
|
|
<li>박스에 있는 문서를 복사해서 CVSROOT 필드에 붙여 넣습니다.(사용자명도 함께!)
|
|
<pre> :ext:<font color="#990000">myusername</font>@cvs.sourceforge.net:/cvsroot/moodle</pre>
|
|
</li>
|
|
<li>무들의 최근 개발판을 얻기 위해 "Module" 필드 아래에 "<strong>moodle</strong>"을 적거나, 다른 부수적인 (공헌) 디렉토리를 가져오기 위해
|
|
"<strong>contrib</strong>" 을 넣고, 혹시 MySQL 관리 모듈을 얻기위해서는 "<strong>mysql</strong>"를 써 넣습니다.</li>
|
|
<li>"<strong>OK</strong>" 버튼을 누르면 모든 것이 다운로드 됩니다.<br />
|
|
</li>
|
|
</ol>
|
|
<blockquote>
|
|
<p>화면 창에서 내려받는 모든 파일들을 볼 수 있으며 잠시 후 무들의 완전한 모든 사본을 얻게 됩니다. 그 다음 첫번째 점검을 하면, CVS 서버로 부터 최신 갱신된 내용을 반영할 수 있습니다.</p>
|
|
</blockquote>
|
|
<ol>
|
|
<li>여러분의 무들 폴더(혹은 어떤 파일이나) 위에서 마우스의 오른쪽 버튼을 클릭하여 "<strong>CVS Update</strong>"를 선택합니다.</li>
|
|
<li>이제 잠시 앉아서 기록들이 스크롤 되는 걸 지켜봅니다. 다만 이때 여러분 컴퓨터에 있는 코드와 갱신되는 코드 사이에 혹시 있을지도 모르는 충돌에 주목합니다. 만일 이러한 일이 생기면 수작업으로 이러한 충돌을 해결해야 할 필요가 있습니다.<br />
|
|
</li>
|
|
</ol>
|
|
<blockquote>
|
|
<p>파일을 수정하고 나면(아이콘이 파란색에서 빨간색으로 변할 것입니다), 다음과 같이 CVS 서버에 확인을 할 수 있습니다.</p>
|
|
</blockquote>
|
|
<ol>
|
|
<li>여러분의 무들 폴더(혹은 어떤 파일이나) 위에서 마우스의 오른쪽 버튼을 클릭하여 "<strong>CVS Commit...</strong>"을 선택합니다.</li>
|
|
<li>다이알로그 박스에 변경사항을 확인하는 내용에 대하여 적어 넣습니다.</li>
|
|
<li>"OK"를 클릭하면, 여러분의 변경사항이 서버로 보내질 것입니다.<br />
|
|
</li>
|
|
</ol>
|
|
<br />
|
|
</blockquote>
|
|
<h2><a name="n4" id="n4"></a>4. 가지에서의 작업(Working with Branches)</h2>
|
|
<blockquote>
|
|
<p>아래의 다이아그램은 시간에 따라 <strong>moodle</strong>의 모듈들이 어떻게 다른 판으로 변천해 왔는지를 보여주는 것입니다.</p>
|
|
<p align="center"><img src="pix/cvstree.png" width="500" height="200" /></p>
|
|
<p align="left">현재 쓸 수 있는 모든 태그와 가지(braches)들을 살펴보려면 다음과 같은 명령어를 쓰면 됩니다.(여기에서는 최상위 무들 디렉토리에 있는 index.php를 대상으로 하였음)</p>
|
|
<div class="commandline">cvs status -v index.php</div>
|
|
<p>태그의 요령</p>
|
|
<ul>
|
|
<li>태그와 가지의 명칭은 항상 모두 대문자로 기록되어야 한다.</li>
|
|
<li>태그와 가지는 항상 <strong>전체 모듈</strong>(모든 무들)에 적용되어야 한다. 개개의 파일이나 디렉토리에 태그를 달지 말아라.</li>
|
|
<li>많은 사람들이 태그에 의존하고 있기 때문에 태그의 명칭을 바꾸는 것을 허용하지 않는다. 따라서 처음 태그를 붙일 때 제대로 붙여야 한다! </li>
|
|
</ul>
|
|
</blockquote>
|
|
<br />
|
|
<h3><a name="n4.1" id="n4.1"></a>4.1 개발을 위한 본줄기(Trunk development)</h3>
|
|
<blockquote>
|
|
<p>CVS의 본 줄기(핵심코드)는 무들 개발판 입니다. CVS에서 이는 <span class="style4">HEAD</span> 혹은 기본 가지(default branch)라고도 알려져 있습니다.</p>
|
|
<p>무들의 개발자들은 가능한한 이들이 안정성을 가지도록 노력하고 있지만, 간혹 새로운 코드들은 버그나 약간의 불안정성을 보이는 경우가 있습니다.</p>
|
|
<p>언제든 제품이 충분한 기능을 발휘하게 되면 배포를 결정합니다. 이 때에는 본줄기는 <strong>MOODLE_XX_BETA</strong>라는 태그를 갖게되며(이 경우 언제든 다시 마음을 바꿀 수 있습니다), 소위 <span class="style1">MOODLE_XX_STABLE</span>라는 배포를 위한 새로운 가지를 치게 됩니다.</p>
|
|
<p>이 시점에서 베타판이 배포되게 됩니다. 이 베타판은 CVS를 이용하지 않는 점검자들을 위한 것이며 최종 기능을 점검하고 버그를 색출하기 위한 것입니다.</p>
|
|
</blockquote>
|
|
<p> </p>
|
|
<h3><a name="n4.2" id="n4.2"></a>4.2 각 배포판을 위한 안정 가지(Stable branches)</h3>
|
|
<blockquote>
|
|
<p>안정한 가지 <span class="style3">MOODLE_XX_STABLE</span>가 생기면, 즉시 개발자들의 노력은 잠시 두 갈래로 나뉘어 집니다. 어떤 사람들은 다음 배포본을 위한 본 줄기에 쓸 새로운 기능에 매달리는가 하면, 대다수 개발자들은 현재의 <span class="style1"><strong>STABLE</strong></span> 가지에서 보고되는 버그를 수정하는 데 전념하게 됩니다.</p>
|
|
<p>유닉스에서는 아래와 같은 명령으로 현재 여러분이 쓰고 있는 무들판에서 안정판으로 바꿀 수 있습니다.</p>
|
|
<div class="commandline">cvs update -dP -r <span class="style1">MOODLE_XX_STABLE</span></div>
|
|
<p>그 후, 안정판에 대해 위에서 언급한 명령들을 적용할 수 있습니다. 본 줄기(trunk)판으로 가기위해서는 다음 명령을 쓰면 됩니다.</p>
|
|
<div class="commandline">cvs update -dPA</div>
|
|
<p>윈도우 환경에서는 각 가지를 선택하는 메뉴가 있어야만 할 것입니다.</p>
|
|
<p>일단 새로운 안정 가지가 실제로 안정하게 되면, 배포가 결정되게 됩니다. 배포를 위한 패키지가 만들어지고 가지는 (Martin에 의해) <strong>MOODLE_XXX</strong>와 갈은 태그가 붙게 됩니다.</p>
|
|
<p>주기적으로, 안정 가지에 있는 버그들이 고쳐져서 무들의 다음 판에서 활용될 수 있도록 본 줄기에 수합됩니다. MOODLE_XX_MERGED라고 불리는 임시 태그는 최종 병합의 과정을 추적할 수 있도록 관리될 것입니다. 그러한 병합을 위한 과정은 다음과 같습니다.</p>
|
|
<ol>
|
|
<li>다음처럼 가장 최근의 본 줄기 판에서 나온다.<br />
|
|
<br />
|
|
<div class="commandline">cvs update -dPA</div>
|
|
</li>
|
|
<li>최종 병합을 한 이후 달라진 가지의 모든 변경사항을 여러분의 본 줄기 판에 반영한다.<br /><br />
|
|
<div class="commandline">cvs update -kk -j MOODLE_13_MERGED -j MOODLE_13_STABLE</div>
|
|
</li>
|
|
<li>충돌사항에 대한 업데이트 기록을 주의깊게 살펴보고, 발견되는 오류를 하나 하나 교정해 간다.</li>
|
|
<li>병합된 사본을 CVS 본 줄기 판과 비교 확인한다.<br />
|
|
<br />
|
|
<div class="commandline">cvs commit</div>
|
|
</li>
|
|
<li>다시 가지 판으로 되돌아 간다.<br /><br />
|
|
<div class="commandline">cvs update -dPr MOODLE_13_STABLE</div>
|
|
</li>
|
|
<li>다음에 이러한 과정이 반복될 수 있도록 임시 병합 태그를 갱신한다.<br /><br />
|
|
<div class="commandline">cvs tag -RF MOODLE_13_MERGED</div>
|
|
</li>
|
|
</ol>
|
|
<p><br />
|
|
마지막으로, 안정 가지에 있는 무들의 모든 version.php 안의 <em>$version</em> 수치는 가능하다고 하더라도(정말 필요하다면 마지막 숫자만) 전혀 바뀌어서는 안된다. 그 까닭은 어떤 사람이 안정판에서 바로 다음의 안정판으로 업그레이드할 때에 본 줄기에서 있었을 지도 모를 데이터베이스의 업그레이드를 놓칠 수도 있기 때문이다.</p>
|
|
</blockquote>
|
|
<br />
|
|
<h3><a name="n4.3" id="n4.3"></a>4.3 큰 변화를 위한 기능 가지(Feature branches)</h3>
|
|
<blockquote>
|
|
<p>간혹, 많은 개발자들이 점검해야 할 필요가 있는 매우 큰 기능적 변화가 있다면, 이를 주 개발 줄기에 포함시키는 것이 너무 불안정할 경우가 있을 수 있다.</p>
|
|
<p>이러한 경우 그 기능을 위해 작업할 한시적인 가지가 만들어 질 수 있고, 여기에서 작업을 마친후 가급적 빨리 본 줄기로 통합할 수 있다. 한 예로 위 도표의 <span class="style1"><strong>MOODLE_14_WIDGET</strong></span> 가지를 들 수 있다.</p>
|
|
<p>만일 여러분이 자신의 새 WIDGET 기능에 대해 이러한 일을 하고 싶으면, 다음의 과정을 따르면 된다.</p>
|
|
<ol>
|
|
<li>다른 개발자들과 함께 이것이 꼭 필요한지에 대해 논의한다!</li>
|
|
<li>(무들의 모든 것에 대해) <strong>본줄기</strong>에 <strong>MOODLE_XX_WIDGET_PRE</strong> 과 같은 새로운 태그를 만든다. <br /><br />
|
|
<div class="commandline">cvs tag -R MOODLE_XX_WIDGET_PRE</div></li>
|
|
<li><span class="style1"><strong>MOODLE_XX_WIDGET</strong></span>라 불리는 자신의 가지를 만든다. <br /><br />
|
|
<div class="commandline">cvs tag -Rb <span class="style1">MOODLE_XX_WIDGET</span></div></li>
|
|
<li>기능이 충분히 안정화되었다고 생각될 때까지 그 가지에서 작업한다. 필요하다면 인증을 한다. <br /><br />
|
|
<div class="commandline">cvs commit</div></li>
|
|
<li>준비가 되면, 전체 가지를 본 가지에 병합을 하고, 충돌을 고치고 본 가지에 commit 한 후, 기능 가지를 폐기한다.
|
|
<br />
|
|
<br />
|
|
<div class="commandline">
|
|
<strong>cvs update -dPA</strong><br />
|
|
<strong>cvs update -kk -j <span class="style1">MOODLE_XX_WIDGET</span></strong><br />
|
|
<strong>cvs commit </strong></div>
|
|
</li>
|
|
</ol>
|
|
</blockquote>
|
|
<br />
|
|
<blockquote>
|
|
<p align="center">Good luck, be careful and have fun!</p>
|
|
</blockquote>
|
|
<br />
|
|
<p align="center"><font size="1"><a href="." target="_top">Moodle Documentation</a></font></p>
|
|
<p align="center"><font size="1">Version: $Id$</font></p>
|
|
</body>
|
|
</html> |