작업 영역 최적화

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

팀에 크고 복잡한 코드베이스가 있는 경우 필요한 파일만 포함하도록 작업 영역을 최적화할 수 있습니다. 작업 영역을 최적화하면 성능이 향상되고 네트워크 트래픽이 감소하며 개발 머신에 필요한 디스크 공간이 줄어듭니다.

참고 항목

분기 및 일시 중단 또는 선반은 동일한 코드베이스에 대해 다양한 작업 작업을 격리하는 기본 방법입니다. 그러나 이러한 방법 중 어느 것도 요구 사항을 충족하지 못하는 경우 둘 이상의 작업 영역에 동일한 서버 폴더를 매핑할 수 있습니다. 대부분의 경우 이 작업을 수행할 필요가 없습니다.

둘 이상의 작업 영역에 동일한 서버 폴더를 매핑하는 경우 각 작업 영역에 저장된 동일한 파일에 대해 별도의 보류 중인 변경 내용이 있을 수 있습니다.

폴더 이름 최적화

분기를 아직 사용하지 않는 경우 서버의 Main이라는 하위 폴더에 모든 코드를 배치합니다(예: $/TFVCTeamProject/Main/). 그러면 팀이 코드베이스를 관리하기 위해 분기가 필요할 정도로 커지면 준비가 됩니다. 개발 컴퓨터에서 C:\Users\YourName\Source\Workspaces\TFVCTeamProject\Main\<SolutionName>과 같은 프로젝트 구조와 일치하는 짧고 이해할 수 있는 폴더 경로를 사용해야 합니다.

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

  • 작업을 간소화하고 일부 유형의 코드 프로젝트에서 발생할 수 있는 잠재적인 긴 경로 문제를 방지하려면 모든 폴더, 하위 폴더 및 파일 이름을 짧게 유지합니다.

  • 명령줄 작업을 더 쉽게 수행할 수 있도록 파일 및 폴더 이름에 공백을 사용하지 마세요.

작업 영역 최적화

팀의 코드베이스가 큰 경우 작업 영역 폴더 매핑을 최적화하여 시간, 네트워크 대역폭 및 로컬 디스크 공간을 낭비하지 않도록 할 수 있습니다. 명시적, 암시적, 은폐된 폴더 매핑 및 비귀적 폴더 매핑을 사용하여 사용 가능한 작업 영역을 보다 간단하고 빠르게 만들 수 있습니다.

폴더를 작업 영역에 매핑할 때 로컬 빌드를 만드는 데 필요한 모든 파일을 가져오는 코드 트리에서 충분히 높은 폴더를 선택해야 하지만 필요한 것보다 더 많은 파일을 가져오지 않을 정도로 낮아야 합니다. 다음 예제 작업 영역에서는 단순히 $/SiteApp/를 c:\code\SiteApp\에 매핑수 있습니다. 이와 같은 간단한 작업 영역은 $/SiteApp/Main/의 모든 폴더를 필요한 파일을 포함하여 작업 영역에 암시적으로 매핑합니다.

이 방법의 기본 문제는 필요하지 않은 많은 파일을 제공하므로 시간과 리소스가 낭비된다는 것입니다. 예를 들어 사용자 지정된 빌드 프로세스를 개발하지 않으면 $/SiteApp/BuildProcessTemplates/가 필요하지 않습니다.

시간이 지남에 따라 팀 코드베이스가 증가할 것으로 예상하며 $/SiteApp/Main/에 추가된 모든 새 코드 비트를 자동으로 다운로드하지 않으려는 것입니다. 다른 폴더에서 작업하는 팀이 해당 파일을 변경하면 서버에서 최신 파일을 가져올 때 필요하지 않은 파일에 대한 업데이트를 기다리는 데 긴 지연이 발생할 수 있습니다.

작업 영역을 최적화하여 보다 맞춤형 폴더 매핑을 만들 수 있습니다.

  1. Visual Studio 소스 제어 탐색기에서 작업 영역 옆에 있는 드롭다운 화살표를 선택하고 작업 영역을 선택합니다.

  2. 작업 영역 관리 대화 상자에서 최적화할 작업 영역을 선택한 다음 편집을 선택합니다.

  3. 작업 영역 편집 대화 상자에서 작업 영역 매핑을 편집합니다.

    작업 영역 편집 대화 상자에서 작업 영역 편집을 보여 주는 스크린샷

  4. 예를 들어 코드를 개발하려면 DinnerNow 프로젝트의 코드 프로젝트가 필요합니다. $/Fabrikam TFVC/DinnerNow/feature3와 같이 솔루션에 각 코드 프로젝트를 명시적으로 포함하는 대신 $/Fabrikam TFVC/DinnerNow를 매핑하여 필요한 코드 프로젝트가 포함된 모든 하위 폴더를 암시적으로 매핑할 수 있습니다.

  5. $/Fabrikam TFVC/DinnerNow/feature1 또는 $/Fabrikam TFVC/DinnerNow/feature2의 파일은 필요하지 않지만 암시적으로 매핑되므로 두 개의 은폐된 매핑을 사용하여 작업 영역에서 이러한 폴더를 제외할 수 있습니다.

  6. 팀은 기본 일부 기본 라이브러리 집합을 획득하고 때로는 보강합니다. 이 폴더에 거의 모든 현재 라이브러리가 필요하며 나중에 팀에서 추가한 라이브러리가 필요하므로 $/Fabrikam TFVC/Main/을 매핑합니다.

  7. 큰 폴더 $/Fabrikam TFVC/Main/ClassLibrary의 작은 세그먼트만 필요하므로 은폐된 것으로 매핑한 다음 필요한 하위 폴더인 $/Fabrikam TFVC/Main/ClassLibrary1만 명시적으로 매핑합니다.

  8. ClassLibrary1 바로 내에 일부 파일이 필요하지만 하위 폴더의 내용이 필요하지 않으므로 $/Fabrikam TFVC/Main/ClassLibrary1/ 폴더에 비귀적 매핑을 적용합니다.

소스 제어 탐색기에서 매핑되지 않은 분기 또는 폴더를 마우스 오른쪽 단추로 클릭하고 로컬 폴더에 대한 고급>맵을 선택하여 폴더를 작업 영역에 매핑할 수도 있습니다. 또는 소스 제어 탐색기 맨 위에 있는 로컬 폴더 옆에 있는 매핑되지 않은 링크를 선택합니다. 매핑 대화 상자에서 매핑할 로컬 폴더를 선택하고 하위 폴더에서 매핑을 재귀적으로 만들려면 재귀 검사 상자를 선택합니다.

다음 스크린샷은 원본 제어 탐색기의 서버 트리 및 컴퓨터의 로컬 파일에 이러한 작업 영역 최적화를 적용한 결과를 보여 줍니다.

폴더 매핑의 효과를 보여 주는 스크린샷

작업 영역을 사용하여 분기 격리

조직에서 분기를 사용하여 코드베이스의 위험을 격리하는 경우 작업 중인 각 분기에 대해 별도의 작업 영역을 만들 수 있습니다. 소규모 팀 내에서 작업을 계속하지만 몇 가지 작업 영역을 사용하여 여러 분기에서 수행하는 작업을 관리합니다.

예시:

여러 분기를 보여 주는 다이어그램

  • 기능 개발: 고객 관련 웹 사이트 개발에 참여하는 분기에서 Extranet 작업을 수행하도록 기본 작업 영역을 수정합니다.

  • 통합 및 안정화: 두 개의 새 작업 영역을 만들어 분기 및 Dev 분기에서 Test 작업을 수행합니다. 여기서 다른 개발자 및 테스터와 협업하여 통합하는 동안 코드를 안정화합니다.

세 개의 작업 영역에서 작업을 관리합니다. 각 작업 영역은 서버의 분기에 있는 폴더를 개발 컴퓨터의 폴더에 매핑합니다.

폴더에 분기 매핑을 보여 주는 다이어그램

다음 단계

효과적인 분기 전략 선택