2011-08-08 14 views
5

Jak mogę programowo określić, do której gałęzi należy ten plik? Spędziłem 3 godziny, próbując to zrozumieć bez rezultatów. Znalazłem ten temat, ale nie jest to, co chcę: How to programmatically get information about branches in TFS?TFS 2010 programowo określający gałąź artykułu

+0

Czy odwołujesz się do pliku w obszarze roboczym lub pliku w ścieżce kontroli źródła? –

+0

Może opiszę mój prblem bardziej szczegółowo, chcę tylko mieć niestandardową regułę, która określa, czy wszystkie pliki w zestawie zmian pochodzą z pojedynczego oddziału, więc odpowiadając na Twoje pytanie, nie sądzę, że to naprawdę ma znaczenie, ponieważ PendingChange ma ścieżki dla botów , LocalItem - ścieżka obszaru roboczego, ServerItem - ścieżka kontroli źródła. – Krzysiek

+0

Dzięki. Dodaj ten opis do swojego pytania. Im więcej informacji podasz, tym lepiej. Obawiam się jednak, że chcesz, aby wszystkie pliki w zestawie zmian pochodziły z punktu rozgałęzienia wyższego w drzewie kontroli źródła niż wszystkie z nich. Czy kontrola twojego źródła zaczyna się od "$/Main" i od tego oddziału? –

Odpowiedz

2

Jedynym sposobem, w jaki znalazłem informacje o filii dla konkretnego pliku, jest użycie obiektu VersionControlServer.QueryBranchObjects do wysłania zapytania o każdą możliwą gałąź w strukturze folderów do końca. do korzenia.

Można jednak dokonać kilku założeń i zrobić to dość sprawnie - ponieważ oddział nie może znajdować się w innej gałęzi w tfs 2010. Znajdź wspólny podzbiór ścieżek wszystkich plików, które są sprawdzane i przetestuj je, jeśli żadna nie jest gałęzią nie należą do tej samej gałęzi.

4

Miałem bardzo podobny problem. Znalazłem rozwiązanie z nim, oto kod:

... 
// 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! :) 
    } 
} 
... 

Mam nadzieję, że ktoś pomoże z tym problemem, myślę, że PO już rozwiązany (minęło trochę czasu odkąd on zadał pytanie).

Powiązane problemy