Local에서 간단히 CVS를 사용하는 과정에 대한 Tutorial
----
1. 스토리 1 프로젝트 시작 ¶
홍길동 씨는 이번에는 Java로 Hello Java를 작성하려고 한다. 간단한 소스지만 CVS에 넣어 볼겸 한번 만들어 본다.
이 프로젝트는 여러명이 할 것이 아니라서, 혼자서 자신의 컴퓨터에서 하려고 한다.
CVS를 개인적으로 사용할려면 두가지 방법이 있다. 하나는, 자신의 컴퓨터에
http://www.cvsnt.org/ 와 같은 서버툴을 설치하여 외부에서도 접근하는 것이고, 구지 서버를 돌리지 않고 cvs를 local에 저장소의 기능만을 이용하는 방법이 있다. 길동씨는 자신의 컴퓨터에서 간단한 저장소의 경험을 해보고 싶어서, local로 시도한다.
먼저 세팅을 위한 파일을 작성한다. 이 세팅이 없다면
~cpp
cvs -d "자신의세팅" "명령어" "태그"
로 써서 불편하다.
cvs_
SetForLocal.bat 내용 (한글부분은 채워넣어 주세요.)
~cpp
SET CVSROOT=local에서자신이사용할저장소
SET PATH=%PATH%;"C:Program FilesGNUWinCvs 1.3"
도움말 : local은 remote에 접근하는 것과 달리 로그인을 하지 않는 것을 전제 한다. 아무옵션도 붙이지 않고, 자신이 사용할 장소만을 지정한다.
~cpp
SET CVSROOT=컴퓨터에서 자신이사용할저장소
세팅 예
1.1. 저장소 초기화(Remote라면 cvs서버 설정에 있는 과정이다.) ¶
~cpp
C:User>cvs_SetForLocal.bat
.
.
.
C:User>cvs init
C:User>
아무런 메세지가 나오지 않지만, 세팅에 적은 디렉토리가 c:
CVSLocal 에 생성되었음을 확인할 수 있다. 이미 디렉토리가 있다면 해당 디렉토리 내부에 CVSROOT 라는 이름의 하위 디렉토리가 생길 것이다.
도움말 : CVSROOT 에 설정된 대로 CVS 세팅을 한다.
~cpp
cvs init
or
cvs -d c:CVSLocal init // -d 태그를 설정안하면 환경변수 CVSROOT의 값을 가져와 쓴다. 모든 cvs사용에 해당한다.
프로젝트 진행 폴더를 만들고, 프로젝트를 서버에 등록한다.
~cpp
C:User>mkdir HelloJava
C:User>cd HelloJava
C:UserHelloJava>
C:UserHelloJava>cvs import -m "Hello Java를 출력하는 모듈" HelloJava zeropage neocoin
No conflicts created by this import
C:UserHelloJava>
도움말 : 모듈(프로젝트와 동일 이하 모듈로 용어 통일)을 로컬의 저장소에 등록한다. 만약 내부에 소스같은 자원이 있다면 같이 등록된다.
~cpp
cvs import -m "코멘트" 프로젝트이름 VenderTag ReleaseTag
1.3. 프로젝트 받아오기 (checkout) ¶
서버에 등록된 프로젝트를 받아온다. 이제 어디에서나 checkout을 하면 프로젝트를 받아 올수 있다. 프로젝트 전체를 가지고 오는 개념이라서 상위 디렉토리에서 수행한다.
(프로젝트 폴더 내부에 CVS가 생겼으면 성공한 것이다.)
~cpp
C:UserHelloJava>cd ..
C:User>cvs checkout HelloJava
cvs checkout: Updating HelloJava
C:User>
도움말 : 지정하는 프로젝트(모듈) 전체를 받아 온다. local에 처음 프로젝트를 받아 올때 사용한다.
~cpp
cvs checkout 프로젝트이름(모듈이름)
길동씨는 프로젝트 세팅이 끝나고 간단히
HelloWorld.java 라는 프로그램을 작성했다.
~cpp
.HelloWorld> notepad HelloJava.java
소스
~cpp
public class HelloJava{
public static void main(String[] args){
System.out.println("Hello Java");
}
}
소스를 작성후 이 파일을 서버에 등록(add)하고, 소스를 올린다.
~cpp
C:UserHelloJava>cvs add HelloJava.java
cvs add: scheduling file `HelloJava.java' for addition
cvs add: use 'cvs commit' to add this file permanently
C:UserHelloJava>
C:UserHelloJava>cvs commit -m "Hello Java를 출력한다." HelloJava.java
RCS file: c:CVSLocal/HelloJava/HelloJava.java,v
done
Checking in HelloJava.java;
c:CVSLocal/HelloJava/HelloJava.java,v <-- HelloJava.java
initial revision: 1.1
done
C:UserHelloJava>
도움말 : add 서버에 추가되는 자원을 등록한다. commit 서버에 변경사항을 반영시킨다.
~cpp
cvs add 자원이름
cvs commit -m "코멘트" (자원이름)
2. 스토리 2 홍길동씨 프로그램 고치다. ¶
홍길동씨는 이렇게 프로그램을 C:
CVSLocal 에 저장하고는 곧 잊어 버린다. 그러다 몇일뒤 아차 하며 다시 소스를 oop적으로 고칠려고 시도하였다. 그냥 출력하는 사람에게 일침을 가하는 글을 마소에서 본적이 있으리라. 그래서 객체 지향(?) 적으로 작성하려고 한다.
위와 동일한 cvs_
SetForLocal.bat 을 실행 하고, 그냥 checkout을 한다. 시작 디렉토리는 c:user> 로 가정하였다.
~cpp
C:User>cvsS_etForLocal.bat
.
.
.
C:User>cvs checkout HelloJava
cvs checkout: Updating HelloJava
U HelloJava/HelloJava.java
C:User>cd HelloJava
C:UserHelloJava> notepad HelloJava.java
도움말 : checkout 서버에 등록되어 있는 모듈(프로젝트)를 받아온다.
~cpp
cvs checkout 모듈이름(프로젝트이름)
2.2. 소스 고치고 다시 올리기 ¶
그리고 이렇게 고치고,
~cpp
public class HelloJava{
void showHelloJava(){
String helloScript = "Hello Java";
System.out.println(helloScript);
}
public static void main(String[] args){
HelloJava helloJava = new HelloJava();
helloJava.showHelloJava();
}
}
변경된 소스를 올린다.
~cpp
C:UserHelloJava>cvs commit -m "HelloJava OOP적으로 노력" HelloJava.java
Checking in HelloJava.java;
c:CVSLocal/HelloJava/HelloJava.java,v <-- HelloJava.java
new revision: 1.2; previous revision: 1.1
done
도움말 : commit 서버에 변경된 자원을 반영한다.
~cpp
cvs commit -m "코멘트" (자원이름)
2.3. 지금까지 log 보기 ¶
길동씨는
HelloWorld.cpp 의 코멘트를 본다.
~cpp
C:UserHelloJava>cvs log HelloJava.java
RCS file: c:CVSLocal/HelloJava/HelloJava.java,v
Working file: HelloJava.java
head: 1.2
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1.2
date: 2002/07/31 15:36:21; author: Administrator; state: Exp; lines: +6 -1
HelloJava OOP적으로 노력
----------------------------
revision 1.1
date: 2002/07/31 15:33:20; author: Administrator; state: Exp;
Hello Java를 출력하는 모듈
=============================================================================
2.4. 소스의 다른점 1.2과 1.1의 다른점을 살펴보자. ¶
~cpp
C:UserHelloJava>cvs diff -r "1.2" -r "1.1" HelloJava.java
Index: HelloJava.java
===================================================================
RCS file: c:CVSLocal/HelloJava/HelloJava.java,v
retrieving revision 1.2
retrieving revision 1.1
diff -r1.2 -r1.1
2,5d1
< void showHelloJava(){
< String helloScript = "Hello Java";
< System.out.println(helloScript);
< }
7,8c3
< HelloJava helloJava = new HelloJava();
< helloJava.showHelloJava();
---
> System.out.println("Hello Java");
3. Thread ¶
- Remote와 큰 차이가 없지요. 차후 다른 스토리를 작성해서 또 업데이트 하겠습니다.
----
CVS