다음을 통해 공유


작업 영역 최적화

팀의 코드베이스가 크고 복잡합니까? 성능을 향상하고 네트워크 트래픽을 낮추며 개발 컴퓨터에 필요한 디스크 공간을 줄이기 위해 작업 영역에 필요한 파일만 포함하고 싶습니까?

  • 폴더 이름 최적화

  • 명시적, 암시적, 숨겨진 및 비재귀적 폴더 매핑을 사용하여 작업 영역 최적화

  • 작업 영역을 사용하여 다른 분기 사이에서 작업을 격리 및 관리합니다.

폴더 이름 최적화

아직 분기를 사용하지 않는 경우 서버에서 Main이라는 하위 폴더에 모든 코드를 입력해야 합니다(예: $/TFVCTeamProject/Main/). 그러면 분기가 코드베이스를 관리할 수 있을 만큼 팀의 규모가 충분히 확장될 때까지 기다립니다. 개발 컴퓨터에서 C:\Users\YourName\Source\Workspaces\TFVCTeamProject\Main\SolutionName\과 같이 프로젝트 구조와 일치하는 짧고 이해하기 쉬운 폴더 경로를 사용해야 합니다.

효과적인 폴더 이름에 대한 몇 가지 추가 팁:

  • 모든 폴더, 하위 폴더 및 파일 이름을 짧게 유지하여 작업을 단순화하고 일부 유형의 코드 프로젝트에서 발생할 수 있는 긴 경로 문제가 발생하지 않도록 합니다.

  • 명령줄 작업을 좀 더 쉽게 실행하려면 공백을 사용하지 마십시오.

명시적, 암시적, 숨겨진 및 비재귀적 폴더 매핑을 사용하여 작업 영역 최적화

코드베이스가 크면 작업 영역 폴더 매핑을 최적화하여 시간, 네트워크 대역폭 및 로컬 디스크 공간 등의 낭비를 방지합니다.

폴더를 매핑할 때 코드 트리에서 로컬 빌드를 만드는 데 필요한 파일을 모두 가져오기에 충분한 상위 수준에 있지만 파일을 불필요하게 많이 가져오지 않기에 충분한 하위 수준에 있는 폴더를 선택해야 합니다. 명시적, 암시적, 비재귀적, 숨겨진 폴더 매핑 등 몇 가지 도구를 사용하여 사용 가능한 작업 영역을 좀더 간단하고 빠르게 만들 수도 있습니다.

아래에서 가상의 개발자 Raisa의 작업 영역을 보면 Raisa가 $/SiteApp/을 c:\code\SiteApp\에 간단하게 매핑하지 않은 이유가 궁금할 수 있습니다. 이와 같이 간단한 작업 영역은 $/SiteApp/Main/에 필요한 모든 폴더를 암시적으로 매핑합니다.

이 방식의 주요 문제는 필요하지 않는 파일이 많이 제공될 수도 있으므로 시간 및 리소스가 낭비될 수 있다는 것입니다. 따라서 Raisa는 맞춤형 폴더 매핑을 만듭니다.

Folders mapped by an optimized workspaceFolders mapped to to optimize a workspace

Step 1

Raisa는 사용자 지정된 빌드 프로세스를 개발하지 않으므로 $/SiteApp/BuildProcessTemplates가 필요하지 않습니다. 시간이 지남에 따라 그녀는 코드베이스가 증가할 것이라고 예상하며, 또한 $/SiteApp/Main/에 추가된 모든 새 비트 코드를 자동으로 다운로드하기를 원하지 않습니다. Raisa가 서버에서 최신 파일을 가져올 때 다른 폴더에서 작업하는 팀이 해당 파일을 변경하면 Raisa는 자신에게 필요하지 않은 파일이 업데이트될 때까지 오래 기다려야 할 수 있습니다.

코드를 개발하려면 Raisa에게는 FabrikamFiber 솔루션을 구성하는 모든 코드 프로젝트가 필요합니다. 그녀는 명시적으로 각 코드 프로젝트를 포함하기보다(예를 들어, $/SiteApp/Main/FabrikamFiber/FabrikamFiber.DAL) $/SiteApp/Main/FabrikamFiber/을 매핑하여 필요한 코드 프로젝트에 있는 모든 하위 폴더를 암시적으로 매핑합니다.

Step 2

Raisa는 $/SiteApp/Main/FabrikamFiber/3DModels 또는 $/SiteApp/Main/FabrikamFiber/Docs에 있는 파일이 필요하지 않으며 Step 1에 의해 암시적으로 매핑되기 때문에 자신의 작업 영역에서 이러한 폴더를 제외하기 위해 두 개의 숨김 매핑을 사용합니다.

Step 3

Raisa 및 팀의 다른 사람들은 기본 라이브러리의 집합을 유지하고 때때로 보강합니다. 그녀는 폴더에 거의 모든 현재 라이브러리를 필요로 하고 라이브러리에 팀을 추가할 필요가 있을 것이라고 예상하므로 $/SiteApp/Main/libraries/Common을 매핑합니다.

Step 4

Raisa는 큰 폴더 $/SiteApp/Main/libraries/Common/LibraryC의 작은 세그먼트만 필요하기 때문에 숨김으로 매핑한 다음 자신이 필요한 하위 폴더만 명시적으로 매핑합니다$/SiteApp/Main/libraries/Common/LibraryC/Sub-Library1.

Step 5

Raisa는 LibraryD 바로 안에 있는 파일 중 일부가 필요하지만 크기가 큰 해당 하위 폴더의 내용은 필요가 없기 때문에 비재귀적 매핑을 $/SiteApp/Main/libraries/Specialized/LibraryD/* 폴더에 적용합니다.

작업 영역을 사용하여 다른 분기 사이에서 작업을 격리 및 관리합니다.

회사가 코드베이스에서 위험 격리 분기를 사용하는 경우 작업 분기마다 별도의 작업 영역을 만듭니다.

예를 들어, Fabrikam Fiber에서 코드베이스와 직원 수가 증가했습니다. 여러 팀 간의 위험을 분리하기 위해 코드베이스를 분기했습니다. Raisa는 자신의 소규모 팀 내에서 작업을 계속하지만 이제 그녀는 지금 그녀가 여러 분기에서 수행하고 있는 작업을 관리하기 위해 몇 가지 작업 영역을 사용합니다.

Branches where Julia does her work

Step 1

기능 개발 Extranet 분기에서 그녀는 고객 지향 웹 사이트 개발에 참여하고 작업 수행을 위한 기본 작업 영역을 수정합니다.

Step 2

통합 및 안정화 그녀는 그녀가 통합하는 동안 코드를 안전화하기 위해 다른 개발자와 테스터와 공동 작업하는 Test 및 Dev 분기에서 작업을 수행할 수 있도록 두 개의 새 작업 영역을 만듭니다.

Raisa는 세 가지 작업 영역에서 자신의 작업을 관리합니다. 각 작업 영역은 그녀의 개발 컴퓨터의 폴더로 서버에 분기의 폴더를 매핑합니다.

Mappings from server folders to client folders

참고

분기 또는 일시 중지(또는 보류)는 동일한 코드베이스에 대해서 다른 작업 활동을 분리하는 기본 방법입니다.하지만 두 가지 방법이 해당 요구를 충족시키지 못할 경우, 두 개 이상의 작업 영역에서 동일한 서버 폴더를 매핑할 수 있습니다.대부분의 경우 이를 수행할 필요가 없습니다.2개 이상의 작업 영역에서 동일한 서버 폴더를 매핑하는 경우 개별적으로 보류 중인 변경 내용이 각 작업 영역에 저장된 동일한 파일에 존재합니다.