SVN-라이프 사이클
이 장에서는 버전 관리 시스템의 수명주기에 대해 설명합니다. 이후 장에서는 각 작업에 대한 Subversion 명령을 볼 것입니다.
저장소 생성 :
저장소는 개발자가 모든 작업을 저장하는 중앙 위치입니다. 저장소는 파일뿐만 아니라 변경 내역도 저장합니다. 즉, 파일의 변경 내역을 유지합니다.
'만들기'작업은 새 저장소를 만드는 데 사용됩니다. 대부분의 경우이 작업은 한 번만 수행됩니다. 새 리포지토리를 생성 할 때 VCS는 생성 할 위치 또는 리포지토리에 지정해야하는 이름과 같이이를 식별 할 수있는 내용을 말해야합니다.
점검
'체크 아웃'작업은 저장소에서 작업 복사본을 만드는 데 사용됩니다. 작업 복사본은 개발자가 변경 사항을 수행하고 나중에 이러한 변경 사항을 저장소에 제출하는 개인 작업 공간입니다.
최신 정보
이름에서 알 수 있듯이 '업데이트'작업은 작업 복사본을 업데이트하는 데 사용됩니다. 이 작업은 작업 복사본을 저장소와 동기화합니다. 모든 팀이 저장소를 공유하므로 다른 개발자가 변경 사항을 커밋 할 수 있으며 작업 복사본이 오래되었습니다.
Tom 과 Jerry 가 프로젝트에서 작업하는 두 명의 개발자 라고 가정 해 보겠습니다 . 둘 다 저장소에서 최신 버전을 확인하고 작업을 시작합니다. 이 시점에서 작업 복사본은 저장소와 완전히 동기화됩니다. Jerry 는 작업을 매우 효율적으로 완료하고 변경 사항을 저장소에 커밋합니다.
이제 Tom의 작업 사본이 오래되었습니다. 업데이트 작업은 저장소에서 Jerry의 최신 변경 사항을 가져오고 Tom의 작업 복사본을 업데이트 합니다.
변경 수행
체크 아웃 후에는 다양한 작업을 수행하여 변경을 수행 할 수 있습니다. 편집은 가장 일반적인 작업입니다. 기존 파일을 편집하여 파일에서 내용을 추가 / 제거 할 수 있습니다.
파일 / 디렉토리를 추가 할 수 있습니다. 그러나 즉시 이러한 파일 / 디렉토리는 저장소의 일부가되지 않고 대신 보류중인 변경 목록에 추가되고 커밋 작업 후에 저장소의 일부가됩니다.
마찬가지로 파일 / 디렉토리를 삭제할 수 있습니다. 삭제 작업은 작업 복사본에서 파일을 즉시 삭제하지만 파일의 실제 삭제는 보류중인 변경 목록에 추가되고 커밋 작업 후에 저장소에 변경 사항이 적용됩니다.
'이름 바꾸기'작업은 파일 / 디렉토리의 이름을 변경합니다. '이동'작업은 파일 / 디렉토리를 저장소 트리의 한 위치에서 다른 위치로 이동하는 데 사용됩니다.
변경 사항 검토
작업 복사본을 체크 아웃하거나 작업 복사본을 업데이트하면 작업 복사본이 저장소와 완전히 동기화됩니다. 그러나 작업 복사본을 변경하면 저장소보다 최신 버전이됩니다. 그리고 '커밋'작업 전에 변경 사항을 검토하는 것이 좋습니다.
'상태'작업에는 작업 복사본에 대한 수정 사항이 나열됩니다. 앞서 언급했듯이 작업 복사본을 변경할 때마다 이러한 모든 변경 사항은 보류중인 변경 목록의 일부가됩니다. 그리고 '상태'작업은 보류중인 변경 목록을 보는 데 사용됩니다.
'상태'작업은 변경 사항 목록 만 제공하고 세부 정보는 제공하지 않습니다. diff 작업을 사용 하여 작업 복사본에 적용된 수정 사항의 세부 정보를 볼 수 있습니다 .
실수 수정
작업 복사본을 변경했지만 이제는 이러한 변경 사항을 버리려고합니다. 이 상황에서는 '되돌리기'작업이 도움이됩니다.
되돌리기 작업은 작업 복사본에 적용된 수정 사항을 되돌립니다. 하나 이상의 파일 / 디렉토리를 되돌릴 수 있습니다. 또한 전체 작업 복사본을 되돌릴 수도 있습니다. 이 경우 '되돌리기'작업은 보류중인 변경 목록을 삭제하고 작업 복사본을 원래 상태로 되돌립니다.
충돌 해결 :
병합시 충돌이 발생할 수 있습니다. '병합'작업은 안전하게 할 수있는 모든 것을 자동으로 처리합니다. 다른 모든 것은 갈등으로 간주됩니다. 예를 들어, "hello.c" 파일은 분기에서 수정되고 다른 분기에서 삭제되었습니다. 이러한 상황에서는 사람이 결정을 내릴 필요가 있습니다. '해결'작업은 사용자가 문제를 파악하고 VCS에 충돌 처리 방법을 알리는 데 사용됩니다.
변경 사항 커밋
'커밋'작업은 작업 복사본의 변경 사항을 저장소에 적용하는 데 사용됩니다. 이 작업은 저장소를 수정하고 다른 개발자는 작업 복사본을 업데이트하여 이러한 변경 사항을 볼 수 있습니다.
커밋하기 전에 보류중인 변경 목록에 파일 / 디렉토리를 추가해야합니다. 변경 사항이 커밋되기를 기다리는 곳입니다. 커밋을 사용하면 일반적으로 누군가가 변경 한 이유를 설명하는 로그 메시지를 제공합니다. 이 로그 메시지는 저장소 기록의 일부가됩니다. 커밋은 원자 적 작업으로 전체 커밋이 성공하거나 롤백됩니다. 사용자는 반쯤 완료된 커밋을 볼 수 없습니다.