TFS를 제대로 사용하기 위해서는 먼저 작업 단위인 작업영역(Workspace)에 대해 알아야 한다.


작업영역소스제어폴더(Source Control Folder)[각주:1]와 사용자의 디스크에 있는 로컬폴더(Local Folder)[각주:2]에 대한 정보를 중심으로 구성되어 있다. 소스제어폴더로컬폴더를 연결해주는 과정을 매핑(Mapping)이라고 하는데 이 매핑은 1:1 밖에 성사되지 않는다. 동일한 URL 주소를 여러 로컬폴더에, 또는 그 반대의 짓을 하려고 하면 툴에서 가차없이 에러를 뱉어낸다.


작업영역의 현재 설정은 팀 탐색기의 Solutions에서 확인할 수 있다.


매핑이 1:1이라는 특성 때문에 SVN에 익숙했던 사용자는 종종 새로운 실수(?)를 저지른다. 여러 작업이 섞이지 않도록 로컬폴더를 복사 또는 checkout을 통해 분리해서 사용하는 것은 SVN에서는 일반적이지만, TFS 사용자는 함부로 로컬폴더의 복사본을 만들면 곤란해진다. SVN은 캐싱을 비롯한 여러 정보(버전 컨트롤 정보)를 작업 디렉토리리의 .svn 폴더에 담아서 관리하고[각주:3] TFS는 이런 정보들이 이 파일 저 파일에 흩어져있다.[각주:4] 추가로 중요한 것은 다음 이미지와 같은 설정이 있다고 할 때,


소스제어폴더의 TFSVN과 로컬폴더의 TFS 폴더(하위 폴더까지)만이 연결된 것처럼 보이지만 사실은 바로 위의 상위 폴더(Source)까지 정보를 갖고 있다. 다시 말해서 Source\TFS 폴더를 복사하여 Source\TFS2 를 만들면 Source\TFS\First.sln 파일을 열었을 때, 다음 이미지와 같은 모양이 되어버린다.


TFS에서는 별 생각 없이 로컬폴더를 복사하여 둘로 만들겠다고 복사하면 뒷처리가 복잡해질 수 있다.


이제 복사로 만들어진 Source\First2\First.sln 파일은, 매핑 정보에는 로컬폴더가 Source\First 로 되어 있는데 물리적인 위치가 변경된 것처럼 동작하여 실제 솔루션 파일을 열 때 아래와 같은 경고창을 띄워준다.

새로 연결을 시도하냐고 물어본 다음 뭘 하든 아래와 같이 거북한 에러를 뱉어낸다.




그렇다고 그 상위 폴더인 Source를 복사해서 Source2\TFS를 만들면, 위 이미지에 보이는 OOJJRS-PC라는 작업영역의 매핑 정보는 Source\TFS가 설정된 상태로 실제 경로가 Source2\TFS가 되어버려 프로젝트를 열 때 마찬가지로 위와 같은 에러들과 마주친다.

따라서 병렬 작업 등을 이유로 로컬폴더를 하나 더 생성하고 싶다면, 다음처럼 작업영역 관리창을 통해 새 작업영역을 생성해야 한다.


Add 버튼을 통해 작업영역을 추가할 수 있다.



현재 사용 중인 작업영역에서 방금 추가한 항목으로 변경하면, 새로운 매핑을 설정할 수 있다.


이제 OOJJRS-PC_1 이라는 작업영역은 별도의 매핑을 구성할 수 있게 되어, SVN에서 그랬던 것처럼 별도의 로컬폴더를 가질 수 있게 된다.

  1. Visual Studio 한글판 번역 단어. 소스의 URL 주소를 가리킨다. [본문으로]
  2. SVN에서는 보통 작업 디렉토리(Working Directory)로 부른다. [본문으로]
  3. Tortoise SVN Client의 이야기이며 1.7 버전을 기준으로 이전에는 각 폴더마다 .svn 폴더가 있고 1.7 버전 이후에는 작업 디렉토리의 최상위에만 .svn 폴더가 있다. [본문으로]
  4. 솔루션 파일(.sln), 프로젝트 파일(.vcxproj), .vssscc, .vspscc 등 직접 찾아보려면 귀찮을 정도로 잘게 나뉘어져 있다. [본문으로]
Posted by OOJJRS
,