<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Jeff Lucovsky's blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/jefflu/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/jefflu/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 03:21:32 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Team Foundation: Alerts missing subject line?</title>
      <link>https://docs.microsoft.com/archive/blogs/jefflu/team-foundation-alerts-missing-subject-line</link>
      <pubDate>Wed, 02 Aug 2006 06:26:00 GMT</pubDate>
      <dc:creator><![CDATA[jefflu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jefflu/2006/08/02/team-foundation-alerts-missing-subject-line/</guid>
      <description><![CDATA[Team Foundation creates alerts that notify users and/or web applications of certain events that have...]]></description>
      <content:encoded><![CDATA[<P><FONT color=#000080>Team Foundation creates <EM>alerts </EM>that notify users and/or web applications of certain events that have occurred. Some of these alerts are used internally by Team Foundation (e.g., notifying another TF component of an important change to group membership data). Most are used by end users to receive notification of work item changes, checkins, and build activitites. </FONT></P>
<P><FONT color=#000080>Pete Sheill and others have discussed alerts in the past. Recently, we became aware of a problem that manifests itself through the Team Foundation eventing mechanism which includes alerts.</FONT></P>
<P><FONT color=#000080>When the alert subject line is blank, this often means that one of the assemblies used to process alerts prior to sending isn't working properly. In some cases, these assemblies fail to load and an event log message will be written.</FONT></P>
<P><FONT color=#000080>There are 3 assemblies that process alerts prior to sending to the subscribers</FONT></P>
<UL>
<LI><FONT color=#000080>Microsoft.TeamFoundation.Build.Server.EventFilter.dll</FONT></LI>
<LI><FONT color=#000080>Microsoft.TeamFoundation.VersionControl.Server.EventFilter.dll</FONT></LI>
<LI><FONT color=#000080>Microsoft.TeamFoundation.VersionControl.WorkItemTracking.Server.EventFilter.dll</FONT></LI></UL>
<P><FONT color=#000080>These assemblies are loaded by the <STRONG>Services </STRONG>web application when it starts. This web application matches events with subscription data created from Visual Studio or using the command line tool BisSubscribe</FONT></P>
<P><FONT color=#000080>We've found that these assemblies do not load when the configuration settings for that web service have been changed using the ASP.NET tab of the web site properties. You can reach this by navigating to the Team Foundation web site from <STRONG>inetmgr, </STRONG>selecting Properties and then choosing the ASP.NET tab followed by selecting <STRONG>Edit Configuration</STRONG>.</FONT></P>
<P><FONT color=#000080>This causes an attribute to be added to the <STRONG>config</STRONG> element of the corresponding web.config file. E.g., if you alter the <STRONG>Services</STRONG> configuration, <EM>installPath\</EM>Web Services\Services\Web.config is altered.</FONT></P>
<P><FONT color=#000080>Before making the configuration change, the web.config files look like</FONT></P>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
<P><FONT color=#000080>&lt;configuration&gt;</FONT></P>
<P><FONT color=#000080>&lt;!-- Team Foundation/Web application values --&gt;</FONT></P>
<P><FONT color=#000080>&lt;/configuration&gt;</FONT></P></BLOCKQUOTE>
<P><FONT color=#000080>Following a configuration change using&nbsp; <STRONG>Edit Properties:</STRONG></FONT></P>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
<P><FONT color=#000080>&lt;configuration <FONT style="BACKGROUND-COLOR: #a9a9a9"><SPAN style="BACKGROUND: yellow">xmlns="https://schemas.microsoft.com/.NetConfiguration/v2.0"</SPAN>&gt;</FONT></FONT></P>
<P><SPAN style="COLOR: navy; FONT-FAMILY: Arial"><FONT style="BACKGROUND-COLOR: #d3d3d3" face="Times New Roman" color=#000080>&lt;!-- settings --&gt;</FONT></SPAN></P>
<P><SPAN style="COLOR: navy; FONT-FAMILY: Arial"><FONT style="BACKGROUND-COLOR: #d3d3d3" face="Times New Roman" color=#000080>&lt;/configuration&gt;</FONT></SPAN></P></BLOCKQUOTE>
<P dir=ltr><SPAN style="COLOR: navy; FONT-FAMILY: Arial"><FONT face="Times New Roman">To restore behavior, use an editor or Notepad to remove the namespace attribute. Note that you do not need to run iisreset following this change.</FONT></SPAN></P>
<P dir=ltr><SPAN style="COLOR: navy; FONT-FAMILY: Arial"><FONT face="Times New Roman">The underlying problem is a known issue and is being addressed.</FONT></SPAN></P>]]></content:encoded>
    </item>
    <item>
      <title>Error Reporting -- Does anybody review those Watson reports?</title>
      <link>https://docs.microsoft.com/archive/blogs/jefflu/error-reporting-does-anybody-review-those-watson-reports</link>
      <pubDate>Fri, 24 Mar 2006 08:30:00 GMT</pubDate>
      <dc:creator><![CDATA[jefflu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jefflu/2006/03/24/error-reporting-does-anybody-review-those-watson-reports/</guid>
      <description><![CDATA[I'm part of the group that reviews Watson reports for Team Foundation. On&nbsp;a weekly basis, we...]]></description>
      <content:encoded><![CDATA[<P><FONT style="BACKGROUND-COLOR: #ffffff" color=#000000>I'm part of the group that reviews Watson reports for Team Foundation. On&nbsp;a weekly basis, we meet and review all Watson reports received since the last review period. Each report is first checked to see if it is for a known problem. Many reports are for issues that we have either discovered from internal users or from a previous Watson report. If the issue has not been seen before, then we will gather information and assign a bug to the responsible&nbsp;developers. We also track Watson bugs and make sure that the bug is treated appropriately by the developers.</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff" color=#000000>Watson crashes represent a concrete occurrence of an issue -- sometimes, we find that the issue in a Watson report is not something that we can act on (e.g., a time-out condition) but we can handle better by informing the user or using an alternate algorithm.</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff" color=#000000>We treat problems reported through Watson seriously and I want to assure you that Team Foundation Watson reports that you permit to be sent to Microsoft will be treated appropriately and timely.</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff" color=#000000>Let me know if you have any concerns about sending Watson reports for Team Foundation.</FONT></P>]]></content:encoded>
    </item>
    <item>
      <title>(Updated) Sample: Version Control RSS Feed</title>
      <link>https://docs.microsoft.com/archive/blogs/jefflu/updated-sample-version-control-rss-feed</link>
      <pubDate>Fri, 23 Sep 2005 08:10:00 GMT</pubDate>
      <dc:creator><![CDATA[jefflu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jefflu/2005/09/23/updated-sample-version-control-rss-feed/</guid>
      <description><![CDATA[I have updated the sample RSS feed; if you're using Beta 3, you should use the updated feed posted...]]></description>
      <content:encoded><![CDATA[<P>I have updated the <STRONG>sample </STRONG>RSS feed; if you're using Beta 3, you should use the updated feed posted below. The sample was first posted <a href="https://blogs.msdn.com/jefflu/archive/2005/07/27/443900.aspx">here</A>.</P>
<P>The sample below allows you to subscribe to a feed which generates information for a specific user. Append <STRONG>?user=domain\alias </STRONG>to the subscription path.</P>
<P>&lt;%@ Page Language="c#" %&gt;<BR>&lt;%@ OutputCache Duration="20" Location="Server" VaryByParam="state" VaryByCustom="minorversion" VaryByHeader="Accept-Language"%&gt;<BR>&lt;%@ Assembly Name="Microsoft.TeamFoundation.Client, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" %&gt;<BR>&lt;%@ Assembly Name="Microsoft.TeamFoundation.VersionControl.Client, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" %&gt;<BR>&lt;%@ Assembly Name="Microsoft.TeamFoundation.VersionControl.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" %&gt;<BR>&lt;%@ Assembly Name="Microsoft.TeamFoundation.VersionControl.Common.Integration, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" %&gt;</P>
<P><BR>&lt;%<BR>// "Copyright © Microsoft Corporation.&nbsp; All rights reserved.&nbsp; These Samples are based in part on the Extensible Markup Language (XML) 1.0 (Third Edition) specification Copyright © 2004 W3C® (MIT, ERCIM, Keio. All rights reserved. <A href="https://www.w3.org/consortium/legal/2002/copyright-documents-20021231">https://www.w3.org/consortium/legal/2002/copyright-documents-20021231</A>."<BR>%&gt;</P>
<P>&lt;%<BR>//This posting is provided "AS IS" with no warranties of any kind and confers no rights.&nbsp; Use of samples included in this posting is subject to the terms specified at <A href="https://www.microsoft.com/info/cpyright.htm">https://www.microsoft.com/info/cpyright.htm</A>.<BR>%&gt;</P>
<P>&lt;%@ Import Namespace="System" %&gt;<BR>&lt;%@ Import Namespace="System.Collections" %&gt;<BR>&lt;%@ Import Namespace="System.IO" %&gt;<BR>&lt;%@ Import Namespace="System.Web" %&gt;<BR>&lt;%@ Import Namespace="System.Xml" %&gt;<BR>&lt;%@ Import Namespace="Microsoft.TeamFoundation.Client" %&gt;<BR>&lt;%@ Import Namespace="Microsoft.TeamFoundation.VersionControl.Client"%&gt;<BR>&lt;%@ Import Namespace="Microsoft.TeamFoundation.VersionControl.Common" %&gt;</P>
<P>&lt;%<BR>// Generate an RSS feed for Team Foundation Source Code Control checkins<BR>// <BR>// Note: Only one request per "pester interval" from each system will be honored. See<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pesterInterval below.<BR>//<BR>// This feed returns information about the most recent N checkins. See maxCheckinCount <BR>// below.<BR>//<BR>// Invoking this page without any parameters returns information about all Team<BR>// Foundation checkins up to the maximum count. If a filename is supplied, information<BR>// about the most recent checkins for that file only are returned. Specify a filename<BR>// by adding ?serverPath=&lt;serverPath&gt;. Note that the filename must be expressed as a server<BR>// pathname without the leading $/.<BR>//<BR>// E.g., to see the activity for a file $/teamProjectA/myFile, add this to the Url<BR>// ?serverPath=teamProjectA/myfile<BR>//<BR>// This page returns no items if the file does not exist.</P>
<P>// ***************************************************<BR>// (Default: on) Set this to true to throttle user requests by host/username<BR>// ***************************************************<BR>bool throttleRequests = true;</P>
<P>// Ignore requests from the same machine within this interval<BR>int pesterInterval = 30 * 1000; // expressed in milliseconds</P>
<P>int maxSubjectLength = 60;</P>
<P>if (throttleRequests)<BR>{<BR>&nbsp;&nbsp;&nbsp; // If the originating system has been serviced recently, drop the request<BR>&nbsp;&nbsp;&nbsp; object lastRequest = Context.Cache[User.Identity.Name+Request.UserHostAddress];<BR>&nbsp;&nbsp;&nbsp; if (lastRequest != null)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((int) lastRequest + pesterInterval &lt; Environment.TickCount)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>}</P>
<P>// Default -- everything under $/<BR>string serverPathname = VersionControlPath.RootFolder;<BR>string username = null;</P>
<P>try<BR>{<BR>&nbsp;&nbsp;&nbsp; // Check whether information on a specific file or userwas requested<BR>&nbsp;&nbsp;&nbsp; string pathname = Request.Params["serverPath"];<BR>&nbsp;&nbsp;&nbsp; if (pathname != null)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // The pathname does not contain a leading '$'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; serverPathname = VersionControlPath.Combine(VersionControlPath.RootFolder, pathname);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // The pathname is valid.<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; username = Request.Params["user"];<BR>}<BR>catch<BR>{<BR>&nbsp;&nbsp;&nbsp; Response.StatusCode = 404;<BR>&nbsp;&nbsp;&nbsp; Response.End();<BR>}</P>
<P>// The maximum number of changes to return per query<BR>int maxCheckinCount = 50;</P>
<P>string rssVersion = "2.0";<BR>string rssTtl = "5";<BR>string rssLanguage = "en-US";<BR>string rssLink = Request.Url.ToString();<BR>string rssEmptyComment = "None";<BR>string rssTitle = "Team Foundation RSS Feed for Source Code Control Checkins";<BR>string rssGenerator = "Sample RSS Feed Generator for Team Foundation";<BR>string rssDescription = "&lt;p&gt;This feed provides information on Team Foundation Checkins. Each Team Foundation checkin is manifested as a changeset. The changesets that have been created recently are listed here.&lt;/p&gt;&lt;p&gt;This feed contains the most recent &lt;i&gt;{0}&lt;/i&gt; checkin(s).&lt;/p&gt;";<BR>string rssItemOnBehalfOf = "(on behalf of {0}) ";<BR>string rssItemTitle = "Check-in {0}: {1}";<BR>string rssItemSubject = "Check-in contains changes to {0} item(s)";<BR>string rssNoItemsAvailableDescription = "An error occurred obtaining the latest checkin information from Team Foundation. Try again later.";<BR>string rssItemDescription = "&lt;p&gt;&lt;a href=\"{5}\"&gt;Changeset {0}&lt;/a&gt; was checked in by &lt;i&gt;{1} {2}&lt;/i&gt;on {3}. This checkin includes changes to {4} item(s).&lt;/p&gt;&lt;p&gt;Checkin comment: {6}&lt;/p&gt;&lt;p&gt;You can view the details of the checkin by selecting the provided link.&lt;/p&gt;";<BR>string exceptionMessage = "&lt;p&gt;An exception occurred while getting updated information from Team Foundation; the detailed exception message is &lt;i&gt;{0}&lt;/i&gt;&lt;/p&gt;";<BR>string itemNotFoundErrorMessage = "&lt;p&gt;There were no items found.&lt;/p&gt;";<BR>string accessDeniedErrorMessage = "&lt;p&gt;You do not have permission to obtain the Team Foundation checkin information.&lt;/p&gt;";<BR>string otherErrorMessage = "&lt;p&gt;An error occurred. This may be a transient error or a permanent one. Please check the event log for messages from VSTF Source Code Control&lt;/p&gt;";</P>
<P>Response.ContentType = "text/xml";<BR>XmlTextWriter xt = new XmlTextWriter(Response.OutputStream, null);<BR>// Begin creating the XML document<BR>xt.WriteStartElement("rss");<BR>xt.WriteAttributeString("version", rssVersion);<BR>xt.WriteStartElement("channel");<BR>xt.WriteElementString("title", rssTitle);<BR>xt.WriteElementString("ttl", rssTtl);<BR>xt.WriteElementString("link", rssLink);<BR>xt.WriteElementString("pubDate", DateTime.Now.ToString());<BR>xt.WriteElementString("language", rssLanguage);<BR>xt.WriteElementString("generator", rssGenerator);<BR>try<BR>{<BR>&nbsp;&nbsp;&nbsp; RecursionType recursionType = RecursionType.Full;</P>
<P><BR>&nbsp;&nbsp;&nbsp; // Obtain the list of changes from the mid-tier; the number of changes is reported in<BR>&nbsp;&nbsp;&nbsp; // the channel description. <BR>&nbsp;&nbsp;&nbsp; IEnumerable changesetEnum = null;<BR>&nbsp;&nbsp;&nbsp; try<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TeamFoundationServer Tfs = null;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; object cacheEntry = Context.Cache["TeamFoundationServer"];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (cacheEntry == null)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Note: only works on localhost<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tfs = TeamFoundationServerFactory.GetServer("<A href="https://localhost:8080/">https://localhost:8080</A>");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context.Cache["TeamFoundationServer"] = Tfs;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tfs = (TeamFoundationServer) cacheEntry;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VersionControlServer Vcs = (VersionControlServer) Tfs.GetService(typeof(VersionControlServer));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Return changes<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; changesetEnum = Vcs.QueryHistory(serverPathname,&nbsp; // on this item<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VersionSpec.Latest, // item version<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // that are not deleted<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; recursionType,&nbsp;&nbsp; // at or below this item<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; username,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // user<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; null,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // start version<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; null,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // stop version<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxCheckinCount, // Up to this many changes<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; true,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // include changes<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; false);</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int changeCount = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (Changeset change in changesetEnum)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; changeCount++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xt.WriteElementString("description", String.Format(rssDescription, changeCount));<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; catch (Exception e)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (e is ItemNotFoundException)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rssNoItemsAvailableDescription += itemNotFoundErrorMessage;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rssNoItemsAvailableDescription += otherErrorMessage;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rssNoItemsAvailableDescription += String.Format(exceptionMessage, e.Message);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xt.WriteElementString("description", rssNoItemsAvailableDescription);<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; xt.WriteEndElement(); // channel</P>
<P>&nbsp;&nbsp;&nbsp; // Create an item for each returned changeset.<BR>&nbsp;&nbsp;&nbsp; foreach (Changeset change in changesetEnum)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xt.WriteStartElement("item");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string onBehalfOf = null;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Include the committer if it differs from the changeset owner.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // This occurs when a proxy agent performs the checkin.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!change.Owner.Equals(change.Committer))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onBehalfOf = String.Format(rssItemOnBehalfOf, change.Owner);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Generate a subject based on the checkin comment<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string subject = rssEmptyComment;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!String.IsNullOrEmpty(change.Comment))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; subject = change.Comment.Trim();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int max = Math.Min(subject.Length, maxSubjectLength);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int newline = subject.IndexOf('\n', 0, max);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (newline != -1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (newline &gt; 0 &amp;&amp; subject[newline - 1] == '\r')<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; newline--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; subject = subject.Substring(0, newline);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (subject.Length &gt;= maxSubjectLength)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; subject = String.Concat(subject.Substring(0, maxSubjectLength), "...");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xt.WriteElementString("title", String.Format(rssItemTitle, change.ChangesetId, subject));</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string csLink = HttpUtility.HtmlEncode(new ChangesetUri(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String.Format("{0}://{1}:{2}",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Request.Url.Scheme,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Request.Url.Host,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Request.Url.Port),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; change.ChangesetId,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UriType.Extended).ToUrl());</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xt.WriteElementString("description", String.Format(rssItemDescription,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; change.ChangesetId,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; change.Committer,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onBehalfOf,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; change.CreationDate,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; change.Changes.Length,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; csLink,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; change.Comment));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xt.WriteElementString("link", csLink);</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xt.WriteElementString("subject", String.Format(rssItemSubject,change.Changes.Length));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xt.WriteElementString("author", onBehalfOf == null ? change.Committer : change.Owner);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xt.WriteElementString("pubDate", change.CreationDate.ToString());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xt.WriteElementString("guid", change.ChangesetId.ToString());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xt.WriteEndElement(); // item<BR>&nbsp;&nbsp;&nbsp; }<BR>}<BR>catch (Exception e)<BR>{ <BR>&nbsp;&nbsp;&nbsp; Response.StatusCode = 404;<BR>&nbsp;&nbsp;&nbsp; Response.End();<BR>}<BR>finally<BR>{<BR>&nbsp;&nbsp;&nbsp; xt.Close();<BR>&nbsp;&nbsp;&nbsp; if (throttleRequests)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context.Cache[Request.UserHostAddress] = Environment.TickCount;<BR>&nbsp;&nbsp;&nbsp; }<BR>}<BR>%&gt;<BR></P>]]></content:encoded>
    </item>
    <item>
      <title>Team Foundation: What's my server doing? (Part 2)</title>
      <link>https://docs.microsoft.com/archive/blogs/jefflu/team-foundation-whats-my-server-doing-part-2</link>
      <pubDate>Tue, 30 Aug 2005 06:54:00 GMT</pubDate>
      <dc:creator><![CDATA[jefflu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jefflu/2005/08/30/team-foundation-whats-my-server-doing-part-2/</guid>
      <description><![CDATA[In my last post, I wrote about the mechanism within Team Foundation that records web method...]]></description>
      <content:encoded><![CDATA[<P>In my last <a href="https://blogs.msdn.com/jefflu/archive/2005/08/11/450342.aspx">post</A>, I wrote about the mechanism within Team Foundation that records web method activity. You can mine the database to and learn much about how Team Foundation is being used. Recall that the web method information is written to a database so the full power of SQL queries is available.</P>
<P><STRONG><FONT face="Courier New"><FONT face="Times New Roman">List all Team Foundation activity</FONT></FONT></STRONG></P>
<P>Combine the <EM>command </EM>and <EM>parameter</EM> table (the <FONT face="Courier New">left join</FONT> is necessary since some web method rows in the command table may not record parameter information -- more on this later)</P>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
<P><FONT face="Courier New">select *<BR>from tbl_command c<BR>left join tbl_parameter p<BR>on c.commandid = p.commandid</FONT></P></BLOCKQUOTE>
<P><STRONG><FONT face="Courier New"><FONT face="Times New Roman">List all Team Foundation Version Control activity</FONT></FONT></STRONG></P>
<P>Same as the previous query with the addition of filtering on the <FONT face="Courier New">Application</FONT> column (<EM>command</EM> table).</P>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
<P><FONT face="Courier New">select *<BR>from tbl_command c<BR>left join tbl_parameter p<BR>on c.commandid = p.commandid<BR>-- Just Version Control (other choices: Data Warehouse, Integration, Work Item Tracking, Proxy)<BR>where c.Application = 'Version Control'</FONT></P></BLOCKQUOTE>
<P><STRONG><FONT face="Courier New"><FONT face="Times New Roman">Show the web methods with the longest execution time</FONT></FONT></STRONG></P>
<P>The <FONT face="Courier New">ExecutionTime</FONT> column contains the execution time, in <STRONG>microseconds</STRONG>, of the web method.</P>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
<P><FONT face="Courier New">select *<BR>from tbl_command c<BR>left join tbl_parameter p<BR>on c.commandid = p.commandid<BR>order by c.ExecutionTime desc</FONT></P></BLOCKQUOTE>
<P><STRONG><FONT face="Courier New"><FONT face="Times New Roman">Show the web methods called the most</FONT></FONT></STRONG></P>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
<P><FONT face="Courier New">select command, count (command) as TimesCalled<BR>from tbl_command c<BR>group by command<BR>order by TimesCalled desc</FONT></P></BLOCKQUOTE>
<P><STRONG><FONT face="Courier New"><FONT face="Times New Roman">Show the web method calls made by userN</FONT></FONT></STRONG></P>
<P>The <FONT face="Courier New">IdentityName</FONT> column contains the Windows account name of the caller.</P>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
<P><FONT face="Courier New">select *<BR>from tbl_command c<BR>left join tbl_parameter p<BR>on c.commandid = p.commandid<BR>-- IdentityName contains the account name of the user&nbsp;(domain\account)<BR>where c.IdentityName like '%userN%'</FONT></P></BLOCKQUOTE>
<P><STRONG><FONT face="Courier New"><FONT face="Times New Roman">Show the web method calls made from Visual Studio</FONT></FONT></STRONG></P>
<P>The <FONT face="Courier New">UserAgent</FONT> column contains the name of the executable from which the web method call originates.</P>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
<P><FONT face="Courier New">select *<BR>from tbl_command c<BR>left join tbl_parameter p<BR>on c.commandid = p.commandid<BR>-- UserAgent contains the executable name<BR>where c.Useragent like '%devenv.exe%'</FONT></P></BLOCKQUOTE>
<P dir=ltr><STRONG>Other tidbits</STRONG></P>
<UL dir=ltr>
<LI>
<DIV>Rows in the <EM>parameter </EM>table contain the <EM>commandId</EM> value of the corresponding row in the <EM>command </EM>table. Note that there may be multiple rows in the parameter table for a single command</DIV></LI>
<LI>
<DIV>Parameters are recorded when (1) An error occurs during web method execution (indicated by the <FONT face="Courier New">Status</FONT> column of the command table set to -1); (2) The web method took longer than 30 seconds to execute (recall that the <FONT face="Courier New">ExecutionTime</FONT> values are in <STRONG>microseconds</STRONG>) or (3) the Web method logging level is set to <FONT face="Courier New">All </FONT><FONT face="Times New Roman">in the <FONT face="Courier New">web.config</FONT> file.</FONT></DIV></LI></UL>]]></content:encoded>
    </item>
    <item>
      <title>Team Foundation: What's my server doing?</title>
      <link>https://docs.microsoft.com/archive/blogs/jefflu/team-foundation-whats-my-server-doing</link>
      <pubDate>Thu, 11 Aug 2005 06:45:00 GMT</pubDate>
      <dc:creator><![CDATA[jefflu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jefflu/2005/08/11/team-foundation-whats-my-server-doing/</guid>
      <description><![CDATA[We designed a mechanism to record web method activity for all of the Team Foundation web...]]></description>
      <content:encoded><![CDATA[<P><FONT style="BACKGROUND-COLOR: #c0c0c0">We designed a mechanism to record web method activity for all of the Team Foundation web applications. Information about each web method invocation is recorded in a single database.</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #c0c0c0">We don't provide any ways to get to that data -- however, if you have access to the data tier you can write a few SQL queries to see what your Team Foundation web applications are doing.</FONT></P>
<P>Web method logging is controlled by a setting in each web application's web.config file. The default configuration disables web method logging but it's pretty simple to enable it.</P>
<P>Locate each <FONT face="Courier New">web.config</FONT> file under the installation directory, i.e., <FONT face="Courier New">D:\Program Files\Microsoft Visual Studio 2005 Enterprise Server</FONT>.</P>
<P>In the &lt;appSettings&gt; section you should see something like the following:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp; <FONT face="Courier New">&lt;!--&nbsp; WEB METHOD LOGGING<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Specify whether web methods are to be logged always, never, or only<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; when errors occurs. Without a value for commandLogging, web methods<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; are not logged.&nbsp; Valid values are:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; None&nbsp;&nbsp;&nbsp;&nbsp; (web methods are never logged)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Normal&nbsp;&nbsp; (log everything, except certain high-frequency web methods)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; All&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (log everything, even certain high-frequency web methods)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OnError&nbsp; (only log web methods that have errors)</FONT></P>
<P><FONT face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Values specified here take precedence over values set administratively via<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; web method.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;add key="commandLogging" value="<FONT color=#ff0000>None</FONT>"/&gt;</FONT></P>
<P>Change <FONT face="Courier New">None</FONT> to <FONT face="Courier New">Normal</FONT> or <FONT face="Courier New">All </FONT><FONT face="Times New Roman">and web method activity will now be recorded.</FONT></P>
<P>I'll go into the details of how we collect and record the data if enough people are interested. Note that the data is spooled for a short while before it's written to the database.</P>
<P>The database (for now, it's will be renamed) is called VSTEAMSCCAdmin. There are some historical reasons for including SCC in the name; it'll be called TFSActivityLogging in the shipping product.</P>
<P>There are two tables in this database: one records information about each web method and the other contains parameter information for each web method.</P>
<P>A simple query that shows web method activity plus the parameters (SOAP parameters) is (note: the LEFT join is necessary since there may not be values from the parameter table for each command):</P>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
<P><FONT face="Courier New">select&nbsp;*<BR>from tbl_command (nolock) c<BR>left join tbl_parameter&nbsp; (nolock) p<BR>on c.commandid = p.commandid</FONT></P></BLOCKQUOTE>
<P>The <EM>command table</EM> contains information about the web method itself and includes:</P>
<UL>
<LI><EM>Command identifier </EM>A unique id used as a key in the parameter table 
<LI><EM>Application </EM>Identifies the Team Foundation Web Application servicing the web method 
<LI><EM>Command </EM>The name of the web method 
<LI><EM>StartTime </EM>When the web method was invoked 
<LI><EM>ExecutionTime </EM>How long the web method executed (<STRONG>microseconds)</STRONG> 
<LI><EM>IdentityName </EM>The user invoking the web method 
<LI><EM>IPAddress </EM>Origination of the web method execution request 
<LI><EM>UserAgent </EM>The provided user agent string (this will contain the name of the executable as well) 
<LI><EM>UniqueIdentifier </EM>(optional) When specified, this value correlates multiple web method records. E.g., a command like <EM>checkin</EM> will perform multiple web method calls. The identifier correlates the web method calls made for a specific occurrence of the command. 
<LI><EM>CommandIdentifier </EM>(optional) The name of the command-line tool that's invoking the web method (note that a single command like <EM>shelve</EM> will perform multiple web methods)</LI></UL>
<P>The <EM>parameter table </EM>is pretty straight forward -- note that parameters are <EM>conditionally reported</EM>.</P>
<UL>
<LI><EM>CommandId </EM>Correlates to an entry in the command table 
<LI><EM>ParameterName </EM>The name of the parameter 
<LI><EM>ParameterValue </EM>The value of the parameter</LI></UL>
<P>&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Version Control RSS Feed</title>
      <link>https://docs.microsoft.com/archive/blogs/jefflu/version-control-rss-feed</link>
      <pubDate>Tue, 09 Aug 2005 07:44:00 GMT</pubDate>
      <dc:creator><![CDATA[jefflu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jefflu/2005/08/09/version-control-rss-feed/</guid>
      <description><![CDATA[Recently, I wrote about a Team Foundation RSS feed. There may be a change required if you're seeing...]]></description>
      <content:encoded><![CDATA[Recently, I wrote about a <a href="https://blogs.msdn.com/jefflu/archive/2005/07/27/443900.aspx">Team Foundation RSS feed</A>. There may be a change required if you're seeing ASP.NET event log entries when your RSS reader contacts the feed complaining about the <FONT face="Courier New">UriType</FONT> (about line 194) not being recognized. Change <FONT face="Courier New">UriType</FONT> to <FONT face="Courier New">ChangesetUriType</FONT> and things should work.]]></content:encoded>
    </item>
    <item>
      <title>Team Foundation Watson Reports: We're listening</title>
      <link>https://docs.microsoft.com/archive/blogs/jefflu/team-foundation-watson-reports-were-listening</link>
      <pubDate>Fri, 05 Aug 2005 07:44:00 GMT</pubDate>
      <dc:creator><![CDATA[jefflu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jefflu/2005/08/05/team-foundation-watson-reports-were-listening/</guid>
      <description><![CDATA[We've been collecting Watson reports with the Beta 2 release. As of this week, we've created 81 bugs...]]></description>
      <content:encoded><![CDATA[<P>We've been collecting Watson reports with the Beta 2 release. As of this week, we've created 81 bugs from the Watson reports that we've received from Beta2 and internal sites. All but 2 of the bugs have been resolved.</P>
<P>Please keep those Watson reports coming to us -- we actively review, prioritize, and follow up on them.</P>
<P>-jeff</P>]]></content:encoded>
    </item>
    <item>
      <title>Sample: Version Control RSS Feed</title>
      <link>https://docs.microsoft.com/archive/blogs/jefflu/sample-version-control-rss-feed</link>
      <pubDate>Wed, 27 Jul 2005 13:23:00 GMT</pubDate>
      <dc:creator><![CDATA[jefflu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jefflu/2005/07/27/sample-version-control-rss-feed/</guid>
      <description><![CDATA[&lt;%@ Page Language="c#" %&gt;&lt;%@ OutputCache Duration="20" Location="Server"...]]></description>
      <content:encoded><![CDATA[<P>&lt;%@ Page Language="c#" %&gt;<BR>&lt;%@ OutputCache Duration="20" Location="Server" VaryByParam="state" VaryByCustom="minorversion" VaryByHeader="Accept-Language"%&gt;</P>
<P>&lt;%<BR>// "Copyright © Microsoft Corporation.&nbsp; All rights reserved.&nbsp; These Samples are based in part on the Extensible Markup Language (XML) 1.0 (Third Edition) specification Copyright © 2004 W3C® (MIT, ERCIM, Keio. All rights reserved. <A href="https://www.w3.org/consortium/legal/2002/copyright-documents-20021231">https://www.w3.org/consortium/legal/2002/copyright-documents-20021231</A>."<BR>%&gt;</P>
<P>&lt;%<BR>//This posting is provided "AS IS" with no warranties of any kind and confers no rights.&nbsp; Use of samples included in this posting is subject to the terms specified at <A href="https://www.microsoft.com/info/cpyright.htm">https://www.microsoft.com/info/cpyright.htm</A>.<BR>%&gt;</P>
<P>&lt;%@ Import Namespace="System" %&gt;<BR>&lt;%@ Import Namespace="System.Collections" %&gt;<BR>&lt;%@ Import Namespace="System.IO" %&gt;<BR>&lt;%@ Import Namespace="System.Web" %&gt;<BR>&lt;%@ Import Namespace="System.Xml" %&gt;<BR>&lt;%@ Import Namespace="Microsoft.TeamFoundation.Client" %&gt;<BR>&lt;%@ Import Namespace="Microsoft.TeamFoundation.VersionControl.Client"%&gt;<BR>&lt;%@ Import Namespace="Microsoft.TeamFoundation.VersionControl.Common" %&gt;</P>
<P>&lt;%<BR>// Generate an RSS feed for Team Foundation Source Code Control checkins<BR>// <BR>// Note: Only one request per "pester interval" from each system will be honored. See<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pesterInterval below.<BR>//<BR>// This feed returns information about the most recent N checkins. See maxCheckinCount <BR>// below.<BR>//<BR>// Invoking this page without any parameters returns information about all Team<BR>// Foundation checkins up to the maximum count. If a filename is supplied, information<BR>// about the most recent checkins for that file only are returned. Specify a filename<BR>// by adding ?serverPath=&lt;serverPath&gt;. Note that the filename must be expressed as a server<BR>// pathname without the leading $/.<BR>//<BR>// E.g., to see the activity for a file $/teamProjectA/myFile, add this to the Url<BR>// ?serverPath=teamProjectA/myfile<BR>//<BR>// This page returns no items if the file does not exist.</P>
<P>// ***************************************************<BR>// (Default: off) Set this to true to throttle user requests by host/username<BR>// ***************************************************<BR>bool throttleRequests = false;</P>
<P>// Ignore requests from the same machine within this interval<BR>int pesterInterval = 30 * 1000; // expressed in milliseconds</P>
<P>if (throttleRequests)<BR>{<BR>&nbsp;&nbsp;&nbsp; // If the originating system has been serviced recently, drop the request<BR>&nbsp;&nbsp;&nbsp; object lastRequest = Context.Cache[User.Identity.Name+Request.UserHostAddress];<BR>&nbsp;&nbsp;&nbsp; if (lastRequest != null)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((int) lastRequest + pesterInterval &lt; Environment.TickCount)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>}</P>
<P>// Default -- everything under $/<BR>string serverPathname = VersionControlPath.RootFolder;</P>
<P>try<BR>{<BR>&nbsp;&nbsp;&nbsp; // Check whether information on a specific file was requested<BR>&nbsp;&nbsp;&nbsp; string pathname = Request.Params["serverPath"];<BR>&nbsp;&nbsp;&nbsp; if (pathname != null)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // The pathname does not contain a leading '$'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; serverPathname = VersionControlPath.Combine(VersionControlPath.RootFolder, pathname);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // The pathname is valid.<BR>&nbsp;&nbsp;&nbsp; }<BR>}<BR>catch<BR>{<BR>&nbsp;&nbsp;&nbsp; Response.StatusCode = 404;<BR>&nbsp;&nbsp;&nbsp; Response.End();<BR>}</P>
<P>// The maximum number of changes to return per query<BR>int maxCheckinCount = 50;</P>
<P>string rssVersion = "2.0";<BR>string rssTtl = "5";<BR>string rssLanguage = "en-US";<BR>string rssLink = Request.Url.ToString();<BR>string rssTitle = "Team Foundation RSS Feed for Source Code Control Checkins";<BR>string rssGenerator = "Sample RSS Feed Generator for Team Foundation";<BR>string rssDescription = "&lt;p&gt;This feed provides information on Team Foundation Checkins. Each Team Foundation checkin is manifested as a changeset. The changesets that have been created recently are listed here.&lt;/p&gt;&lt;p&gt;This feed contains the most recent &lt;i&gt;{0}&lt;/i&gt; checkin(s).&lt;/p&gt;";<BR>string rssItemOnBehalfOf = "(on behalf of {0}) ";<BR>string rssItemTitle = "Checkin {0} [{1} items]";<BR>string rssNoItemsAvailableDescription = "An error occurred obtaining the latest checkin information from Team Foundation. Try again later.";<BR>string rssItemDescription = "&lt;p&gt;&lt;a href=\"{5}\"&gt;Changeset {0}&lt;/a&gt; was checked in by &lt;i&gt;{1} {2}&lt;/i&gt;on {3}. This checkin includes changes to {4} item(s).&lt;/p&gt;&lt;p&gt;You can view the details of the checkin by selecting the provided link.&lt;/p&gt;.";<BR>string exceptionMessage = "&lt;p&gt;An exception occurred while getting updated information from Team Foundation; the detailed exception message is &lt;i&gt;{0}&lt;/i&gt;&lt;/p&gt;";<BR>string itemNotFoundErrorMessage = "&lt;p&gt;There were no items found.&lt;/p&gt;";<BR>string accessDeniedErrorMessage = "&lt;p&gt;You do not have permission to obtain the Team Foundation checkin information.&lt;/p&gt;";<BR>string otherErrorMessage = "&lt;p&gt;An error occurred. This may be a transient error or a permanent one. Please check the event log for messages from VSTF Source Code Control&lt;/p&gt;";</P>
<P>Response.ContentType = "text/xml";<BR>XmlTextWriter xt = new XmlTextWriter(Response.OutputStream, null);<BR>// Begin creating the XML document<BR>xt.WriteStartElement("rss");<BR>xt.WriteAttributeString("version", rssVersion);<BR>xt.WriteStartElement("channel");<BR>xt.WriteElementString("title", rssTitle);<BR>xt.WriteElementString("ttl", rssTtl);<BR>xt.WriteElementString("link", rssLink);<BR>xt.WriteElementString("pubDate", DateTime.Now.ToString());<BR>xt.WriteElementString("language", rssLanguage);<BR>xt.WriteElementString("generator", rssGenerator);<BR>try<BR>{<BR>&nbsp;&nbsp;&nbsp; RecursionType recursionType = RecursionType.Full;</P>
<P><BR>&nbsp;&nbsp;&nbsp; // Obtain the list of changes from the mid-tier; the number of changes is reported in<BR>&nbsp;&nbsp;&nbsp; // the channel description. <BR>&nbsp;&nbsp;&nbsp; IEnumerable changesetEnum = null;<BR>&nbsp;&nbsp;&nbsp; try<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TeamFoundationServer Tfs = null;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; object cacheEntry = Context.Cache["TeamFoundationServer"];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (cacheEntry == null)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Note: only works on localhost<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tfs = new TeamFoundationServer("<A href="https://localhost:8080">https://localhost:8080</A>");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context.Cache["TeamFoundationServer"] = Tfs;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tfs = (TeamFoundationServer) cacheEntry;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VersionControlServer Vcs = (VersionControlServer) Tfs.GetService(typeof(VersionControlServer));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Return changes<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; changesetEnum = Vcs.QueryHistory(serverPathname,&nbsp; // on this item<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VersionSpec.Latest, // item version<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // that are not deleted<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; recursionType,&nbsp;&nbsp; // at or below this item<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; null,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // user<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; null,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // start version<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; null,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // stop version<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxCheckinCount, // Up to this many changes<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; true,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // include changes<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; false);</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int changeCount = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (Changeset change in changesetEnum)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; changeCount++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xt.WriteElementString("description", String.Format(rssDescription, changeCount));<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; catch (Exception e)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (e is ItemNotFoundException)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rssNoItemsAvailableDescription += itemNotFoundErrorMessage;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rssNoItemsAvailableDescription += otherErrorMessage;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rssNoItemsAvailableDescription += String.Format(exceptionMessage, e.Message);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xt.WriteElementString("description", rssNoItemsAvailableDescription);<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; xt.WriteEndElement(); // channel</P>
<P>&nbsp;&nbsp;&nbsp; // Create an item for each returned changeset.<BR>&nbsp;&nbsp;&nbsp; foreach (Changeset change in changesetEnum)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xt.WriteStartElement("item");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string onBehalfOf = null;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Include the committer if it differs from the changeset owner.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // This occurs when a proxy agent performs the checkin.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!change.Owner.Equals(change.Committer))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onBehalfOf = String.Format(rssItemOnBehalfOf, change.Owner);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xt.WriteElementString("title", String.Format(rssItemTitle,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; change.ChangesetId,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; change.Changes.Length));</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string csLink = HttpUtility.HtmlEncode(new ChangesetUri(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String.Format("{0}://{1}:{2}",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Request.Url.Scheme,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Request.Url.Host,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Request.Url.Port),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; change.ChangesetId,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UriType.Extended).ToUrl());</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xt.WriteElementString("description", String.Format(rssItemDescription,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; change.ChangesetId,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; change.Committer,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onBehalfOf,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; change.CreationDate,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; change.Changes.Length,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; csLink));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xt.WriteElementString("link", csLink);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xt.WriteElementString("author", onBehalfOf == null ? change.Owner : change.Committer);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xt.WriteElementString("pubDate", change.CreationDate.ToString());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xt.WriteElementString("guid", change.ChangesetId.ToString());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xt.WriteEndElement(); // item<BR>&nbsp;&nbsp;&nbsp; }<BR>}<BR>catch (Exception e)<BR>{ <BR>&nbsp;&nbsp;&nbsp; Response.StatusCode = 404;<BR>&nbsp;&nbsp;&nbsp; Response.End();<BR>}<BR>finally<BR>{<BR>&nbsp;&nbsp;&nbsp; xt.Close();<BR>&nbsp;&nbsp;&nbsp; if (throttleRequests)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context.Cache[Request.UserHostAddress] = Environment.TickCount;<BR>&nbsp;&nbsp;&nbsp; }<BR>}<BR>%&gt;<BR></P>]]></content:encoded>
    </item>
    <item>
      <title>Part 3: What's my source control server doing? A RSS feed to keep track of checkins</title>
      <link>https://docs.microsoft.com/archive/blogs/jefflu/part-3-whats-my-source-control-server-doing-a-rss-feed-to-keep-track-of-checkins</link>
      <pubDate>Fri, 22 Jul 2005 06:40:00 GMT</pubDate>
      <dc:creator><![CDATA[jefflu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jefflu/2005/07/22/part-3-whats-my-source-control-server-doing-a-rss-feed-to-keep-track-of-checkins/</guid>
      <description><![CDATA[I haven't forgotten about the RSS feed generator. There were some issues that I needed to resolve...]]></description>
      <content:encoded><![CDATA[<P><SPAN style="BACKGROUND: silver; COLOR: windowtext">I haven't forgotten about the RSS feed generator. There were some issues that I needed to resolve with the sample code before it can be released; this required a few changes -- these include:</SPAN><SPAN style="COLOR: windowtext"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<UL type=disc>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list .5in; mso-list: l0 level1 lfo1"><SPAN style="BACKGROUND: silver">Instead of using public methods in the Version Control server assemblies, the Version Control Client Object Model (OM) is used instead. The <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><st1:place w:st="on">OM</st1:place> supports a rich API and is the intended, suggested, and supported way by which applications interact with Team Foundation. </SPAN><o:p></o:p>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list .5in; mso-list: l0 level1 lfo1"><SPAN style="BACKGROUND: silver">You should note that the RSS feed generator is <STRONG><I>a sample</I></STRONG><EM> and is provided "</EM><STRONG><I>AS IS". </I></STRONG>The file contains the disclaimers and copyright notice.</SPAN><o:p></o:p></LI></UL>
<P><FONT color=#666666><STRONG><SPAN style="BACKGROUND: silver">Caveats</SPAN></STRONG><o:p></o:p></FONT></P>
<UL type=disc>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list .5in; mso-list: l1 level1 lfo2"><SPAN style="BACKGROUND: silver">This posting is provided "AS IS" with no warranties of any kind and confers no rights.&nbsp; Use of samples included in this posting is subject to the terms specified at <A href="https://www.microsoft.com/info/cpyright.htm">https://www.microsoft.com/info/cpyright.htm</A>.</SPAN> <o:p></o:p>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list .5in; mso-list: l1 level1 lfo2"><SPAN style="BACKGROUND: silver">It may not work with the RSS reader that you're using (I've been using <EM>SharpReader</EM>). </SPAN><o:p></o:p>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list .5in; mso-list: l1 level1 lfo2"><SPAN style="BACKGROUND: silver">It may not work with your environment.</SPAN> <o:p></o:p>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list .5in; mso-list: l1 level1 lfo2"><SPAN style="BACKGROUND: silver">I have verified that it will work with our upcoming CTP. Changes made to Team Foundation subsequent may be incompatible with the RSS feed generator.</SPAN> <o:p></o:p>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list .5in; mso-list: l1 level1 lfo2"><SPAN style="BACKGROUND: silver">The RSS feed generator uses the credentials of the client invoking it to obtain information about checkins (<STRONG>read </STRONG>access to at least one item in the changeset is required to obtain information about the changeset). </SPAN><o:p></o:p></LI></UL>
<P><FONT color=#666666><STRONG><SPAN style="BACKGROUND: silver">RSS Feed Generator Features</SPAN></STRONG><o:p></o:p></FONT></P>
<UL type=disc>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list .5in; mso-list: l2 level1 lfo3"><EM><B><SPAN style="BACKGROUND: silver">User throttle:</SPAN></B></EM><SPAN style="BACKGROUND: silver"> Within a 30-second interval, only the first request from each user is serviced (duplicate requests are ignored). You can disable this behavior by setting </SPAN><SPAN style="BACKGROUND: silver; FONT-FAMILY: 'Courier New'">throttleRequests</SPAN><SPAN style="BACKGROUND: silver"> to false. The interval is determined by </SPAN><SPAN style="BACKGROUND: silver; FONT-FAMILY: 'Courier New'">pesterInterval</SPAN><SPAN style="BACKGROUND: silver">.</SPAN> <o:p></o:p>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list .5in; mso-list: l2 level1 lfo3"><EM><B><SPAN style="BACKGROUND: silver">Path-specific subscriptions</SPAN></B></EM><STRONG><SPAN style="BACKGROUND: silver">: </SPAN></STRONG><SPAN style="BACKGROUND: silver">You can include a <EM>server path (e.g., $/teamProject/somePathOfInterest) </EM>to subscribe to only the area(s) of interest. If server path specifies a folder, than any changes at or below that folder are included in the feed. If server path specifies a file, only changes to that file are in the feed. The default server path is the folder </SPAN><SPAN style="BACKGROUND: silver; FONT-FAMILY: 'Courier New'">$/</SPAN> <o:p></o:p>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list .5in; mso-list: l2 level1 lfo3"><STRONG><I>Security</I></STRONG><EM>: </EM>The caller's credentials are used to obtain information about checkin activity. The links returned in the feed are for <EM>changeset webviews.</EM><o:p></o:p></LI></UL>
<P><FONT color=#666666><STRONG>Example</STRONG><o:p></o:p></FONT></P>
<P><SPAN style="COLOR: windowtext">Each checkin is represented by an individual item in the feed; e.g., this is information about the 3rd checkin:<o:p></o:p></SPAN></P>
<P><SPAN style="COLOR: windowtext"><A href="https://jefflu-test:8080/VersionControl/Changeset.aspx?artifactMoniker=3&amp;webView=1"><SPAN style="COLOR: windowtext">Changeset 3</SPAN></A> was checked in by <I>DOMAIN\user </I>on 7/21/2005 12:56:05 PM. This checkin includes changes to 15 item(s).<o:p></o:p></SPAN></P>
<P><SPAN style="COLOR: windowtext">You can view the details of the checkin by selecting the provided link.<o:p></o:p></SPAN></P>
<P><SPAN style="COLOR: windowtext">Selecting the changeset link will display the webview of that changeset:<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><A title="Check-in 3: fsdfsadf" href="https://jefflu-test:8080/VersionControl/Changeset.aspx?artifactMoniker=3&amp;webView=1"><B>Check-in 3: fsdfsadf</B></A> <o:p></o:p></P>
<P><BR><FONT color=#666666><B>Summary</B> <o:p></o:p></FONT></P>
<TABLE class=MsoNormalTable style="WIDTH: 90%; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 width="90%" border=0>
<TBODY>
<TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes">
<TD style="BORDER-RIGHT: #ffffff; PADDING-RIGHT: 0.75pt; BORDER-TOP: #ffffff; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #ffffff; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #ffffff; BACKGROUND-COLOR: transparent" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">Team Project(s):<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #ffffff; PADDING-RIGHT: 0.75pt; BORDER-TOP: #ffffff; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #ffffff; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #ffffff; BACKGROUND-COLOR: transparent" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">507211250<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 1">
<TD style="BORDER-RIGHT: #ffffff; PADDING-RIGHT: 0.75pt; BORDER-TOP: #ffffff; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #ffffff; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #ffffff; BACKGROUND-COLOR: transparent" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">Checked in by:<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #ffffff; PADDING-RIGHT: 0.75pt; BORDER-TOP: #ffffff; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #ffffff; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #ffffff; BACKGROUND-COLOR: transparent" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">user<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 2">
<TD style="BORDER-RIGHT: #ffffff; PADDING-RIGHT: 0.75pt; BORDER-TOP: #ffffff; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #ffffff; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #ffffff; BACKGROUND-COLOR: transparent" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">Checked in on:<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #ffffff; PADDING-RIGHT: 0.75pt; BORDER-TOP: #ffffff; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #ffffff; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #ffffff; BACKGROUND-COLOR: transparent" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">7/21/2005 12:56:05 PM<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 3">
<TD style="BORDER-RIGHT: #ffffff; PADDING-RIGHT: 0.75pt; BORDER-TOP: #ffffff; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #ffffff; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #ffffff; BACKGROUND-COLOR: transparent" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">Code Reviewer:<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #ffffff; PADDING-RIGHT: 0.75pt; BORDER-TOP: #ffffff; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #ffffff; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #ffffff; BACKGROUND-COLOR: transparent" vAlign=top width="35%"><PRE><FONT size=2><FONT face=Verdana>None<o:p></o:p></FONT></FONT></PRE></TD></TR>
<TR style="mso-yfti-irow: 4">
<TD style="BORDER-RIGHT: #ffffff; PADDING-RIGHT: 0.75pt; BORDER-TOP: #ffffff; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #ffffff; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #ffffff; BACKGROUND-COLOR: transparent" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">Performance Reviewer:<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #ffffff; PADDING-RIGHT: 0.75pt; BORDER-TOP: #ffffff; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #ffffff; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #ffffff; BACKGROUND-COLOR: transparent" vAlign=top width="35%"><PRE><FONT size=2><FONT face=Verdana>None<o:p></o:p></FONT></FONT></PRE></TD></TR>
<TR style="mso-yfti-irow: 5">
<TD style="BORDER-RIGHT: #ffffff; PADDING-RIGHT: 0.75pt; BORDER-TOP: #ffffff; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #ffffff; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #ffffff; BACKGROUND-COLOR: transparent" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">Security Reviewer:<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #ffffff; PADDING-RIGHT: 0.75pt; BORDER-TOP: #ffffff; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #ffffff; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #ffffff; BACKGROUND-COLOR: transparent" vAlign=top width="35%"><PRE><FONT size=2><FONT face=Verdana>None<o:p></o:p></FONT></FONT></PRE></TD></TR>
<TR style="mso-yfti-irow: 6; mso-yfti-lastrow: yes">
<TD style="BORDER-RIGHT: #ffffff; PADDING-RIGHT: 0.75pt; BORDER-TOP: #ffffff; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #ffffff; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #ffffff; BACKGROUND-COLOR: transparent" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">Comment:<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #ffffff; PADDING-RIGHT: 0.75pt; BORDER-TOP: #ffffff; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #ffffff; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #ffffff; BACKGROUND-COLOR: transparent" vAlign=top width="35%"><PRE><FONT size=2><FONT face=Verdana>fsdfsadf<o:p></o:p></FONT></FONT></PRE></TD></TR></TBODY></TABLE>
<P><BR><FONT color=#666666><B>Resolved Work Items</B> <o:p></o:p></FONT></P>
<TABLE class=MsoNormalTable style="BORDER-RIGHT: #f1efe2 1pt solid; BORDER-TOP: #f1efe2 1pt solid; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 90%; BORDER-BOTTOM: #f1efe2 1pt solid; mso-cellspacing: 1.5pt; mso-border-alt: solid #F1EFE2 .75pt" cellPadding=0 width="90%" border=1>
<TBODY>
<TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes">
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; BACKGROUND: #f1efe2; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">Type<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; BACKGROUND: #f1efe2; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 5%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="5%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">ID<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; BACKGROUND: #f1efe2; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">Title<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; BACKGROUND: #f1efe2; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">Status<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; BACKGROUND: #f1efe2; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">Assigned To<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 1">
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">Task<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 5%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="5%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt"><A title=1 href="https://jefflu-test:8080/WorkItemTracking/WorkItem.aspx?artifactMoniker=1">1</A><o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">Setup: Set Permissions<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">Closed<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">jefflu<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 2; mso-yfti-lastrow: yes">
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">Task<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 5%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="5%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt"><A title=2 href="https://jefflu-test:8080/WorkItemTracking/WorkItem.aspx?artifactMoniker=2">2</A><o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">Setup: Migration of Source Code<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">Closed<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">jefflu<o:p></o:p></SPAN></P></TD></TR></TBODY></TABLE>
<P><BR><FONT color=#666666><B>Items</B> <o:p></o:p></FONT></P>
<TABLE class=MsoNormalTable style="BORDER-RIGHT: #f1efe2 1pt solid; BORDER-TOP: #f1efe2 1pt solid; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 90%; BORDER-BOTTOM: #f1efe2 1pt solid; mso-cellspacing: 1.5pt; mso-border-alt: solid #F1EFE2 .75pt" cellPadding=0 width="90%" border=1>
<TBODY>
<TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes">
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; BACKGROUND: #f1efe2; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">Name<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; BACKGROUND: #f1efe2; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">Change<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; BACKGROUND: #f1efe2; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">Folder<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 1">
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt"><A title=WindowsApplication52 href="https://jefflu-test:8080/VersionControl/VersionedItem.aspx?artifactMoniker=jefflu507211250%2fWindowsApplication52%26changesetVersion%3d3%26deletionId%3d0%26webView%3d1">WindowsApplication52</A><o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">add<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">$/jefflu507211250<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 2">
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt"><A title=WindowsApplication52.sln href="https://jefflu-test:8080/VersionControl/VersionedItem.aspx?artifactMoniker=jefflu507211250%2fWindowsApplication52%2fWindowsApplication52.sln%26changesetVersion%3d3%26deletionId%3d0%26webView%3d1">WindowsApplication52.sln</A><o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">add<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">$/jefflu507211250/WindowsApplication52<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 3">
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt"><A title=WindowsApplication52.vssscc href="https://jefflu-test:8080/VersionControl/VersionedItem.aspx?artifactMoniker=jefflu507211250%2fWindowsApplication52%2fWindowsApplication52.vssscc%26changesetVersion%3d3%26deletionId%3d0%26webView%3d1">WindowsApplication52.vssscc</A><o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">add<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">$/jefflu507211250/WindowsApplication52<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 4">
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt"><A title=WindowsApplication52 href="https://jefflu-test:8080/VersionControl/VersionedItem.aspx?artifactMoniker=jefflu507211250%2fWindowsApplication52%2fWindowsApplication52%26changesetVersion%3d3%26deletionId%3d0%26webView%3d1">WindowsApplication52</A><o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">add<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">$/jefflu507211250/WindowsApplication52<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 5">
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt"><A title=Form1.cs href="https://jefflu-test:8080/VersionControl/VersionedItem.aspx?artifactMoniker=jefflu507211250%2fWindowsApplication52%2fWindowsApplication52%2fForm1.cs%26changesetVersion%3d3%26deletionId%3d0%26webView%3d1">Form1.cs</A><o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">add<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">$/jefflu507211250/WindowsApplication52/WindowsApplication52<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 6">
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt"><A title=Form1.Designer.cs href="https://jefflu-test:8080/VersionControl/VersionedItem.aspx?artifactMoniker=jefflu507211250%2fWindowsApplication52%2fWindowsApplication52%2fForm1.Designer.cs%26changesetVersion%3d3%26deletionId%3d0%26webView%3d1">Form1.Designer.cs</A><o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">add<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">$/jefflu507211250/WindowsApplication52/WindowsApplication52<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 7">
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt"><A title=Program.cs href="https://jefflu-test:8080/VersionControl/VersionedItem.aspx?artifactMoniker=jefflu507211250%2fWindowsApplication52%2fWindowsApplication52%2fProgram.cs%26changesetVersion%3d3%26deletionId%3d0%26webView%3d1">Program.cs</A><o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">add<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">$/jefflu507211250/WindowsApplication52/WindowsApplication52<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 8">
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt"><A title=Properties href="https://jefflu-test:8080/VersionControl/VersionedItem.aspx?artifactMoniker=jefflu507211250%2fWindowsApplication52%2fWindowsApplication52%2fProperties%26changesetVersion%3d3%26deletionId%3d0%26webView%3d1">Properties</A><o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">add<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">$/jefflu507211250/WindowsApplication52/WindowsApplication52<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 9">
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt"><A title=AssemblyInfo.cs href="https://jefflu-test:8080/VersionControl/VersionedItem.aspx?artifactMoniker=jefflu507211250%2fWindowsApplication52%2fWindowsApplication52%2fProperties%2fAssemblyInfo.cs%26changesetVersion%3d3%26deletionId%3d0%26webView%3d1">AssemblyInfo.cs</A><o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">add<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">$/jefflu507211250/WindowsApplication52/WindowsApplication52/Properties<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 10">
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt"><A title=Resources.Designer.cs href="https://jefflu-test:8080/VersionControl/VersionedItem.aspx?artifactMoniker=jefflu507211250%2fWindowsApplication52%2fWindowsApplication52%2fProperties%2fResources.Designer.cs%26changesetVersion%3d3%26deletionId%3d0%26webView%3d1">Resources.Designer.cs</A><o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">add<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">$/jefflu507211250/WindowsApplication52/WindowsApplication52/Properties<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 11">
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt"><A title=Resources.resx href="https://jefflu-test:8080/VersionControl/VersionedItem.aspx?artifactMoniker=jefflu507211250%2fWindowsApplication52%2fWindowsApplication52%2fProperties%2fResources.resx%26changesetVersion%3d3%26deletionId%3d0%26webView%3d1">Resources.resx</A><o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">add<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">$/jefflu507211250/WindowsApplication52/WindowsApplication52/Properties<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 12">
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt"><A title=Settings.Designer.cs href="https://jefflu-test:8080/VersionControl/VersionedItem.aspx?artifactMoniker=jefflu507211250%2fWindowsApplication52%2fWindowsApplication52%2fProperties%2fSettings.Designer.cs%26changesetVersion%3d3%26deletionId%3d0%26webView%3d1">Settings.Designer.cs</A><o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">add<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">$/jefflu507211250/WindowsApplication52/WindowsApplication52/Properties<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 13">
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt"><A title=Settings.settings href="https://jefflu-test:8080/VersionControl/VersionedItem.aspx?artifactMoniker=jefflu507211250%2fWindowsApplication52%2fWindowsApplication52%2fProperties%2fSettings.settings%26changesetVersion%3d3%26deletionId%3d0%26webView%3d1">Settings.settings</A><o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">add<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">$/jefflu507211250/WindowsApplication52/WindowsApplication52/Properties<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 14">
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt"><A title=WindowsApplication52.csproj.vspscc href="https://jefflu-test:8080/VersionControl/VersionedItem.aspx?artifactMoniker=jefflu507211250%2fWindowsApplication52%2fWindowsApplication52%2fWindowsApplication52.csproj.vspscc%26changesetVersion%3d3%26deletionId%3d0%26webView%3d1">WindowsApplication52.csproj.vspscc</A><o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">add<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">$/jefflu507211250/WindowsApplication52/WindowsApplication52<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 15; mso-yfti-lastrow: yes">
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt"><A title=WindowsApplication52.csproj href="https://jefflu-test:8080/VersionControl/VersionedItem.aspx?artifactMoniker=jefflu507211250%2fWindowsApplication52%2fWindowsApplication52%2fWindowsApplication52.csproj%26changesetVersion%3d3%26deletionId%3d0%26webView%3d1">WindowsApplication52.csproj</A><o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 10%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="10%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">add<o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #f1efe2 1pt solid; PADDING-RIGHT: 0.75pt; BORDER-TOP: #f1efe2 1pt solid; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #f1efe2 1pt solid; WIDTH: 35%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #f1efe2 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid #F1EFE2 .75pt" vAlign=top width="35%">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt">$/jefflu507211250/WindowsApplication52/WindowsApplication52<o:p></o:p></SPAN></P></TD></TR></TBODY></TABLE>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 7.5pt"><BR>Notes: <BR>- All dates and times are shown in Eastern Daylight Time (GMT -04:00:00).<BR>Provided by <A title="Microsoft Visual Studio® 2005 Team System" href="https://msdn.microsoft.com/vstudio/teamsystem/">Microsoft Visual Studio® 2005 Team System</A><o:p></o:p></SPAN></P>
<P><FONT color=#666666><STRONG><SPAN style="BACKGROUND: silver">Installation</SPAN></STRONG><o:p></o:p></FONT></P>
<P><SPAN style="BACKGROUND: silver; COLOR: windowtext">The RSS feed generator is a .ASPX file so all you need to do is copy the file under the Version Control subdirectory and then subscribe to the feed. The following example assumes that Team Foundation is using port </SPAN><SPAN style="BACKGROUND: silver; COLOR: windowtext; FONT-FAMILY: 'Courier New'">8080</SPAN><SPAN style="BACKGROUND: silver; COLOR: windowtext"> (default). </SPAN><SPAN style="BACKGROUND: silver; COLOR: windowtext; FONT-FAMILY: 'Courier New'">'SCC'</SPAN><SPAN style="BACKGROUND: silver; COLOR: windowtext"> is the name of the Version Control web application (you can view the web site layout using </SPAN><SPAN style="BACKGROUND: silver; COLOR: windowtext; FONT-FAMILY: 'Courier New'">inetmgr</SPAN><SPAN style="BACKGROUND: silver; COLOR: windowtext">). </SPAN><SPAN style="COLOR: windowtext"><o:p></o:p></SPAN></P>
<P><SPAN style="BACKGROUND: silver; COLOR: windowtext">To install and subscribe to the feedFor example,</SPAN><SPAN style="COLOR: windowtext"><o:p></o:p></SPAN></P>
<P><SPAN style="COLOR: windowtext">&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="BACKGROUND: silver; COLOR: windowtext; FONT-FAMILY: 'Courier New'">copy CheckinRssFeed.aspx %ProgramFiles%\Microsoft Visual Studio 2005 Enterprise Server\HATIISDIR</SPAN><SPAN style="COLOR: windowtext"><o:p></o:p></SPAN></P>
<P><SPAN style="BACKGROUND: silver; COLOR: windowtext">Using your RSS reader, subscribe to</SPAN><SPAN style="BACKGROUND: silver"><FONT color=#666666> </FONT><A href="https://machine:8080/SCC/CheckinRssFeed.aspx"><SPAN style="FONT-FAMILY: 'Courier New'">https://machine:8080/SCC/CheckinRssFeed.aspx</SPAN></A></SPAN><o:p></o:p></P>
<P><FONT color=#666666>&nbsp;<o:p></o:p></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>]]></content:encoded>
    </item>
    <item>
      <title>Why we want Watson reports</title>
      <link>https://docs.microsoft.com/archive/blogs/jefflu/why-we-want-watson-reports</link>
      <pubDate>Tue, 26 Apr 2005 05:19:00 GMT</pubDate>
      <dc:creator><![CDATA[jefflu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jefflu/2005/04/26/why-we-want-watson-reports/</guid>
      <description><![CDATA[One of the features we added to the mid-tier web services was the ability to create and file reports...]]></description>
      <content:encoded><![CDATA[<P>One of the features we added to the mid-tier web services was the ability to create and file reports when error and/or unexpected conditions occur. When these happen, a information about the condition is gathered and then a report is filed with the Watson reporting mechanism.</P>
<P>The next time an administrator logs in to the mid-tier machine, the Watson reporting UI should appear asking if you want to send the queued reports. Please consider doing so -- we really need this information to see what kind of real-world problems are occurring. We include information about the error condition and stack trace of the thread active when the condition occurred in the report.</P>
<P>You might wonder what happens to the Watson reports that are sent to Microsoft. Each week, the Team Foundation Watson Review team (a representative from the test organization and myself) review the Watson report that arrived in the last week. We focus on the newly arriving Watson reports and the reports that have been reported the most. We used to investigate only the top 10 reports (as measured by our internal Watson tool) but have now extended our focus to the top 60 or so (we look at any report that has been reported more than a few times).</P>
<P>We look at reports from Beta 2 deployments and some other key deployments or test beds that are internal to Microsoft.</P>
<P>After we investigate the set of Watson reports, we send a summarization that includes the Watson report, status, the bug (if any -- many problems have already been fixed) details, and the developer responsible for fixing it. This summarization gets wide visibility by design -- we even send it to our PUM's boss. I'm happy&nbsp; to report that we've been making great progress in fixing issues illustrated by the Watson process.</P>
<P>One more thing -- and I can't stress this enough -- we really do look at the Watson reports that we receive and make every attempt to correct the issue(s) that are contained in the report. Please continue to allow the reports to be sent.<BR></P>]]></content:encoded>
    </item>
  </channel>
</rss>