2010-03-25 4 views
1

TFS API를 사용하여 파일 세트에 레이블을 추가하고 싶습니다. 내 코드는 다음과 같습니다TFS API를 사용하여 파일에 레이블을 추가하는 가장 좋은 방법은 무엇입니까?

VersionControlLabel label = new VersionControlLabel(this.vcServer, this.label, 
       this.vcServer.AuthenticatedUser, this.labelScopeDirectory, this.labelComment); 

      List<LabelItemSpec> labelSpecs = new List<LabelItemSpec>(); 

      // iterate files and versions 
      foreach (var fileAndVersion in this.filesAndVersions) 
      { 
       VersionSpec vs = null; 
       Item i = null; 
       // i have no idea why the itemspec is needed instead of the item and version... 
       ItemSpec iSpec = new ItemSpec("{0}/{1}".FormatString(this.source, fileAndVersion.Key), RecursionType.None); 
       GetItemAndVersionSpec(fileAndVersion.Key, fileAndVersion.Value, out vs, out i); 
       labelSpecs.Add(new LabelItemSpec(iSpec, vs, false)); 
      } 

      this.vcServer.CreateLabel(label, labelSpecs.ToArray(), LabelChildOption.Merge); 

나에 관한 건은 MSDN docs에서이 같은 것들이다 (이 몇 가지 확장 방법은 ...이 모두 크게 this blog post에서이 상승된다) :

This enumeration supports the .NET Framework infrastructure 
and is not intended to be used directly from your code. 

그래서 MSDN에서 열거 형 (LabelChildOption)을 사용하지 말라고 말합니다.이 레이블은 afaik가 레이블을 만들어 파일에 추가하는 유일한 방법입니다.

더 좋은 방법이 있습니까? TFS API에서 일종의 "회색"영역입니까?

답변

2

// 내가 ItemSpec가 RecursionType을 포함

itemspec 대신 항목 버전이 필요한 이유 아무 생각 ...이 없다. 미리 폴더의 모든 하위 항목에 레이블을 지정할 것이라는 것을 안다면 (하나의 레벨 또는 모든 하위 폴더로 완전히 재귀 적으로) ItemSpec을 사용하여 LabelItemSpec []의 크기를 크게 줄일 수 있습니다. 서버에서 &에게 전달됩니다.

TFS API에서 이러한 종류의 "회색"영역이 있습니까?

회색이 아니며, 문서화가 잘되어 있지 않습니다. 레이블은 TFS에서 고려해야 할 사항입니다. 그들은 SDLC를 관리하는 "Microsoft 방식"에서 아무런 역할을하지 않으므로 지침에서 전혀 언급되지 않은 것입니다. 내가 알 수 있듯이, 그들은 기능 완성도 (일명 ​​경쟁 분석)를 위해 대부분 거기에 있습니다. 또한 클라이언트 API에서 불가능한 몇 가지 복잡한 일회용 데이터베이스 조작에 편리합니다.

MSDN 기사 아래의 "커뮤니티 콘텐츠"섹션에서 Buck Hodges의 설명을 읽으십시오. 이것이 중요한 부분입니다. 바꾸기는 일반적으로 사람들이 병합보다 원하는 것에 더 가깝지만, 당신이 확실하다면 새로운 레이블을 만드는 것이 중요하지 않습니다.

관련 문제