2011-08-08 2 views
5

이 파일이 속한 분기를 프로그래밍 방식으로 결정하려면 어떻게해야합니까? 나는 3 시간 동안 아무 결과없이 이것을 알아 내려고 노력했다. 이 주제는 찾았지만 원하는 것은 아닙니다. How to programmatically get information about branches in TFS?TFS 2010에서 프로그래밍 방식으로 항목 분기를 결정하는 중

+0

작업 영역에있는 파일이나 소스 제어 경로에있는 파일을 참조하고 있습니까? –

+0

어쩌면 내가 좀 더 자세히 설명하겠다. 내가하고 싶은 일은 변경 지점에있는 모든 파일이 단일 지점에서 왔는지를 결정하는 사용자 지정 정책을 갖는 것이다. 질문에 응답 할 때 나는 PendingChange가 실제로 봇 경로를 가지고 있다고 생각하지 않는다. , LocalItem - 작업 영역 경로, ServerItem - 소스 제어 경로 – Krzysiek

+0

감사합니다. 귀하의 질문에 그 설명을 추가하십시오. 정보를 많이 제공할수록 좋습니다. 그러나 변경 집합의 모든 파일이 모든 것보다 소스 제어 트리의 상위 지점에서 오는 것을 요구하고 싶습니다. 소스 제어가 "$/Main"으로 시작하고 거기에서 분기합니까? –

답변

2

특정 파일에 대한 분기 정보를 얻는 유일한 방법은 VersionControlServer.QueryBranchObjects를 사용하여 폴더 구조의 각 가능한 분기를 모두 쿼리하는 것입니다 뿌리까지.

그러나 몇 가지 가정을하고 효율적으로 수행 할 수 있습니다. 분기가 tfs 2010의 다른 분기에있을 수 없으므로 체크인하는 모든 파일의 경로 하위 항목을 찾아서 테스트합니다. 그들은 같은 지부에 속하지 않습니다.

4

나는 매우 비슷한 문제가있었습니다. 여기, 여기에 해결책을 발견하는 코드입니다 :

... 
// get all branches 
VersionControlServer vcs = tfs.GetService(typeof(VersionControlServer)); 
BranchObject[] allBranches = vcs.QueryRootBranchObjects(RecursionType.Full); 

string myItem = "$/My Project/some Path including the branch/myFile.txt"; 

foreach(BranchObject branch in allBranches) 
{ 
    if(myItem.Contains(branch.Properties.RootItem.Item)) 
    { 
    // branch is the branch to which the item belongs! :) 
    } 
} 
... 

나는 (그가 질문을하기 때문에 그 동안이었다) 연산은 이미 해결했다 생각이이 문제와 사람을 도움이되기를 바랍니다.

관련 문제