$ cvs -d :ext:minskim@cvs.webdox.co.kr:/home/cvs 명령

( :ext:가 ssh이나 rsh을 이용한 접속 방식임을 나타내는 구실을 한다. 다만 기본적으로 cvs는 :ext:로 시작하는 저장소의 경우 rsh을 이용하므로, ssh을 쓰려면 CVS_RSH이라는 환경변수를 ssh로 설정해 주어야 한다. 물론 ssh 외에도 rsh과 같은 방식으로 동작하는 다른 명령이 있다면 그 명령을 사용할 수도 있다. rsh은 제삼자가 네트웍을 통해 암호를 가로챌 수 있으므로, 보안이 중요시되는 환경이라면 ssh을 사용할 것을 권한다.)

* 암호 인증 방식 이용

암호 인증 방식은 앞의 두 방식과는 달리 CVS 명령을 사용하기에 앞서 로그인을 해야 한다. CVS로 파일을 제공하는 공개 프로젝트들의 경우 홈페이지에서 'CVSROOT를 ...로 설정하십시오'라는 문구를 볼 수 있을 것이다. 이것이 바로 암호 인증 방식의 저장소 위치이다. cvs.webdox.co.kr이란 기계의 /home/cvs에 저장소가 위치하고 minskim이란 CVS 계정이 만들어져 있다면 다음과 같이 로그인할 수 있다.

$ cvs -d :pserver:minskim@cvs.webdox.or.kr:/home/cvs login
그러면 암호를 물어오는데 암호는 CVSROOT/passwd에 CVS 계정을 추가할 때 사용한 것과 같다. 저장소 위치의 :ext:만 :pserver:로 바뀌었을 뿐, 형식은 ssh을 이용하는 경우와 동일함을 알 수 있다.

일단 로그인을 하고 나면 인증 정보가 .cvspass란 파일에 저장이 되며, 이후로는 암호 없이 CVS 명령을 이용할 수 있다. 방법은 다음과 같다.

$ cvs -d :pserver:minskim@cvs.webdox.or.kr:/home/cvs 명령


* 작업 공간 생성 (checkout)

작업을 시작하기 위해서는 파일을 마음대로 변경하고 저장하여 테스트해 볼 수 있는 작업 공간이 필요하다. 저장소에 있는 파일들을 불러와 나만의 작업 공간을 만드는 명령이 checkout이다. 앞에서 만든 myprj를 checkout 명령으로 불러 오자.

$ cvs checkout myprj
cvs checkout: Updating myprj
U myprj/Hello.java
U myprj/README
checkout 대신 co만 써 주어도 된다. 앞에 붙은 U는 파일이 갱신(update)되었음을 의미한다. 명령을 수행하고 나면 현재 디렉토리에 myprj란 디렉토리가 생긴다. 이 디렉토리가 바로 작업 공간이다. 이 안에서 필요에 따라 파일들을 수정하고, 이를 다시 저장소로 저장하면 되는 것이다. 그러면 디렉토리 안에는 어떤 파일들이 들어 있을까?
$ cd myprj
$ ls
CVS    Hello.java    README


*작업 내용의 저장 (commit)

만들어진 작업 공간에서 작업을 시작해보자. Hello.java의 내용이 다음과 같다고 하자.

public class Hello {
    public static void main(String args[]) {
    }
}
여기에 인사말을 출력하는 부분을 추가해보자. 아무 편집기로나 파일을 열어 작업하면 된다. CVS를 사용한다고 해도 특별한 에디터나 통합 개발 환경을 필요로 하지는 않는다. Hello.java에 '안녕하세요?'라고 출력하는 문장을 추가했다고 하자.
public class Hello {
    public static void main(String args[]) {
        System.out.println("안녕하세요?");
    }
}
컴파일을 해서 실행을 해 보고 예상대로 실행된다면 이제 작업 내용을 저장소에 저장해야 한다. 그래야 다른 개발자들도 인사말이 추가되었다는 것을 알게 될 것이다. 파일의 변동 사항을 저장소에 저장하는 명령은 commit이다.
$ cvs commit -m "인사말 추가" Hello.java
Checking in Hello.java;
/home/cvs/myprj/Hello.java,v  <--  Hello.java
new revision: 1.2; previous revision: 1.1
done

+ Recent posts