jgauffin
jgauffin

Reputation: 101150

Get a file list from TFS

I'm trying to figure out how to get a list of files from a specific folder ("$/theproject/trunk/setup/") in TFS without putting them in the local folder.

So far I've managed to connect, create a workspace and a working folder:

        var server = RegisteredTfsConnections.GetProjectCollection(new Uri("http://hostname:8080/"));
        var projects = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(server);
        var versionControl = (VersionControlServer)projects.GetService(typeof(VersionControlServer));

        var workspace = versionControl.CreateWorkspace(AppDomain.CurrentDomain.FriendlyName + "-installer", versionControl.AuthorizedUser);
        try
        {
            WorkingFolder folder = new WorkingFolder("$/theproject/trunk/setup/", "C:\\aTempFolder");
            workspace.CreateMapping(folder);

            //this would get all files to the local folder, right?
            //what should I do instead to just get a file list?
            workspace.Get(); 

        }
        finally
        {
            workspace.Delete();
        }

Upvotes: 10

Views: 15487

Answers (2)

frennky
frennky

Reputation: 13934

Try this:

ItemSet items = versionControl.GetItems(folder.ServerItem, RecursionType.Full);

Upvotes: 9

jgauffin
jgauffin

Reputation: 101150

It's done like this:

        var server = RegisteredTfsConnections.GetProjectCollection(new Uri("http://hostname:8080/"));
        var projects = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(server);
        var versionControl = (VersionControlServer)projects.GetService(typeof(VersionControlServer));

        var newestDate = DateTime.MinValue;
        Item newestItem = null;
        var items = versionControl.GetItems("$/theproject/trunk/setup/*.msi");
        foreach (var item in items.Items)
        {
            if (item.ItemType != ItemType.File)
                continue;

            if (item.CheckinDate > newestDate)
            {
                newestItem = item;
                newestDate = item.CheckinDate;
            }
        }
        newestItem.DownloadFile("C:\\temp\\" + Path.GetFileName(newestItem.ServerItem));

Upvotes: 16

Related Questions