태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

VS 2013 ALM/TFS 20132014.01.07 17:55

TFS의 작업 항목 필드 중 담당자(Assigned To)에는 기본적으로 TFS에 등록된 모든 사용자의 이름이 표시됩니다.

사용자 수가 적을 때는 별 문제가 없지만, 몇 십 명에서 몇 백 명 이상이 되면 너무 많은 사용자 이름이 표시되기 때문에 특정 사용자를 찾는게 쉽지 않습니다.

물론 오름차순으로 정렬이 되어 있으서 스크롤을 쭈~욱 내리면서 찾으면 되겠지만, 그래도 매번 그 많은 사용자 중에서 스크롤을 내려가면서 특정 사용자를 찾는다는게 여간 귀찮은 작업이 아니죠.

만약 담당자 필드에 특정 그룹 또는 특정 팀의 멤버만 표시되도록 할 수 있다면 좀 더 편리하겠죠?

 

이 글에서는 담당자 필드에 TFS의 특정 그룹 멤버만 표시되도록 하는 방법에 대해 알아보려고 합니다.

 

먼저 담당자 필드에 어떤 규칙이 설정되어 있길래 TFS에 등록된 모든 사용자의 이름이 표시되는지부터 살펴보겠습니다.

다음은 작업(Task) 작업 항목 형식 정의 중 담당자 필드가 정의된 부분입니다.

<FIELD name="담당자" refname="System.AssignedTo" type="String" syncnamechanges="true" reportable="dimension">
    <ALLOWEXISTINGVALUE/>
    <VALIDUSER/>
</FIELD>

['작업' 작업 항목 형식 - Visual Studio Scrum 2013 (한글)]

 

담당자 필드에는 'ALLOWEXISTINGVALUE'와 'VALIDUSER' 두 개의 규칙이 설정되어 있습니다.

각 규칙에 대해 잠깐 살펴볼까요?

  • ALLOWEXISTINGVALUE: 허용된 값이 아니더라도 기존의 값을 그대로 유지하도록 합니다.
  • VALIDUSER: TFS에 등록된 사용자만 입력할 수 있도록 지정합니다.

 

위의 규칙 중에서 VALIDUSER 규칙에 의해서 담당자 필드에 TFS 사용자 목록이 표시됩니다.

 

따라서 담당자 필드에 특정 그룹 멤버만 표시되도록 하기 위해서는 VALIDUSER 규칙을 제거하고 다른 규칙을 설정해야 합니다.

 

필드의 규칙 중에는 ALLOWEDVALUES라는 규칙이 있습니다.

이 규칙은 필드에 사용할 수 있는 값의 목록을 지정하고, 그 목록에서 선택할 수 있는 값만 허용하고자 할 때 사용합니다.

예를 들어, 위험도 필드에 High/Medium/Low 값 중 하나만 입력하게 하고 싶을 때는 그 필드에 ALLOWEDVALUES 규칙을 설정하고 허용되는 값을 High/Medium/Low로 지정합니다.

만약 ALLOWEDVALUES 목록에 없는 값을 입력하고 저장하려고 하면 오류 메시지가 표시됩니다.

 

자 이제 담당자 필드에 특정 그룹 멤버만 표시되도록 하기 위해 ALLOWEDVALUES 규칙을 적용해 보겠습니다.

그리고 허용되는 값으로 팀 프로젝트의 기본 그룹인 Contributors 그룹의 멤버를 지정해 보겠습니다.

다음은 이와 같은 규칙을 적용한 후의 담당자 필드 정의 부분입니다.

      <FIELD name="담당자" refname="System.AssignedTo" type="String" syncnamechanges="true" reportable="dimension">
        <ALLOWEXISTINGVALUE />
        <ALLOWEDVALUES expanditems="true" filteritems="excludegroups">
          <LISTITEM value="[project]\Contributors" />
        </ALLOWEDVALUES>
      </FIELD>
      <FIELD name 

 

여기서 주의해야 할 점은 [project]에서 project를 팀 프로젝트 이름으로 대체하는 것이 아니라 있는 그대로 '[project]'라고 명시해야 한다는 것입니다.

 

이렇게 ALLOWEDVALUES 규칙을 적용하면 담당자 필드에는 해당 팀 프로젝트의 Contributors 그룹에 포함된 사용자들만 표시가 됩니다.

 

눈치를 채셨겠지만, 'Contributors' 대신 어떠한 팀 프로젝트의 그룹(예를 들면, Project Administrators, Readers 등)을 지정해도 됩니다.

또한 다음과 같이 TFS 2012부터 추가된 (Team)을 지정할 수도 있습니다.

      <FIELD name="담당자" refname="System.AssignedTo" type="String" syncnamechanges="true" reportable="dimension">
        <ALLOWEXISTINGVALUE />
        <ALLOWEDVALUES expanditems="true" filteritems="excludegroups">
          <LISTITEM value="[project]\ScrumTeamA" />
        </ALLOWEDVALUES>
      </FIELD>
      <FIELD name 

 

이상으로 담당자 필드에 특정 그룹 사용자만 표시하는 방법에 대해 살펴보았습니다.

 

감사합니다.

webmars.

 

Posted by webmars
VS 2013 ALM/TFS 20132014.01.03 17:10

TFS 버전 제어 기능 중에 레이블(label)이라는게 있습니다. 흔히 '라벨'이라 부르는 것이지요.

이 기능은 소스 코드의 베이스라인(또는 스냅숏)을 설정하는데 활용됩니다.

예를 들어, 2014년 1월 3일 배포한 DLL 및 EXE를 빌드하는데 사용된 소스 코드들에 대해 레이블을 적용해 두면, 향후에 레이블을 이용하여 이 소스 코드들을 가져다가 버그를 수정하거나 새 기능을 추가하는데 편리하죠.

 

레이블은 주로 폴더에 대해 적용하게 되는데, 레이블을 적용하기 위해서는 해당 폴더에 대한 레이블 권한이 필요합니다.

그런데 레이블 권한이 적용되는 것이 우리가 일반적으로 생각하는 것과는 차이가 있습니다.

어떤 차이가 있는지 아래의 예로 설명을 해보겠습니다.

 

다음과 같은 폴더 구조가 있다고 가정해 보겠습니다.

$/MyTeamProject

/MySource

/MySolution1

/MySolution2

 

그리고 A라는 개발자가 있다고 가정해 보죠.

자, 이제 A에게 MySolution2 폴더에 대해서는 레이블 적용을 할 수 없게 하고, MySolution1 폴더에 대해서 레이블을 적용할 수 있게 하고 싶습니다.

어떻게 하면 될까요?

 

직관적으로 생각을 할 때는 MySolution1 폴더에서 A에게 레이블 권한을 부여하기만 하면 될 것 같은데요.

하지만 여기서 우리가 일반적으로 생각하는 것과의 차이가 있습니다.

 

만약 위와 같이 레이블 권한을 부여한 다음에 A가 MySoluction1 폴더에 대해 레이블을 적용하려고 하면 다음과 같은 오류 메시지가 표시됩니다.

 

루트 폴더인 $/MyTeamProject에 대해 레이블 권한이 필요하다는 메시지입니다.

레이블을 MySolution1 폴더에 적용하려고 하는데, 루트 폴더에 대한 레이블 권한이 없다는 것이지요.

 

한 가지 더 재밌는 사실이 있습니다.

만약 A에게 MySolution1 폴더에 대해서만 읽기/쓰기 권한을 부여했을 경우 즉, 그 외 다른 폴더에 대해서는 읽기/쓰기 권한이 없게 했을 경우인데요.

A에게 루트 폴더($/MyTeamProject)에 대한 레이블 권한을 부여하여 MySolution1 폴더에 레이블을 적용했다 하더라도 루트 폴더에 '읽기' 권한이 없으면 레이블을 찾을 수 없다는 것입니다.

레이블 찾기를 하면 아래와 같은 메시지가 표시됩니다.

 

따라서 특정 개발자에게 특정 폴더에 대해서만 레이블을 적용하고 나중에 그 레이블을 찾을 수 있게 하고 싶더라도 루트 폴더에 대한 레이블읽기 권한을 허용해야 한다는 것입니다.

 

왜 TFS가 이와 같이 특정 폴더에 대해 레이블을 적용하고자 할 때도 루트 폴더에 대한 레이블 권한을 요구하는지, 그리고 레이블을 찾고자 할 때도 루트 폴더에 대한 읽기 권한을 요구하는지 아직은 잘 모르겠습니다.

어떤 이유가 있을 수도 있고 아니면 버그일 수도 있겠죠.

어찌됐건 폴더 별로 개발자에 대한 레이블 권한을 다르게 관리하고자 할 때는 이와 같은 내용을 참고하셔서 적용하셔야 합니다.

 

감사합니다.

webmars.

 

 

Posted by webmars
VS 2013 ALM/TFS 20132014.01.03 10:52

지난 글(오프라인 상태에서 변경한 내용 체크 인 하기)에서 오프라인 상태에서 변경한 내용을 TFS에 체크 인 하는 방법에 대해 살펴보았는데요.

그 중에서 TFS Power Tools의 TFPT 유틸리티를 사용하는 경우에 매번 명령 프롬프트 창에서 TFPT Online 명령을 실행하는 것이 번거로울 수 있죠.

이와 같은 경우에는 TFPT Online 명령을 Visual Studio의 외부 도구로 등록하여 사용하면 편리합니다.

 

이 글에서는 Visual Studio의 외부 도구에 TFPT Online 명령을 등록해서 좀 더 편리하게 오프라인 상태에서의 변경 내용을 TFS에 체크 인하는 방법에 대해 설명합니다.

 

우선 다음과 같은 간략한 절차를 따라해 보시죠.

  1. Visual Studio 실행
  2. TOOLS > External Tools... 선택
  3. External Tools 대화 상자에서 Add 버튼 클릭
  4. Title 항목에 'TFPT ONLINE' 입력
  5. Command 항목의 ... 버튼을 클릭하여 TFPT.exe를 찾아서 선택
  6. Arguments 항목에 'Online /recursive' 입력
  7. Initial directory 항목에서 ▶ 버튼을 클릭한 다음 Solution Directory를 선택
    • Solution Directory를 선택한 경우에는 솔루션을 오픈한 상태에서 이 명령을 실행해야 합니다.
    • 만약 솔루션을 오픈하지 않은 상태에서도 이 명령을 실행하고 싶다면, 이 항목에 솔루션 폴더 경로를 직접 입력합니다(예: D:\Work\MySource\MySolution).
  8. OK 버튼 클릭

위의 절차는 (다들 아시겠지만) TFPT Online 명령을 Visual Studio의 외부 도구로 등록하는 방법입니다.

그리고, 다음 그림은 External Tools 대화 상자에서 TFPT ONLINE을 등록하는 화면입니다.

 

위의 절차를 마쳤다면 이제 Visual Studio의 TOOLS 메뉴에서 TFPT ONLINE이 정상적으로 등록되었는지 확인해 봅니다.

 

자, 이제 등록된 TFPT Online을 실행시켜 보죠.

Visual Studio에서 TOOLS > TFPT Online을 차례로 선택하여 실행시킵니다.

(TFPT ONLINE을 등록할 때 Initial directory를 $(SolutionDir)로 설정했기 때문에 솔루션이 열려 있어야 합니다.)

 

다음 그림은 TFPT Online을 실행시킨 결과 화면입니다.

 

화면에서 변경 내용을 보류 시킬 항목을 선택한 다음 Pend Changes 버튼을 클릭하면, 선택한 항목들이 Pending Changes 창에 표시됩니다.

마지막으로 Pending Changes 창에서 체크 인을 클릭하면 됩니다.

 

이상으로 TFPT Online 명령을 Visual Studio의 외부 도구로 등록하여 좀 더 편리하게 사용하는 방법에 대해 설명하였습니다.

감사합니다.

webmars.

 

Posted by webmars