Netbeans에서 CVS쓰기

kuh74의 이미지

개요
- MS 윈도우에 설치된 Netbeans에서 SSH를 통해서 CVS서버에 연결하기
- ubuntu.com, netbeans.org에서 찾은 문서를 따라한 것을 정리했음
- 간단한 내용임에도 불구하고 삽질을 많이 했으므로,
차후에 저 스스로 보기 위해서 백업차원에서 올렸으며,
다른 분께 도움이 된다면 정말 감사하겠습니다.
제가 올린 글 중 부족한 부분을 채워주신다면 더더욱 감사하겠습니다.

테스트 환경
- CVS서버 : Ubuntu 6.06 LTS
- CVS클라이언트 : 윈도우XP에 설치한 Netbeans 5.5.1

1. Ubuntu에 SSH, CVS 서버 설치

shell> sudo apt-get install openssh-client
shell> sudo apt-get install openssh-server
shell> sudo apt-get install cvs
shell> sudo apt-get install xinetd
shell> sudo vi /etc/xinetd.d/cvspserver
----------- /etc/xinetd.d/cvspserver의 내용 시작 ------------------
service cvspserver
{
     port = 2401
     socket_type = stream
     protocol = tcp
     user = root
     wait = no
     type = UNLISTED
     server = /usr/bin/cvs
     server_args = -f --allow-root /var/lib/cvs pserver
     disable = no
}
----------- /etc/xinetd.d/cvspserver의 내용 끝   ------------------
 
shell> sudo /etc/init.d/xinetd restart
shell> sudo netstat -tap | grep cvs

CVS서버가 실행되고 있다면 다음 행이 출력될 것이다.

tcp        0      0 *:cvspserver            *:* LISTEN \

CVS서버를 설치하면 CVS저장소는 자동으로 초기화 되며 /var/lib/cvs 디렉토리에 위치한다.

주의> 지금까지 xinetd가 부팅될 때마다 실행되도록 하는 명령이 없었다.
혹시 cvs가 안 되면 xinetd가 실행되는 지 체크하고,
실행 안 되고 있을 경우 부팅될 때마다 실행되도록 할 것.

2. Ubuntu 사용자 계정 설정.

Netbeans에서 SSH를 통해서 CVS서버에 연결하는 데 사용할 계정이름이 ubuntu라고 가정한다.
ubuntu계정은 다음 2가지 권한이 필요하다.
- SSH를 통해서 연결할 수 있는 권한
- CVS 저장소에 쓸 수 있는 권한

SSH 연결권한 부여하기.
----------------------------------------------------------------------------
참고> SSH연결에 root계정을 사용하는 것은 보안에 아주 안 좋은 방식이며,
지정된 ID에 대해서만 SSH로 연결을 허용하는 것은 간단하지만 좋은 보안책이 된다.
----------------------------------------------------------------------------

다음 명령으로 sshd_config 파일을 확인해서 AllowUsers 항이 있는 지 확인한다. (기본적으로는 없다.)

shell> sudo less /etc/ssh/sshd_config

AllowUsers로 시작되는 행이 있으면 그 행에 자기가 사용할 ID가 포함되어 있는 지 확인한다.
AllowUsers로 시작되는 행이 없으면 기본적으로 모든 ID가 SSH접근권한을 가지지만,
다음 명령을 사용해서 SSH연결이 가능한 ID를 제한하는 것이 권장된다.

ubuntu, user1, user2라는 3개의 ID에 대해서 SSH연결을 허용하고자 할 경우
/etc/ssh/sshd_config파일의 맨 끝에 다음 줄을 추가한다.

shell> sudo vi /etc/ssh/sshd_config
------- /etc/ssh/sshd_config에 추가할 내용 시작 ----------
AllowUsers ubuntu user1 user2
------- /etc/ssh/sshd_config에 추가할 내용 끝 ----------

위의 예는 /etc/ssh/sshd_config파일에 AllowUsers로 시작되는 행이 없는 것을 전제로 한다.
기존에 AllowUsers로 시작되는 행이 이미 존재할 경우 그 행의 맨 끝에 연결을 허용할 ID를 추가해 준다.

CVS 저장소에 쓰기 권한 부여하기
src그룹 구성원은 모두 CVS 저장소에 쓰기 권한을 가진다.
그러므로, CVS를 사용하고자하는 ID에 src그룹 권한을 추가해주면 된다.
ubuntu라는 ID에 쓰기권한을 부여하고자 할 경우 다음 명령을 수행한다. (ubuntu를 적절한 계정 이름으로 바꾼다.)

shell> sudo usermod -a -G src ubuntu

CVS저장소에 프로젝트 추가하기
이것을 꼭 수행해야 되는 지 잘 모르겠다.
처음해 보는 거라서 시키는 대로 했다.
처음에 빈 디렉토리를 하나 만든 다음 그 디렉토리로 이동한 후 다음 명령어를 실행한다.

shell> cd <빈디렉토리 이름>
shell> export CVSROOT="/var/lib/cvs"
shell> cvs import . new_project start

'.'(현재 디렉토리)는 import할 대상을 나타내고,
'new_project'는 vendor tag이고,
'start'는 release tag이다.
vendor tag와 release tag가 뭔지도 모르겠고, 지금은 의미도 없지만 이 값들이 있어야 진행이 된다.
그리고, 이 명령들을 수행할 때 반드시 CVS저장소에 쓰기 권한이 있어야 한다.
앞에 나온 쓰기권한 부여 과정을 거쳤는 지 확인한다.

3. Netbeans에서 CVS사용하기

Netbeans 실행 -> CVS메뉴 -> Checkout... -> CVS Root 화면

 
   Edit... 버튼을 누른다.
   Access Method : ext
   User : (SSH 연결권한, CVS저장소 쓰기 권한을 가진 ID)
   Host : (CVS서버 이름 혹은 IP주소)
   Port : 22           (SSH는 기본값으로 22번 포트를 사용한다. SSH서버가 다른 포트를 사용하도록 설정된 경우 그 포트번호를 적는다.)
   Repository Path : /var/lib/cvs

확인 버튼을 누르면 SSH연결에 사용할 방법 2개 (internal, external) 중 1개를 선택할 수 있다.
   Use Internal SSH를 선택한다.
   SSH 로그인 암호를 입력한다.
   Remember Password 라디오버튼을 체크해준다.

Next버튼을 누르면 Module to Checkout 화면이 뜬다.
   Module : <불러올 모듈 이름>
             (빈칸으로 남겨두면 모든 모듈(프로젝트)을 불러온다.
             방금 CVS서버를 설치했다면 당연히 생성된 모듈(프로젝트)가 없으므로 빈칸으로 남겨놓도록 한다.)
   Branch : <무슨 말인지 모르겠다.  --;
             빈칸으로 남겨둬도 큰 문제 없는 것 같다.>
   Local Folder : <윈도우 컴퓨터의 작업 디렉토리를 지정한다.>

확인버튼을 누르면 Checkout(불러오기)이 진행된다.
-------------------------------------------------------
CVS서버를 셋업한 후 아무 모듈(혹은 프로젝트)도 없을 때
-------------------------------------------------------
Checkout 진행한 후 아무런 프로젝트도 없는 상태에서
프로젝트를 생성하겠냐고 한다.
즉시 새로운 프로젝트를 생성하고자 할 경우에는 Yes 선택한다.
No를 선택한 후 차후 수동으로 생성하는 프로젝트도 Yes를 선택한 것과 똑같은 효과를 가진다.
Checkout후 생성된 프로젝트는 모두 Commit(CVS서버에 저장하기)할 수 있고
Commit된 프로젝트는 이후에 다른 컴퓨터에서도 불러와서 공동작업을 할 수 있다.
-------------------------------
기존에 생성된 모듈이 있는 경우
-------------------------------
선택된 기존의 프로젝트를 불러온다.
해당 프로젝트를 열겠냐고 물어온다.
해당 프로젝트에 대해서 작업을 하기 위해서 Checkout했을테니 해당프로젝트를 연다고(Open) 대답한다.
No를 선택하고 나중에 수동으로 그 프로젝트를 열어도 효과는 똑같다.
불러온 프로젝트의 의존성이 깨진 경우 검은색이 아닌 다른 색깔로 표시가 되고,
프로젝트 이름에다가 마우스 오른쪽 버튼을 눌러서
Resolve broken dependency... 인가 하는 메뉴를 선택하면
문제가 되는 부분이 나온다.
(지금까지 나온 문제점은 필요한 화일이 없는 것이었다.
프로젝트에 필요한 jar파일의 위치를 정해주면 된다.)
문제를 다 해결한 후에는 프로그래밍을 계속할 수 있으며,
혹시 프로젝트 이름 옆에 CVS특유의 '물통' 기호가 없는 경우에도
"한번 더" Checkout하면 아무런 문제없이 프로그래밍을 계속할 수 있었다.
Forums: 

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.