프로젝트 소스 코드 관리하기

시작하기

CVS를 처음 사용하는 경우 이 도움말 가이드는 이 사이트에서 호스팅하는 프로젝트와 관련한 관리 CVS 작업에 대해 몇 가지 기본 참조 정보를 제공합니다. 이 가이드에서만 버전 관리에서 발생하는 CVS 또는 폭넓은 프로젝트 관리 이슈를 설명하는 것은 아닙니다. CVS에 대한 풍부한 설명서가 온라인 또는 인쇄본으로 제공되고 있습니다. 다음 링크를 누르면 이 사이트 다른 곳에 있는 일반 CVS 도구 설명서로 연결되며 이러한 문서는 많은 권위 있는 외부 CVS 리소스를 포함하고 있습니다.

CVS 도구 설명서

CVS 저장소 작업에 관한 도움말

프로젝트의 소스 저장소 설정과 관련된 많은 관리 작업은 프로젝트가 승인을 얻을 때 "백그라운드로" 처리됩니다. CVS를 처음 사용하는 경우 프로젝트에 대한 CVS 저장소 설정을 처음부터 시작할 필요가 없다는 의미입니다.

다음 작업이 자동으로 수행됩니다.

CVS 전문가인 경우 이 자동화는 이 사이트에서 호스팅하는 프로젝트에 대해 CVS 관리 모듈이 미리 구성된다는 의미입니다. CVS 관리 모듈에는 다음 파일이 포함됩니다.

원격 저장소 액세스의 백업, 복원, 이동 또는 구성 같은 모든 CVS 저장소 작업도 사이트 관리자가 처리합니다. 프로젝트에서 CVS 관리 파일이나 다른 저장소 수준 작업을 편집해야 하는 경우 사이트 관리자에게 지원을 요청해야 합니다.

프로젝트 소유자를 위한 몇 가지 초기 고려 사항

처음부터 시작하기

완전히 새 프로젝트이거나 아직 초기 단계이면 프로젝트 진행 초기에 전체 디렉토리 구조를 계획하십시오. 최상위 수준 CVS 모듈 구조를 미리 결정하더라도 기존 기여자 및 잠재적 기여자와 커뮤니케이션할 수 있도록 소스 파일을 구성하는 방법을 결정하십시오. 소스 구조를 초기에 고려하면 프로젝트가 성장할 때 일관성을 유지할 수 있으며 새 기여자가 속도를 내기 쉽습니다.

버전 관리 프로젝트 관리 이슈

프로젝트 소유자는 RCS와 CVS의 차이점 해결에 몰두하는 개발자들을 다루게 될 것입니다. 다음은 몇 가지 중요한 차이점입니다.

CVS 권한 관리하기

사이트 사용자의 프로젝트 소스 코드에 대한 CVS 읽기 권한은 프로젝트가 라이센스된 오픈 소스인지 소유권이 있는지에 따라 결정됩니다. 오픈 소스 프로젝트를 사용하면 프로젝트 참여자 여부에 관계 없이 기본적으로 모든 사이트 사용자가 소스 파일을 읽을 수 있습니다. 소유권이 있는 프로젝트 페이지는 공개적으로 볼 수 없으므로 소스 코드 액세스는 프로젝트 참여자로 제한됩니다.

그러나 오픈 소스와 소유권이 있는 프로젝트에서는 프로젝트 소유자가 역할을 부여 받아서 어떤 프로젝트 참여자에게 CVS 쓰기-액세스 권한을 줄지 결정합니다.

관찰자, 즉 프로젝트 참여를 승인했지만 실제로 프로젝트 소스 코드에 기여하지 않는 사용자는 읽기-액세스 권한이 있지만 프로젝트 소스 저장소에 대한 쓰기-액세스 권한은 없습니다. 소스 파일을 체크아웃하고 보고 버전을 비교하며 갱신할 수 있지만 수정된 파일이나 새 파일을 소스 저장소에 제공할 수 없습니다.

다른 모든 프로젝트 참여자 역할은 프로젝트 참여자에게 CVS 쓰기-액세스 권한을 자동으로 부여합니다. 사용할 수 있는 기능은 다음과 같습니다.

개별 파일과 연결된 읽기-쓰기 권한은 CVS에서 별도로 관리됩니다. 프로젝트의 CVS 저장소로 체크인한 후에는 파일에 대한 이러한 권한을 변경할 수 없다는 점에 유의하십시오.

버전 관리 관리 사용하기

버전 관리 기능은 일반적으로 CVS에서 지원하지 않는 기능인 프로젝트의 CVS 저장소에 대한 작업 수행 기능을 프로젝트 소유자에게 제공합니다. 프로젝트 소유자는 버전 관리 기능을 사용하여 프로젝트 유지관리 작업을 보조할 수 있습니다.

버전 관리 기능에 액세스하려면 프로젝트에서 왼쪽 네비게이션 메뉴의 버전 관리 아래에서 관리 링크를 누릅니다. 프로젝트 소스 옵션 페이지에서 2가지 기능에 액세스할 수 있습니다.

영구 삭제 기능 사용하기

이 기능을 사용하여 저장소에서 파일과 파일 이력을 영구히 삭제합니다. 이 기능을 사용하여 파일을 삭제하면 파일이 저장소에 추가되지 않았던 것처럼 저장소에는 파일에 대한 정보가 없습니다.

버전 관리 어플리케이션의 주요 기능 중 하나는 버전 이력이며 새 버전에 필요하지 않은 파일에 대해서도 적용됩니다. 그러나 파일이나 디렉토리가 실수로 추가되는 경우가 있으며 그런 경우 기존 이력과 함께 완전히 제거해야 합니다. 예를 들어 개발자가 체크인하지 말아야 하는 파일을 뜻하지 않게 체크인하는 것이며 또 다른 예는 소스 트리를 잘못 가져와서 개발자가 가져오기를 다시 수행하기 위해 재시작하는 것입니다.

이 기능을 사용할 때는 특히 주의하십시오. 이 프로세스를 완료한 후에 모든 이전 태그는 삭제된 파일을 포함하지 않습니다. 파일을 영구 삭제하기 전에 특정 파일을 삭제할 것이며 완료한 후에 새 코드 버전을 체크아웃하도록 조언하는 메시지를 프로젝트 개발자에게 전송해야 합니다.

파일이나 폴더를 영구 삭제하려면:

  1. 프로젝트 소스 옵션 페이지에서 영구 삭제 링크를 누릅니다.
  2. 저장소에서 파일 삭제 페이지에서 이 페이지에 제공되는 정보를 검토합니다.
  3. 경로명 필드로 이동하고 프로젝트 저장소에서 영구 삭제할 경로명과 파일 이름을 입력합니다.
  4. 이 단계를 완료한 후에 삭제 버튼을 누릅니다.

참고: 이름에 공백이 있는 파일은 이 기능을 사용하여 영구 제거할 수 없습니다. 예를 들어 이름이 "unit one"인 파일은 이 기능을 사용하여 적절히 처리할 수 없습니다.

영구 이름 변경 기능 사용하기

이 기능을 사용하여 항상 그 이름이었던 것처럼 파일과 디렉토리 이름을 영구 변경합니다. 버전 관리 컴포넌트는 파일 이력을 유지하며 파일 이름을 변경하는 경우 한 파일을 제거하고 다른 파일을 생성하는 것으로 간주합니다. 그러나 때때로 이력과 함께 파일이나 디렉토리 이름을 변경하는 것이 바람직합니다.

예를 들어 잘못된 저장소 디렉토리를 지정하여 가져오기를 수행한 경우 이름을 변경하면 즉시 문제를 해결할 수 있습니다. 파일 이름을 변경하는 또 다른 이유는 새로 원하는 파일의 이름이 대소문자만 다르기 때문일 수 있습니다. 예를 들어 "image.jpg"라는 이름의 파일과 "Image.jpg"라는 이름의 파일이 있는 경우 일부 버전 관리 클라이언트는 이 두 파일을 다른 파일로 구별하지 못합니다. CVS rm을 사용하는 것은 새 파일 이름을 추가할 때 기존 파일 이름을 저장소 Attic에서 검색하기 때문에 대소문자 충돌을 해결하는 데 적합하지 않습니다.

파일 이름을 영구 변경하려면:

  1. 프로젝트 소스 옵션 페이지에서 영구 이름 변경 링크를 누릅니다.
  2. 저장소 파일들의 이동/이름변경 페이지에서 이 페이지에 제공되는 정보를 검토합니다.
  3. 이전 경로명 필드로 이동하고 영구 이름 변경할 파일의 경로명과 파일 이름을 입력합니다.
  4. 새로운 경로명 필드에 새 파일과 경로명을 입력합니다.
  5. 이 단계를 완료한 후에 이름 변경 버튼을 누릅니다.

명령줄 cvsadmin 사용하기

파일이 저장소로 커밋되었으면 해당 저장소의 영구 참여자와 해당 파일의 속성은 변경할 수 없습니다. 그러나 프로젝트 관리자는 명령줄 cvsadmin 도구를 사용하여 커밋된 파일을 어느 정도 조정할 수 있습니다. 명령줄 cvsadmin 도구를 사용하여 다음 작업을 수행할 수 있습니다.

참고: cvsadmin 기능에 사용 가능한 동작이 많이 있지만 여기에서 설명한 동작만 지원됩니다. 다른 동작을 사용하면 저장소가 손상될 수 있습니다.

로그 메시지 수정하기

잘못된 로그 메시지가 있는 파일을 커밋한 경우 나중에 "cvsadmin -m" 명령을 사용하여 변경할 수 있습니다. 먼저 관련 커밋의 개정 번호를 알고 있어야 합니다. 해당 번호를 즉시 알 수 없는 경우 파일에서 "CVS 로그"를 실행하여 확인할 수 있습니다.

예를 들어 파일 "foo.txt"의 개정 번호 "1.5"의 로그 메시지가 잘못되었다고 가정합시다. 다음 명령을 사용하여 커밋 메시지를 변경합니다.

cvsadmin -m1.5:"Here is the new log message." foo.txt

cvsadmin을 사용하여 키워드 대체 관리하기

기본적으로, CVS는 파일이 추가되거나 커밋될 때마다 해당 파일의 모든 키워드를 확장합니다. 그러나 키워드 대체가 바람직하지 않은 경우도 있습니다. 예를 들어 문자열 "$Author: arun $"가 이진 파일에 나타날 수 있습니다. 여기서 문자열을 "$Author: arun $"으로 확장하면 파일이 손상됩니다. 또는 키워드 문자열이 텍스트 파일에 나타날 수 있지만 이 경우 동적으로 대체하는 적은 적절하지 않습니다.

이진 파일이 아닌 경우 파일을 저장소에 추가할 때 -k 옵션을 전달하여 (예: "CVS add-ko") 키워드 대체 기능을 해제할 수 있습니다. 그러나 다시 대체 기능을 꺼야 하는 경우 "CVS admin KO"를 사용하면 됩니다.

이진 파일의 경우 해결 방법은 "KO" 대신 "-kb"를 전달하는 것을 제외하고 동일합니다. "b"는 파일을 이진 데이터로 취급하며 키워드 확장과 플랫폼별 라인 엔딩 변환을 억제합니다. "o"는 키워드 문자열을 원래 상태로 유지하며 아무런 작업을 수행하지 않는 효과가 있습니다.

사용 가능한 추가 동작은 다음과 같습니다.

-kk:
키워드 이름만 바꿉니다. 예를 들어 "$Author: arun $"은 "$Author: arun $"가 됩니다.
-kv:
값만 바꿉니다. 따라서 "$Author: arun $" 또는 "$Author: arun $"은 "jrandom"이 되므로 향후 다시 대체되지 않습니다.

키워드 사용에 대한 자세한 내용은 다음 링크를 참조하십시오.