VSS 업그레이드 도구가 데이터를 변환하는 방식 이해

Visual SourceSafe 업그레이드 도구는 Visual SourceSafe에서 Team Foundation Server(TFS)로 코드베이스를 일회성, 단방향 업그레이드하는 편리한 방법입니다. Visual SourceSafe 액세스를 중지하고 TFS에서 유지 관리를 시작할 준비가 되었을 때만 이 도구를 사용하여 데이터를 업그레이드해야 합니다.

TFS 및 Visual SourceSafe에는 상당한 기능 차이가 있습니다. 결과적으로 Visual SourceSafe 업그레이드 도구는 업그레이드하는 동안 특정 종류의 데이터를 수정합니다.

항목 내용

  • 변경 집합을 만드는 방법

  • 공유되고 고정된 항목을 업그레이드하는 방법

  • 기록 데이터를 이식하는 방법

    • 사용자 이름 및 타임스탬프에 대한 데이터의 이식 방법

    • 특정 이벤트 형식의 변환 방법

  • 버전 제어 바인딩을 이식하는 방법

변경 집합을 만드는 방법

TFS 버전 제어는 사용자가 변경 내용 집합을 체크 인할 때 여러 파일의 변경 내용을 한 단위로 그룹화합니다. 이 하나의 단위를 변경 집합이라고 합니다.

Visual SourceSafe에는 변경 집합에 해당하는 기능이 없습니다. 그러나 다음 조건이 충족되면 변환 프로세스 도중 각 변경 내용 집합이 변경 집합으로 그룹화됩니다.

  • 변경 내용이 서로 충돌하지 않습니다. 예를 들어 두 개의 작업이 동일한 파일이나 폴더에 영향을 주면 안 됩니다.

  • 서로 겨우 몇 분 차이로 변경되었습니다.

  • 같은 사용자가 변경 내용을 체크 인했습니다.

  • 변경 내용의 체크 인 설명이 같습니다.

공유되고 고정된 항목을 업그레이드하는 방법

Visual SourceSafe에서 여러 폴더 간에 파일을 공유할 수 있습니다. 공유 폴더의 변경 내용이 파일을 공유하는 폴더 간에 복제됩니다. TFS 버전 제어에는 이에 해당하는 기능이 없습니다. 업그레이드 도중 Visual SourceSafe 프로젝트의 공유 파일은 TFS 버전 제어용 서버에 있는 항목의 추가 독립 복사본을 만들어 업그레이드됩니다.

TFS 버전 제어는 Visual SourceSafe의 고정 기능에 해당하는 기능이 없습니다. 업그레이드 도중 Visual SourceSafe 프로젝트의 고정 항목은 TFS 버전 제어용 서버의 레이블 항목으로 변환됩니다. 자세한 내용은 다음 단원을 참조하십시오.

기록 데이터를 이식하는 방법

Visual SourceSafe 데이터베이스에 있는 항목 기록의 각 이벤트는 Team Foundation Server용 서버에 변경 집합으로 전송됩니다. 업그레이드가 완료되면 기록 창에 이 데이터가 표시됩니다. 자세한 내용은 항목 기록 가져오기을 참조하십시오.

업그레이드 도중 데이터가 일부 변경됩니다.

사용자 이름 및 타임스탬프에 대한 데이터의 이식 방법

Visual SourceSafe 데이터베이스에 있는 항목의 기록에 있는 각 항목이 Team Foundation Server의 변경 집합으로 업그레이드될 경우 변경되는 내용은 다음과 같습니다.

  • 변경 집합의 타임스탬프가 항목이 업그레이드된 날짜 및 시간으로 설정됩니다.

  • 원래의 타임스탬프가 변경 집합의 설명 필드에 저장됩니다.

  • 사용자 이름은 사용자 매핑 프로세스 결과에 따라 변경 집합의 사용자 필드나 설명 필드에 저장됩니다.

    참고

    기록 데이터에 사용자 이름을 할당하는 방법을 제어하려는 경우 VssUpgrade를 사용해야 합니다.사용자 이름을 업그레이드하는 방법 지정을 참조하십시오.

특정 이벤트 형식의 변환 방법

편집, 이름 바꾸기 및 삭제와 같은 이벤트는 Visual SourceSafe 데이터베이스에서 Team Foundation Server용 서버의 변경 집합으로 바로 업그레이드됩니다. 그러나 업그레이드 도구는 다음 표와 같이 예기치 않은 방식으로 일부 이벤트를 변환합니다.

 Visual SourceSafe 이벤트

TFS 버전 제어로 업그레이드하는 방법

파일 또는 폴더 추가

이 변경 집합은 업그레이드된 각 파일 및 폴더의 기록에서 첫째 이벤트입니다. Visual SourceSafe에서와 달리 포함된 각각의 자식 항목의 부모에 대해서는 이벤트가 기록되지 않습니다.

분기

공유는 Visual SourceSafe에서 분기의 사전 조건이지만 TFS 버전 제어는 공유를 지원하지 않습니다. 따라서 분기된 파일의 업그레이드는 대상 폴더에 파일의 복사본을 만듭니다.

공유될 때 있었던 파일 버전을 복사해 대상 폴더에 복사본을 저장하여 Visual SourceSafe 데이터베이스의 공유 파일이 TFS 버전 제어로 업그레이드됩니다. 이후부터 분기 이벤트가 발생할 때까지 두 개의 파일 복사본에 각 변경 집합이 복제됩니다.

레이블

암시적으로 레이블이 지정된 항목: Visual SourceSafe에서 폴더에 레이블을 지정하면 이 폴더를 포함하는 항목의 레이블이 암시적으로 지정됩니다. 업그레이드 프로세스가 명시적으로 팀 프로젝트의 모든 업그레이드된 항목에 레이블을 지정합니다.

명시적으로 레이블이 지정된 파일: Visual SourceSafe에서 개별 파일의 레이블을 명시적으로 지정하면 파일의 새 버전이 생성됩니다. 업그레이드 프로세스는 TFS 버전 제어에서 적용 가능한 버전에 레이블을 이식하지만 새 버전을 만들지는 않습니다.

참고

Visual SourceSafe 데이터베이스에 여러 파일에 적용되는 여러 레이블이 있을 경우 업그레이드 프로세스가 지연될 수 있습니다.이 데이터를 제외하려는 경우 VssUpgrade를 사용하여 레이블을 무시하도록 구성해야 합니다.<Label migrate="false" />를 참조하십시오.

폴더 이동

폴더 이동 이벤트는 TFS 버전 제어에 폴더의 새 버전을 만듭니다.

VssUpgrade를 사용하는 경우 원본 폴더와 대상 폴더를 동시에 업그레이드하지 않으면 이동한 폴더에 있는 항목의 전체 기록이 업그레이드되지 않습니다. 분석 기능으로 발견된 문제 검토 및 해결을 참조하십시오.

참고

폴더 이동 이벤트를 복원 이벤트와 함께 사용하면 기록 데이터가 올바르게 업그레이드되지 않을 수도 있습니다.

복원

복원 이벤트 전에 발생하는 기록 데이터는 업그레이드되지 않습니다.

고정 및 고정 해제

TFS 버전에서는 고정이 지원되지 않습니다. 업그레이드 도구는 두 개의 레이블을 만들어 고정된 파일을 업그레이드합니다.

PINNED_LATEST 레이블은 고정된 파일의 고정된 버전 및 고정 해제된 파일의 가장 최근 버전에 적용됩니다. PINNED 레이블은 고정된 파일의 고정된 버전에만 적용됩니다. 업그레이드 후에 PINNED_LATEST 레이블은 Visual SourceSafe의 최신 버전 가져오기 기능을 사용할 때와 동일한 파일을 가져옵니다. 그러나 파일을 고정한 후 체크 인 이외에 파일을 삭제하거나 이름을 바꾸는 등의 이벤트가 발생할 경우 PINNED_LATEST 레이블이 다른 파일을 반환할 수 있다는 한 가지 예외가 있습니다.

공유

TFS 버전에서는 공유가 지원되지 않습니다. 공유될 때 있었던 파일 버전을 복사해 대상 폴더에 복사본을 저장하여 Visual SourceSafe 데이터베이스의 공유 파일이 TFS 버전 제어로 업그레이드됩니다. 이후부터 두 개의 파일 복사본에 각 변경 집합이 복제됩니다.

파일 또는 폴더 삭제 취소

파일이나 폴더의 삭제 취소 이벤트를 업그레이드하는 동안 도구가 이벤트를 재생하여 TFS 버전 제어에서 파일 및 폴더의 새 버전을 만듭니다.

업그레이드 도구는 파일 또는 폴더 이름, 삭제 취소된 날짜와 시간 및 사용자 이름이 포함된 변경 집합을 만듭니다.

버전 제어 바인딩을 이식하는 방법

업그레이드 도구는 각 솔루션에 대한 버전 제어 바인딩을 이식합니다.

다음 단계

Visual SourceSafe에서 업그레이드할 준비