2010-07-13 18 views
5

tfs içindeki belirli bir klasör yolu verildiğinde, belirli bir değişiklik kümesi için klasör içindeki tüm dosya ve klasörleri yinelemeli olarak bulmalıyım. Başka bir deyişle, belirli bir değişiklik kümesi için tfs içindeki bir yolun geçişini kapatmam gerekiyor. Bunu yaparken karşılaştığım sorun tfs içinde belirli bir klasörün içeriğini listeliyor .. Bu C# nasıl mümkün olurdu?tfs içindeki bir klasörün tüm içeriğinin listesi

cevap

6

Ben

'değişiklik kümesi X bir parçası olduğunu klasör içeriğini' sen 'olarak değişiklik kümesi X klasör içeriğini' istiyor varsayarak ve değilim

GetIte msn kullanmak doğru karardı, sadece ilgilendiğiniz Changeset için bir sürüm spec geçmek

http://msdn.microsoft.com/en-US/library/bb138911.aspx

Eğer öyleyse, zaten VersionControlServer örneği başvurusu olduğunu varsayarak:.

var myFolderAtChangeset17 = versionControlServer.GetItems("$/MyFolder", new ChangesetVersionSpec(17), RecursionType.Full); 

Yanlış anlaşılır ve 'changeset X'in bir parçası olan klasör içeriğini' istemiyorsanız, bunu yapmanın birkaç farklı yolu vardır, ancak GetChangeset ile değişiklik kümesini almak ve yalnızca Changes filtrelemek oldukça basittir.

+0

'a geçme noktasını tanımladığınız bölüm eksik, sürüm özelliklerinin farkında değildim. İstediğim buydu. Teşekkürler... – Sidd

-1

Belirli bir değişiklik kümesi için değiştirilen öğelerin tümünü içeren bir XML belgesi almak için changeset web hizmetini kullanabilirsiniz. Ardından, sadece değiştirilen öğeler listesinden geçiş yapın ve aradığınız yolda olup olmadıklarına bakın.

http: // your_tfs_server /VersionControl/Changeset.aspx?artifactMoniker= your_changeset_number & webView = true

böyle
+0

Sadece bir VersionControlServer.getItems() yapabilir ve türetilmiş diziyi döngüleyebilirim. Sadece şimdi deniyorum ... – Sidd

+0

Downvoted (üzgünüm David). Bunu herhangi bir (normal) şart altında yapmak için web servisini kullanmamalısınız. Bunlar dahili ve haber verilmeksizin değiştirilebilir. – Robaticus

2

şey daha aradığın ne olabileceğini İşte

değişiklik kümesi webcoder URL için. Bu, bir değişiklik kümesindeki tüm değişiklikleri alır ve verilen yoldakileri tanımlayarak bunların içinden yineler. Bu linq sorgu ile kısaltılabilir olabilir, ama biraz daha ben söylemeye çalışıyorum ne özü vermek genişletilmiş bırakıyorum:

TeamFoundationServer tfs = new TeamFoundationServer("http://tfs:8080"); 
    VersionControlServer vcs = tfs.GetService<VersionControlServer>(); 

    Changeset cs = vcs.GetChangeset(6284868); 

    foreach (Change change in cs.Changes) 
    { 
     if (change.Item.ServerItem.StartsWith("$/Application Common/Dev/src")) 
     { 
      System.Diagnostics.Debug.WriteLine(string.Format("Changeset {0}, file {1}, changes {2}", 
       cs.ChangesetId, change.Item.ServerItem, change.ChangeType.ToString())); 
     } 
    } 
+0

Teşekkürler .. Ama belirli bir değişiklikteki öğelere ihtiyacım yok. Belirli bir klasörün altındaki tüm dosya ve klasörlere tfs'de ihtiyacım var. – Sidd

+1

Sonra GetItems() kullanabilirsiniz ... sorunuza rağmen, changeet bahsetti. – Robaticus

0

Böyle bir şey işe yarar mı ..

başka fikirleriniz varsa

    TeamFoundationServer tfs = new TeamFoundationServer("http://tfs:8080"); 
    VersionControlServer vcs = tfs.GetService(); 
    ItemSet items; 

    items = vcs.GetItems(tfsPath, RecursionType.Full); 

, yayınlayabilirsiniz ..

+0

kodunda, tfsPath öğesinin GetItems –

İlgili konular