2013-02-12 2 views
1

TFS에서 자동으로 생성 된 분기를 프로그래밍 방식으로 삭제하려고합니다.프로그래밍 방식으로 TFS 분기 삭제

작업을 수행해야하는 기존 메서드 "ICommonStructureService.DeleteBranches"가 있습니다. 내 문제는 메서드가 "vstfs : // ..."URI를 사용하여 삭제할 분기를 지정하는 매개 변수 "string [] nodeUris"를 필요로한다는 것이며 해당 분기를 가져 오는 방법을 모르겠습니다.

var projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri <myCollectionUrl>)); 
var cssService = projectCollection.GetService<ICommonStructureService3>(); 
var project = cssService.GetProjectFromName(<myProjectName>); 

하지만 어떻게 내가 거기에서 지점 열린 우리당이 얻을 수 :

뭔가처럼 내가 필요로 무엇입니까?

답변

1

그런데 해결책을 찾았습니다. 사용하고있는 지사를 삭제할 때

versionControl.Destroy(new ItemSpec(myBranchPath, RecursionType.Full), 
         VersionSpec.Latest, null, DestroyFlags.KeepHistory); 

이것은 내가 필요한 것입니다. versionControl은 VersionControlServer 유형이며 팀 콜렉션을 사용하여 초기화해야합니다.

+0

'파괴? 프로그래밍 방식으로? 모든 것을 파괴하려는 경우 왜 버전 관리를 사용합니까? –

+0

참고 DestroyFlags avaialble 있습니다. "DestroyFlags.KeepHistory"는 모든 것이 파괴되지는 않지만 History는 보관된다는 것을 의미합니다. 사용 사례는 예 : 나중에 필요하지 않을 수도있는 "임시"브랜치 (히스토리가 파기되지 않는 경우). TFS의 많은 작업을 캡슐화하는 통합 환경이 있기 때문에 프로그래밍 방식으로 제공됩니다. – ulfgebhardt

0

버전 제어에서 분기를 삭제하는 것은 다른 버전 제어 항목을 삭제하는 것과 같습니다. ItemWorkspace.PendDelete의 삭제 보류가 필요합니다.

method you reference 그것은 TFS의 작업 항목에 할당 할 수있는 "areas and iterations"을 제어하는 ​​TFS common structure service의 일부 버전 관리에 전적으로 관련이 없습니다.

즉, 공통 구조 서비스에 대해 모든 종류의 버전 제어 작업을 수행 할 수있는 방법이 없습니다. VersionControlServer에 대해 Workspace을 작성하여 삭제를 보류 한 다음 보류중인 변경 사항을 체크인하여 지사를 삭제합니다.

+0

답장을 보내 주셔서 감사합니다.하지만 "ICommonStructureService.DeleteBranches"메서드가 있기 때문에이를 사용하는 옵션이 있어야합니다. – ulfgebhardt

+0

버전 관리 브랜치에는 공통 구조 서비스 브랜치에 대해서는 사용할 수 있지만 사용할 수는 있습니다. 'http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.server.icommonstructureservice.deletebranches (v = vs.90) .aspx'. –

+0

"공통 구조 서비스 지점"이란 의미를 완전히 이해하지 못합니다. 귀하의 링크가 나를 위해 작동하지 않습니다 ... – ulfgebhardt

0

Destroy 명령 사용에 대한 Edward Thomson에 동의합니다. 그래서 나는 그 조언에 따라 그리고 내가 기대보다 동일한 작업을 수행 할 수있는 깔끔한 방법이 있다면, 다음과 같이

public void DeleteBranch(string path) 
    { 
     var vcs = GetVersionControlServer(); 
     var itemSpec = new ItemSpec(path, RecursionType.Full); 
     var itemSpecs = new[] {itemSpec}; 
     var workSpace = GetOrCreateWorkSpace(vcs); 
     try 
     { 
      workSpace.Map(path, @"c:\Temp\tfs"); 
      var request = new GetRequest(itemSpec, VersionSpec.Latest); 
      workSpace.Get(request, GetOptions.GetAll | GetOptions.Overwrite); 
      workSpace.PendDelete(path, RecursionType.Full); 
      var pendingchanges = workSpace.GetPendingChanges(itemSpecs); 
      workSpace.CheckIn(pendingchanges, "Deleting The Branch"); 
     } 
     finally 
     { 
      if (workSpace != null) 
      { 
       workSpace.Delete(); 
      } 
     } 
    } 

을했다. 이

  • 에 전체의 변화로 설정
  • 검사를 삭제하는 것이
  • 수행합니다 모든 변경을 가져옵니다 작업 공간을 정리 임시 작업 공간을 작성, 그것은 너무 많은 일을 같이 조금 느린입니다
관련 문제