티스토리 뷰

프로젝트 소스 파일 액세스에 명령줄 서브버전 사용

명령줄 서브버전 시작

서브버전을 사용하여 버전을 관리하는 개발 프로젝트에 참여하는 경우, 프로젝트 소스 파일에 접근하고 변경하려면 서브버전을 사용해야 합니다. 프로젝트의 왼쪽 탐색 창에서 서브버전 링크를 클릭하면 온라인으로 소스 코드를 탐색하면서 프로젝트의 디렉토리 구조 및 파일을 볼 수 있습니다.

서브버전 페이지는 branches/, tags/, trunk/의 3개 하위 디렉토리와 리드미(README) 파일로 구성됩니다. 리드미 파일은 서브버전 저장소에 대한 최상위 보기를 제공합니다. 액세스 옵션을 눌러 Subversion 클라이언트 설정 지침을 볼 수 있습니다. 먼저 로컬 시스템에 서브버전 클라이언트가 설치되어 있어야 합니다.

프로젝트의 로컬 작업 복사본 가져오기: svn checkout

최신 소스 파일의 "작업 복사본"을 가져오려면 소스 파일을 체크아웃, 즉 저장소에서 시스템으로 파일을 복사하는 과정을 거쳐야 합니다. 쉘 또는 터미널 클라이언트에서 다음과 같이 입력합니다.

svn checkout https://(projectname).(domain)/svn/(projectname)/(DIR) (projectname) --username [type-user-name-here]

프롬프트가 나타나면 사용자 패스워드를 입력합니다. 이 사이트의 사용자 계정과 연결되어 있는 패스워드와 같아야 합니다. 디렉토리를 지정하지 않으면 프로젝트 소스 코드 전체가 체크아웃됩니다. 'trunk/' 디렉토리에 작업 'www/' 폴더가 있으므로 이 디렉토리를 체크아웃할 수 있습니다.

스위치: --revision (-r) REV, --quiet (-q), --non-recursive (-N), --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR

기본 작업 주기, 초기 체크아웃, 작업 복사본 참조

참고: 사이트에서 SSL(Secured Socket Layer)이 활성화되어 있지 않은 경우 https 대신 http를 사용하여 Subversion 작업을 수행합니다. 예를 들어 프로젝트 저장소에서 최신 소스 코드를 체크아웃하려면 다음 명령을 사용합니다.

svn checkout https://(projectname).(domain)/svn/(projectname)/(DIR) (projectname) --username [type-user-name-here]

서브버전 저장소에서 파일 관리하기

프로젝트 저장소의 로컬 복사본을 체크아웃했다면 로컬에서 기존 파일을 편집하고 새 파일과 디렉토리를 만들며 파일을 삭제할 수 있습니다. 모든 변경 사항은 서브버전 저장소로 커밋하기 전까지 프로젝트 파일의 로컬 복사본에만 적용됩니다.

작업 복사본에서 저장소로 파일/디렉토리 추가: svn add

새 파일을 만들고 작업 디렉토리에서 이를 편집한 다음 저장소로 추가하거나, 내용이 있거나 없는 디렉토리를 저장소에 추가할 수 있습니다.

svn add FILENAME/DIR을 사용하면 됩니다.

그러면 파일/디렉토리를 작업 복사본으로 추가하고, 저장소에 추가할 일정을 정합니다. 다음 번에 커밋을 수행하면 저장소에 업로드되어 추가됩니다. 추가한 것이 있었으나 커밋하기 전에 마음이 바뀌었다면 svn revert를 사용하여 추가 일정을 취소할 수 있습니다.

스위치: --targets FILENAME, --non-recursive (-N), --quiet (-q), --config-dir arg, --auto-props, --no-auto-props

파일/디렉토리 추가 예 참조

개정 및 작성자 정보와 함께 파일 내용 보기: svn blame

다음과 같이 입력하면 지정된 파일에서 작성자 및 개정 정보를 인라인으로 볼 수 있습니다.

svn blame FILENAME

각 텍스트 줄의 앞에는 작성자(사용자 이름) 및 해당 줄이 마지막으로 변경된 개정 번호가 주석으로 표시됩니다.

스위치: --revision (-r) REV, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR

파일 내용 보기: svn cat

작업 복사본이 저장소의 버전보다 오래되었거나 로컬 작업 복사본을 수정했을 수도 있습니다. 이 경우, 변경 사항을 커밋하거나 작업 복사본 편집을 결정하기 전에 해당 파일의 내용 차이점을 확인할 필요가 있습니다. svn cat FILENAME을 실행하면 저장소에서 HEAD 개정판을 자동으로 가져옵니다. 이 하위 명령은 파일을 기존 개정 번호의 상태대로 검색하고 이를 화면에 표시할 때 주로 사용합니다. 또는 이 사이트에서 프로젝트의 소스 코드를 탐색하여 동일한 작업을 수행할 수 있습니다.

스위치: --revision (-r) REV, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR

작업 복사본 정리하기: svn cleanup

"작업 복사본 잠김" 오류가 발생할 때가 있습니다. 잠금을 해제하고 작업 복사본을 반복적으로 정리하려면 svn update를 사용합니다.

스위치: --diff3-cmd CMD, --config-dir DIR

svn cleanup 참조

작업 복사본 또는 저장소의 파일이나 디렉토리 복사: svn copy

프로젝트에서 기존 문서를 사용해야 하는 경우가 있습니다. 예를 들어 새로운 내용을 개발하면서 '외양'은 그대로 유지하기 위해 기존 HTML 파일의 코드를 참조할 수 있습니다. 파일을 완전히 새로 만들 필요 없이 svn copy를 사용하여 이 파일을 복사하고 다른 이름으로 저장한 다음 그 내용을 변경할 수 있습니다. 저장소에서 로컬 작업 복사본으로, 또는 그 반대로 파일을 복사할 수 있습니다. 또는 로컬 작업 복사본 내부로부터 파일을 복사할 수도 있습니다. 서브버전에서는 저장소 간 복사는 지원하지 않습니다. 그 작업에는 svn copy SRC DST를 사용합니다.

스위치: --message (-m) TEXT, --file (-F) FILE, --revision (-r) REV, --quiet (-q), --username USER, --password PASS, --no-auth-cache, --non-interactive, --force-log, --editor-cmd EDITOR, --encoding ENC, --config-dir DIR

svn copy 참조

로컬 작업 복사본에서 파일이나 디렉토리 삭제하기: svn delete

로컬 작업 복사본에서 불필요한 파일을 삭제하고 싶은 경우가 있습니다. svn delete FILENAME을 사용하면 파일의 삭제 일정을 정합니다. 커밋을 수행해야 저장소에서 실제로 파일이 삭제됩니다.

스위치: --force, --force-log, --message (-m) TEXT, --file (-F) FILE, --quiet (-q), --targets FILENAME, --username USER, --password PASS, --no-auth-cache, --non-interactive, --editor-cmd EDITOR, --encoding ENC, --config-dir DIR

파일간 차이점 보기: svn diff

svn diff를 사용하면 작업 복사본에서 지정된 파일의 로컬 수정 사항을 저장소 버전과 비교하여 표시할 수 있습니다. 명령 프롬프트에서 다음과 같이 입력합니다.

svn diff (파일 경로) (프로젝트의 저장소 URL)

예를 들어, 로컬에서 수정된 "index.html" 파일을 프로젝트 저장소의 파일과 비교하려면 다음과 같이 입력합니다.

svn diff $SRC/...../index.html https://(projectname).(domain)/svn/(projectname)/trunk (projectname) --username [type-user-name-here]

또는 파일이 있는 디렉토리로 이동하여 다음과 같이 입력합니다.

svn diff (FILENAME)

그러면 개정 번호와 함께 차이점이 표시됩니다.

스위치: --revision (-r) REV, --old OLD-TARGET, --new NEW-TARGET, --extensions (-x) "ARGS", --non-recursive (-N), --diff-cmd CMD, --notice-ancestry, --username USER, --password PASS, --no-auth-cache, --non-interactive, --no-diff-deleted, --config-dir DIR

이력 검사, svn diff 참조

로컬 시스템에서 정리된 디렉토리 트리 내보내기: svn export

로컬 시스템상의 버전 없는 복사본, 즉 정리된 트리 디렉토리를 프로젝트 저장소나 로컬 작업 복사본 내부로부터 추출할 수 있습니다. 이전 개정판의 정리된 디렉토리를 저장소로부터 가져오려면 다음과 같이 입력합니다.

svn export [-r REV] [PATH]

URL에 의해 지정된 저장소로부터 개정 REV가 지정되었다면 그곳에서 내보내거나, 아니면 HEAD에서 PATH로 정리된 디렉토리 트리를 내보냅니다. PATH가 생략되면 URL의 마지막 컴포넌트가 로컬 디렉토리 이름으로 사용됩니다. 또는 로컬 시스템 내부에서 PATH1 작업 복사본에서 PATH2 작업 복사본으로 정리된 디렉토리 트리를 내보낼 수도 있습니다. 그러면 로컬 변경 사항이 모두 보존되지만, 버전 관리 대상 파일은 복사하지 않습니다. 이 작업을 수행하려면 다음과 같이 입력합니다.

svn export PATH1 PATH2

스위치: --revision (-r) REV, --quiet (-q), --force, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR

Subversion에 관한 도움말 가져오기: svn help

서브버전은 명령줄 인터페이스 내부에서 도움말을 제공합니다. 특정 하위 명령에 대한 도움말을 확인하려면 다음과 같이 입력합니다.

svn help [SUBCOMMAND...]

스위치: --version, --quiet (-q)

SVN 저장소로 변경 사항 보내기

파일 및/또는 디렉토리를 로컬에서 변경했다면 SVN 저장소로 이 변경 사항을 커밋해야 합니다.

변경 사항 커밋하기: svn commit

공유 저장소로 변경 사항을 커밋하려면 다음과 같이 입력합니다.

svn commit -m "여기에 근거 입력"

파일 변경 사항에 대한 설명을 포함시키지 않으면 svn이 커밋 작업을 완료하기 전에 파일 편집기를 호출하여 이를 추가하라는 메시지가 표시되며, 그렇지 않으면 "커밋 실패" 오류가 발생합니다. 모든 커밋은 자동으로 기록되어 프로젝트의 커밋 토론에 게시됩니다.

스위치: --message (-m) TEXT, --file (-F) FILE, --quiet (-q), --non-recursive (-N), --targets FILENAME, --force-log, --username USER, --password PASS, --no-auth-cache, --non-interactive, --encoding ENC, --config-dir DIR

변경 사항 커밋, editor-cmd 참조

프로젝트 저장소에서 버전 없는 파일 또는 트리 가져오기: svn import

svn import를 사용하여 버전 없는 파일이나 트리를 프로젝트 저장소로 반복 커밋할 수 있습니다. 필요에 따라 저장소에 상위 디렉토리가 만들어집니다. 다음 명령은 PATH에서 URL로 복사본을 반복 커밋합니다. PATH가 생략되면 "."로 가정합니다.

svn import [PATH] URL

예: 로컬 시스템의 파일로 버전 없는 디렉토리 (D)를 만드는 경우. 프로젝트의 왼쪽 탐색 창에서 서브버전 링크를 클릭하여 서브버전 페이지로 이동합니다. 소스 코드 탐색 아래에 NEWDIR이 나열되지 않습니다. 프로젝트 저장소로 D를 가져오려면 다음과 같이 입력합니다.

svn import -m "여기에 메시지 입력" D http://(projectname).(domain)/svn/(projectname)/NEWDIR

페이지를 새로 고칩니다. 소스 코드 탐색 아래에 D가 나열됩니다. 파일을 보려면 D를 누릅니다.

스위치: --message (-m) TEXT, --file (-F) FILE, --quiet (-q), --non-recursive (-N), --username USER, --password PASS, --no-auth-cache, --non-interactive, --force-log, --editor-cmd EDITOR, --encoding ENC, --config-dir DIR, --auto-props, --no-auto-props

작업 복사본에서 경로 정보 인쇄하기: svn info

어떤 하위 명령을 실행하기 위해 작업 복사본의 파일에 대한 특정 정보가 필요할 때가 있습니다. svn info라고 입력하면 작업 복사본의 작업 복사본 경로에 있는 항목에 대해 다음과 같은 길지만 유용한 정보를 인쇄합니다. 경로, 이름, URL, 개정판, 노드 종류, 마지막 변경 시점, 작성자, 마지막으로 변경된 개정 번호, 마지막 변경일, 마지막으로 갱신된 텍스트, 마지막으로 갱신된 등록 정보, 체크섬 등 유용한 모든 정보가 인쇄됩니다.

스위치: --targets FILENAME, --recursive (-R), --config-dir DIR

저장소에서 디렉토리 항목의 목록 보기: svn list

어떤 프로젝트에 대한 작업을 시작하거나 '작업 복사본'을 가져오기 전에 그 내용, 즉 프로젝트 저장소에 있는 디렉토리와 파일을 확인하거나 로컬 작업 복사본에 있는 디렉토리 항목을 보고 싶은 경우가 있습니다. 명령 프롬프트에서 svn list [TARGET...]이라고 입력하면 똑같은 내용을 볼 수 있습니다. 또는 프로젝트 내부에서 소프트웨어 구성 관리 페이지로 이동하여 해당 프로젝트의 저장소를 볼 수도 있습니다.

스위치: --revision (-r) REV, --verbose (-v), --recursive (-R), --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR

커밋 로그 메시지 보기: svn log

다음과 같이 입력하여 '작업 복사본' 또는 저장소에 있는 파일/디렉토리의 개별 파일/디렉토리 이력을 조회하면서 개정 정보를 추적할 수 있습니다.

svn log [PATH]

그러면 가장 최신 개정판을 시작으로 파일/디렉토리 개정 정보가 표시되며, 커밋 메시지와 작성자 이름 등의 정보가 함께 표시됩니다. 또는 이 사이트를 사용하여 프로젝트 저장소에 있는 개별 파일의 커밋 로그 메시지를 볼 수 있습니다. 프로젝트의 왼쪽 탐색 창에서 서브버전 링크를 클릭합니다. 서브버전 페이지가 나타납니다. 소스 코드 탐색 아래 디렉토리에 있는 파일을 검색하고 파일 이름을 누릅니다. 그러면 커밋 로그 메시지와 함께 페이지가 표시됩니다.

스위치: --revision (-r) REV, --quiet (-q), --verbose (-v), --targets FILENAME, --stop-on-copy, --incremental, --xml, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR

svn log 참조

변경 사항 병합하기: svn merge

svn merge 명령을 실행하면 서브버전 기능을 통해 저장소에서 가장 최신 버전의 파일을 작업 복사본으로 병합할 수 있습니다.

스위치: --revision (-r) REV, --non-recursive (-N), --quiet (-q), --force, --dry-run, --diff3-cmd CMD, --ignore-ancestry, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR

svn merge, 충돌 해결(다른 변경 사항 병합), 브랜치 및 병합: 일반적인 병합 사용 사례, 병합 최고의 실행 사례 참조

저장소를 이용한 작업하기

새 디렉토리 만들기: svn mkdir

작업 디렉토리에서 새 디렉토리를 만들려면 다음과 같이 입력합니다.

svn mkdir PATH

프로젝트 저장소에서 새 디렉토리를 만들려면 다음과 같이 입력합니다.

svn mkdir URL

PATH 또는 URL의 마지막 컴포넌트에 의해 디렉토리 이름이 결정됩니다. 저장소에서 디렉토리는 즉시 커밋이 수행되면서 만들어지므로 커밋 메시지가 필요합니다.

스위치: --message (-m) TEXT, --file (-F) FILE, --quiet (-q), --username USER, --password PASS, --no-auth-cache, --non-interactive, --editor-cmd EDITOR, --encoding ENC, --force-log, --config-dir DIR

파일 또는 디렉토리 이동: svn move

svn move SRC DST를 사용하면 작업 복사본이나 프로젝트 저장소 내부에서 파일이나 디렉토리를 옮길 수 있습니다. 이 명령은 svn copy 다음에 svn delete를 실행하는 것과 동일한 결과를 가져옵니다. 작업 복사본 내부에서 파일이나 디렉토리를 이동할 경우, 파일이나 디렉토리가 옮겨지고 다음 커밋에 추가되도록 일정이 계획됩니다. 프로젝트 저장소 내부에서 파일이나 디렉토리를 옮기면 자동으로 커밋이 수행되므로 커밋 메시지가 필요합니다.

스위치: --message (-m) TEXT, --file (-F) FILE, --revision (-r) REV, --quiet (-q), --force, --username USER, --password PASS, --no-auth-cache, --non-interactive, --editor-cmd EDITOR, --encoding ENC, --force-log, --config-dir DIR

등록 정보 관리하기

서브버전에는 그 동작을 결정짓거나 영향을 미치는 등록 정보가 많습니다. 파일의 내용처럼 등록 정보 변경 사항도 수정, 커밋, 취소할 수 있습니다. 로컬 작업 복사본이나 프로젝트 저장소에서 파일, 디렉토리 또는 개정판의 등록 정보를 삭제, 편집, 인쇄, 나열하거나 설정할 수 있습니다.

속성, 버전 없는 속성, 메타데이터 속성, svn propdel, svn propedit, svn propget, svn proplist, svn propset, 훅 스크립트 참조

충돌 해결: svn resolved

로컬 작업 복사본을 갱신하는 중 충돌이 발생할 수 있습니다. 이 경우 충돌을 해결해야 합니다. 충돌 해결 후 svn resolved PATH...라고 입력하여 충돌이 '해결'되었음을 작업 복사본에 알립니다.

스위치: --targets FILENAME, --recursive (-R), --quiet (-q), --config-dir DIR

충돌 해결(다른 변경 사항 병합) 참조

변경 사항 취소하기: svn revert

서브버전에서 svn revert PATH...는 Windows의 Ctrl Z와 같습니다. 다음 작업을 할 수 있습니다.

  • 로컬 작업 복사본에서 로컬 변경 사항을 취소하여 충돌된 상태를 해결합니다.
  • 작업 복사본에서 어떤 항목의 내용 및 그 속성 변경 사항을 취소합니다.
  • 파일 추가, 파일 삭제와 같은 일정 계획 작업을 수행합니다.

참고: 대상을 지정하지 않으면 작업 복사본의 변경 사항을 잃게 될 수 있습니다.

스위치: --targets FILENAME, --recursive (-R), --quiet (-q), --config-dir DIR

파일/디렉토리의 상태 가져오기: svn status

버전 관리에서는 변경 사항을 프로젝트 저장소로 커밋하기 전에 검토하는 것이 좋습니다. svn status를 실행하여 작업 복사본의 파일 및 디렉토리 상태를 인쇄할 수 있습니다. 이 명령을 실행하면 코딩된 8개 열이 출력됩니다. 열마다 긴 설명이 붙어 있으므로 이 출력에서 '오류 없는' 결론을 이끌어내기는 어렵습니다. 이 작업을 더 간단하게 해결하고 예를 함께 볼 수 있으려면 명령 프롬프트에서 svn help status라고 입력합니다.

스위치: --show-updates (-u), --verbose (-v), --non-recursive (-N), --quiet (-q), --no-ignore, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir

변경 사항 검사를 확인하십시오.

작업 복사본 전환하기: svn switch

svn switch URL [PATH]를 사용하면 새 URL을 미러링하도록 작업 복사본을 갱신할 수 있습니다. 작업 복사본 또는 그 일부를 새 브랜치로 이동할 수 있습니다. 이 하위 명령을 브랜치 바로가기로 사용할 수 있습니다.

스위치: --revision (-r) REV, --non-recursive (-N), --quiet (-q), --diff3-cmd CMD, --relocate, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR

작업 복사본 전환, 브랜치 및 병합svn switch 참조

작업 복사본 갱신하기: svn update

버전 관리에서는 다음 명령을 사용하여 로컬 작업 복사본을 프로젝트 저장소로 매일 갱신하는 것이 좋습니다.

svn update [PATH...]

갱신된 항목은 다음과 같이 표시되는 현재 상태와 함께 나열됩니다.

  • A = 파일이 작업 복사본에 추가되었습니다.
  • U = 파일이 작업 복사본에서 갱신되었습니다.
  • D = 파일이 작업 복사본에서 삭제되었습니다.
  • R = 파일이 작업 복사본에서 대체되었습니다.
  • G = 파일이 성공적으로 병합되었습니다.
  • C = 파일에 병합 충돌이 발생해 수동으로 해결해야 합니다.

스위치: --revision (-r) REV, --non-recursive (-N), --quiet (-q), --diff3-cmd CMD, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR

작업 복사본 갱신, 수동 병합 충돌 참조

브랜치 및 태그

일반적으로 프로젝트의 트렁크는 주 개발 라인에서 사용되지만, 브랜치는 그 라인의 변형에서 사용됩니다. 브랜치는 진행형 개발 라인입니다. 소프트웨어 개발 생명주기에서 어떤 소프트웨어 제품의 출시가 예정된 가운데 테스트 담당자들이 예비 릴리즈를 대상으로 작업을 수행하도록 허용함으로써 테스트와 상관 없이 새로운 개발이 진행되게 할 때 브랜치를 자주 사용합니다. 또한 브랜치는 실험적인 작업을 수행하거나 코드 전체를 재작성할 때에도 사용됩니다. 태그는 파일 개정판을 함께 묶어서 그룹으로 만드는 방법입니다. 브랜치와 태그는 svn copy 하위 명령을 사용하여 만들지만, 이 두 가지는 서로 다른 개념입니다. 브랜치는 여러 개정판을 나타내지만 태그는 하나의 개정판을 나타냅니다.

이 사이트에서 호스팅되는 프로젝트의 서브버전 저장소에서는 소스 파일의 브랜치 및 태그 작업을 지원합니다. 태그와 브랜치는 서브버전에 대한 손쉽고 실용적인 '복사' 작업입니다.

브랜치 또는 태그 프로젝트 파일을 만들려면 다음과 같이 입력합니다.

svn copy SRC DST -m "여기에 메시지 입력"

브랜치 및 병합 참조

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함