I'm at my first tries with the TFS SDK (Microsoft.TeamFoundation.VersionControl.Client
) and when came time to retrieve objects, I got confused on why and when I should use VersionControlServer.GetItems
vs VersionControlServer.GetExtendedItems
. What are the differences? Performance? Features?
Thank you! :)
Yes, you have a tradeoff between performance and features. You can imagine that GetItems
is a simple query, whereas GetExtendedItems
is a join on another table (or tables), and less efficient.
An Item
, for example, contains information about an item at a particular version. An ExtendedItem
adds in information about your version of that file as it exists in the workspace that you've specified in the query. If you have done a Get
on that file then fields will be populated with the version that exists on your local disk and any pending changes that you've made on it.
ExtendedItems
largely exist for the Source Control Explorer view; it can display information about both the items on the server and their status in your local repository in a single query. This reduces the number of round-trips that view makes, but the ExtendedItem
s query is more expensive than a query for simple Item
s.
If GetItems
will give you the data that you need, you should prefer that. If not, use GetExtendedItems
.