Wednesday, February 28, 2007

How work item permissions affect query results

Today I come across interesting article (well, it is only paragraph worth of text) - in MSDN of all places. Reading that short one in time could have saved me several hours :)

The gist of the thing is this - if you have set permissions to on area paths (deny "View work items in this node"), then you may be in for surprise, as that permission will affect work item query results. If you think about it - that's only logical if the person that has no permissions do not see the forbidden work items.

But if you use those permissions, you should explain that aspect of the behavior to every user, as it may lead to rather unpleasant explanations ("I saw in my report only five bugs and now you tell me there are fifty!"). That makes me wonder - would the indication of restricted work items visible in reports (perhaps similar to indication of restricted branches in item properties in version control) make the situation better?

At any rate - if you as much as think about changing the area path view work item permissions, read the article before and think again! As MSDN small print says "... the system does not warn the user the query results are incomplete ..."

Exam 71-510: I still do not care about command line parameters

Yesterday I took beta of exam 71-510, and man, I was in for the disappointment!

Usually I like taking beta exams, as they are much more challenging than the regular ones (and free :). Last betas I took were 71-551 and 71-552; the exams were not easy but quite interesting, the answers that I was not sure of led me to some important things to read on.

And here goes TFS exam - what a messy affair! I do realize the difference between C# WinForms exam and one dedicated to the product, but still - I think the TFS exam is mostly useless as far as certifying knowledge of Team Foundation Server goes.

Here are my main pain points (I would like to be more specific, but the legalese you agree to in the beginning of the exam will probably get me sued):

  • There are questions that test the knowledge of the parameters of the command line utilities that most users run once in a product lifecycle. And whats more - I have used them more than once but do not remember a single parameter. And why should I?

  • There are way too many cases where the operation performed illustrated using command line (even in cases where there is valid GUI alternative, and command line is almost never used). Again, why exactly would I remember command line parameters if I never use it?

  • Some command line utilities are really obscure. Yes, I know that they exist and what is their purpose, and even used them, but would that be the ordinary case?

  • Some components of TFS get unfair share of questions in exam. I'd say that most people use Version Control, Work Item Tracking and Team Build (with some Reporting thrown in). I have yet to see organization (succesfully) using integration with MS Project or one modifying the project guidelines. Or should custom controls be used extensively in Work Items? If you judge by the exam questions - all those things are mandatory parts of any TFS installation

  • And the last one - some questions were really verbose. To the point of actually obscuring the question (and in other cases the answers). Why do we have this kind of GMAT approach in technology certification? What is the purpose of artificially shadowing the meaning?

Overall impression was that questions were just thrown together, and I did not see clear picture of what the exam was supposed to certify. The questions on WIT and Build were good, but the rest ... - well, I said it all above.

I do not plan on taking it once it goes live as regular exam, but I sure hope that Microsoft will change the exam before that (and some 30% of questions easily may be wiped out - there is no improving them).

And yeah, to back up my rant somewhat - that was my 9th MS certification exam.

UPDATE: As of 16-Apr-2007, I have passed the exam and now bear a proud title of "Microsoft Certified Technology Specialist:Microsoft Team Foundation Server, Configuration and Deployment". Hopefully, that makes my point of view less of a rant and more of a constructive suggestion nature :)

Thursday, February 15, 2007

How to check if file is already in TFS repository?

Recently I have come across one development issue with version control object model. In development of VS TFS add-in, it was essential to check whether some file is already controlled (that is added to source control repository).

It is tempting to use TryGetServerItemForLocalItem method of Workspace class - if the item does not exist on server, it will return empty string. But nothing in the life is that simple - all GetServerItem/TryGetServerItem (as well as GetLocalItemForServerItem and TryGetLocalItemForServerItem) do not test items as to existence in the repository; in fact they are very thin wrapper over simple parsing methods.

Then naturally there must be something in VersionControlServer class, right? When I started looking for that method, I come across some pretty weird solutions (like using GetItem method - and in case exception is thrown, then item does not exist).
But in fact there is special method that does exactly that - best solution for finding out if item exists at server. It is (not too) aptly named ServerItemExists and it even has two overrides: first one is simple check whether item exists by path and item type, while the second one allows to supply additionally item version and deleted status.

So be advanced and use appropriate method! And thumbs up to Microsoft for good design of object model!