연습: 명령줄에서 Team Foundation 버전 제어 사용
업데이트: 2007년 11월
이 연습에서는 Visual Studio Team System Team Foundation Server 명령줄 클라이언트인 tf.exe를 사용하여 버전 제어 작업을 수행하는 방법을 보여 줍니다.
이 연습에서는 다음 작업을 수행합니다.
버전 제어 서버에 있는 파일의 개인 복사본을 저장할 작업 영역을 만든 다음 서버에서 소스의 복사본 가져오기
파일을 서버에 추가하고 서버에서 파일을 체크 아웃한 다음 작업 영역에서 편집
보류 중인 변경 내용 체크 인 및 변경 집합 만들기
특정 변경 집합이 만들어진 시점의 소스를 서버에서 검색하여 작업 영역을 특정 시점으로 되돌리기
사전 요구 사항
Team Foundation Server에 대한 연결을 설정할 수 있고 적절한 권한이 있는 경우 명령 프롬프트, 배치 파일 또는 스크립트 파일에서 버전 제어 명령을 수행할 수 있습니다. 이렇게 하려면 Visual Studio 2008 명령 프롬프트 유틸리티를 사용하거나 다음 예제와 같이 vsvars32를 사용하여 현재 명령 프롬프트에서 몇 가지 환경 변수를 설정해야 합니다. 팀 프로젝트에 참가하는 방법에 대한 자세한 내용은 연습: 팀 프로젝트 참가를 참조하십시오.
Visual Studio 2008 명령 프롬프트를 열려면
- 시작, 모든 프로그램을 클릭하고 Microsoft Visual Studio 2008, Visual Studio Tools를 차례로 가리킨 다음 Visual Studio 2008 명령 프롬프트를 클릭합니다.
또는 Visual Studio 설치 경로(일반적으로 DriveLetter:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools)에서 vsvars32를 실행할 수도 있습니다.
필요한 권한
이 연습을 완료하려면 CreateWorkspace, Checkin 및 PendChange 권한이 있어야 합니다.
작업 영역 만들기
버전 제어 작업을 시작하려면 작업 영역을 설정해야 합니다. 작업 영역은 서버에 있는 파일 및 폴더의 로컬 복사본입니다. 버전 제어 항목에 대해 추가, 편집, 삭제, 이동, 이름 바꾸기 등의 변경 작업을 수행하면 변경 내용이 작업 영역에 격리되어 안전하게 변경 내용을 빌드하고 테스트할 수 있습니다. 체크 인을 수행하면 이러한 변경 내용이 서버로 커밋되어 작업 영역 외부에서도 이 변경 내용을 사용할 수 있습니다.
작업 영역은 일련의 매핑으로 구성됩니다. 각 매핑은 서버의 폴더와 디스크의 로컬 폴더를 연결합니다. 서버에서 파일의 로컬 복사본을 가져오려면 새 작업 영역을 만들고 작업 영역의 매핑을 지정합니다. 그런 다음 get 명령을 사용하여 작업 영역을 소스 파일로 채웁니다.
컴퓨터에서 Team Foundation 버전 제어 명령을 수행하려면 작업 영역을 만들어야 합니다. 작업 영역에 작업의 결과가 유지되므로 사용자가 작업 결과를 체크 인하여 서버에 커밋할 수 있습니다.
버전 제어 파일을 관리할 작업 영역을 만들려면
시작, 모든 프로그램을 클릭하고 Microsoft Visual Studio 2008, Visual Studio Tools를 차례로 가리킨 다음 Visual Studio 2008 명령 프롬프트를 클릭합니다.
mkdir c:\projects를 입력합니다.
cd c:\projects를 입력합니다.
tf workspace /new /s:servername을 입력합니다. 여기서 servername은 Team Foundation Server의 이름입니다. 예를 들어 tf workspace /new /s:/team1server를 입력한 다음 Enter 키를 누릅니다.
참고: 서버에 처음 연결하는 경우 전체 URL을 지정해야 합니다. 예를 들어 "http://team1server:8080"과 같이 지정합니다.
작업 영역 만들기 대화 상자에서 새 작업 영역의 이름을 "cmdwalkthrough"와 같이 입력합니다.
소스 제어 폴더 열 아래의 서버에서 팀 프로젝트를 선택합니다.
줄임표(…)를 클릭하여 서버 폴더를 찾아볼 수 있습니다.
선택한 폴더가 로컬 폴더 열 아래에 나열된 c:\projects 폴더에 매핑됩니다.
확인을 클릭합니다.
명령 프롬프트에서 tf workspaces를 입력하면 현재 컴퓨터에서 만든 작업 영역을 모두 볼 수 있습니다. 자세한 내용은 Workspaces 명령을 참조하십시오.
작업 영역을 만들 때 해당 작업 영역에 대한 작업 영역 정의가 시스템에 유지됩니다. Team Foundation Server에서는 작업 영역 정의를 저장하고, 작업 영역의 모든 파일 및 각각의 버전 및 현재 상태를 나열합니다. 서버에 작업 영역 정의가 저장되므로 올바른 권한이 있는 모든 사용자는 보류 중인 변경 내용을 제외한 작업 환경을 자신의 컴퓨터에 그대로 복제할 수 있습니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 Get 명령을 참조하십시오.
파일 추가 및 편집
작업 영역을 만든 후에는 버전 제어에 추가할 파일을 지정할 수 있습니다. 그런 다음 해당 파일을 편집하고 변경 내용을 체크 인할 수 있습니다.
버전 제어에 추가할 파일을 준비하려면
명령 프롬프트에 notepad 314.cs를 입력하고 Enter 키를 누릅니다.
메모장이 열리면서 새 파일을 만드시겠습니까?라는 메시지가 나타나면 예를 클릭합니다.
메모장에서 using System.IO;를 입력하고 변경 내용을 저장한 다음 메모장을 닫습니다.
명령 프롬프트에 tf add 314.cs를 입력하여 파일을 보류 중인 변경 내용 목록에 추가합니다.
tf status를 입력하여 314.cs가 보류 목록에 추가되었음을 확인합니다.
이 명령을 사용하여 현재 작업 영역에 있는 보류 중인 변경 내용을 모두 표시할 수 있습니다.
Team Foundation에서는 한 단계만으로 버전 제어 서버에 항목을 추가할 수 없습니다. 먼저, 파일을 작업 영역의 보류 중인 변경 내용 집합에 추가합니다. 그런 다음 보류 중인 변경 내용을 모두 하나의 단위로 버전 제어 서버에 제출합니다.
Team Foundation에서는 사용자가 코드를 서버에 체크 인하기 전에 컨텍스트에서 코드를 테스트하고 컴파일할 수 있도록 이러한 2단계 파일 추가 프로세스를 사용합니다. 이러한 프로세스를 사용하는 Team Foundation에서는 변경 내용 중 하나라도 서버에 커밋할 수 없으면 전체 변경 내용이 커밋되지 않습니다.
보류 중인 변경 내용 체크 인
보류 중인 변경 내용 집합을 체크 인하면 Team Foundation에서 변경 집합을 만듭니다.
작업 영역의 보류 중인 변경 내용을 모두 체크 인하려면
명령 프롬프트에 tf checkin을 입력합니다.
체크 인 대화 상자의 설명 상자에 변경 내용의 특징을 설명하는 내용을 입력한 다음 체크 인을 클릭합니다.
변경 집합은 Team Foundation에서 단일 체크 인 작업에 관련된 모든 요소를 한데 묶는 논리적 컨테이너입니다. 대부분의 체크 인은 여기에 제공된 단순한 예제보다 복잡합니다. 또한 체크 인 과정에서 여러 파일 및 폴더가 변경되는 경우가 많습니다. 따라서 변경 집합은 작업 영역에 한 단위로 가져올 수 있는 전체 작업 패키지를 나타냅니다.
변경 집합은 다음과 같은 요소로 구성됩니다.
추가, 이름 바꾸기, 편집, 삭제 및 이동과 같은 소스 파일 및 폴더 수정 내용
버그와 같은 관련 작업 항목
변경 집합 번호, 작성자, 날짜/시간 등의 시스템 메타데이터
체크 인 메모 및 설명
다음은 314.cs 파일의 두 번째 버전을 만들어 여러 버전의 파일을 버전 제어 서버에 저장하는 방법을 검토합니다.
버전 제어에 있는 파일의 새 버전을 만들려면
명령 프롬프트에 tf checkout 314.cs를 입력합니다.
notepad 314.cs를 입력합니다.
메모장에서 using System.IO; 밑에 새 행을 추가한 다음 using System.Windows;를 입력합니다.
참고: 이 단계에서는 의도적으로 오류를 발생시킵니다. 이후 단계에서 오류가 없는 버전의 파일로 롤백하는 방법을 살펴 보게 됩니다.
변경 내용을 저장하고 메모장을 닫습니다.
명령 프롬프트에 tf checkin을 입력합니다.
체크 인 대화 상자의 설명 상자에 설명을 입력하고 체크 인을 클릭합니다.
314.cs 파일의 보류 중인 변경 내용을 새로운 변경 집합으로 서버에 체크 인합니다. 이렇게 하면 버전 제어 서버에 314.cs의 버전 2도 만들어집니다.
이전 버전으로 파일 반환
소프트웨어 개발자는 작업 환경을 2개월 전으로 되돌리고 특정 빌드를 대상으로 하는 수정 프로그램을 작성하라는 요청을 받는 경우가 많습니다. 변경 집합 번호가 있으면 시간별로 체크 인된 특정 변경 집합을 식별할 수 있습니다.
변경 집합 번호는 관련 파일 및 폴더 수정 버전 집합에 대한 고유 식별자입니다. 또한 변경 집합 번호는 특정 날짜와 시간에 해당하는 전체 버전 제어 서버에 대한 버전 번호입니다.
따라서 문제가 있는 코드 줄인 using System.Windows;를 체크 인한 시점의 서버 상태로 작업 영역을 정확하게 되돌릴 수 있습니다.
작업 영역을 변경 집합에 동기화하려면
명령 프롬프트에 **tf get /version:C<##>**을 입력합니다. 여기서 <##>은 314.cs의 원래 버전이 포함된 변경 집합의 번호입니다.
참고: 314.cs 파일에 history 명령을 사용하면 올바른 변경 집합을 가져올 수 있습니다. 예를 들어 명령줄에 tf history 314.cs를 입력합니다.
Get 명령은 매핑된 모든 파일 및 하위 폴더의 작업 복사본을 서버에서 로컬 작업 영역으로 가져옵니다. 이때 가져오는 파일은 변경 집합 <##>이 만들어진 시점의 상태입니다. 이제 메모장에서 314.cs를 열면 "using System.IO;"라는 코드 한 줄만 나타납니다.