Monad version of "find changesets with overrides"


I already made the C# version but since I had made the Team Foundation Version Control provider for Monad last weekend (hopefully it can be a powertoy soon), I wanted to make a Monad version of this – one of the primary reasons is flexibility – once you have a script that just filters it down to the Changeset objects for you, you can do what you want – spit it out to excel, xml, a table, a list, whatever.


As with all Monad scripts I’ve seen so far, it’s scary easy.


function find_overrides($server, $path)
{
    $tfs = [Microsoft.TeamFoundation.Client.TeamFoundationServerFactory]::GetServer($server);
    $vcs = $tfs.GetService([Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer]);


    $vcs.QueryHistory($path,
                      [Microsoft.TeamFoundation.VersionControl.Client.VersionSpec]::Latest,
                      0,
                      [Microsoft.TeamFoundation.VersionControl.Client.RecursionType]::Full,
                      $null,
                      $null,
                      $null,
                      [int]::MaxValue,
                      $false,
                      $false) | where-object { $_.PolicyOverride.PolicyFailures.Length -gt 0 }
}


Now with this function I can do something like (wither either local or server path) “find_overrides tkbgitvstsat01 D:\task1\vset\SCM\SourceControl\CommandLine” and get an actual stream of Changeset objects (in this case, the same one mentioned in the C#-version post).  Then I have more freedom than the C# app afforded me – I can count them, display them, whatever – the default of just showing them formatted is pretty nice too 🙂


ArtifactUri          : vstfs:///VersionControl/Changeset/7662
[snip]
Comment              : vstf rtm branch: vset directory
[snip]
PolicyOverride       : PolicyOverrideInfo instance 30360532
                         Comment: new branch
                         PolicyFailures: [2]PolicyFailureInfo instance 46367007
                         PolicyName: [Invalid Policy]
                         Message: Internal error in Dogfood Policy
                       , PolicyFailureInfo instance 50041622
                         PolicyName: Work Items
                         Message: You must associate this check-in with one or
                       more work items.
Committer            : REDMOND\jeffbe
CreationDate         : 8/10/2005 1:25:42 AM
ChangesetId          : 7662
Owner                : REDMOND\jeffbe


Comments (2)

  1. While it’s rough and I’m sure could use some work, the TFVC provider I mentioned back in November is…