Return to Snippet

Revision: 48797
at July 9, 2011 08:48 by michanne


Initial Code
Add-pssnapin microsoft.teamfoundation.powershell
#snapin from http://pstfs.codeplex.com/
add-pssnapin ServerTFSPSSnapIn
cls ;

#variables
$destPath = "$env:USERPROFILE\My Documents\_Development\TFS_Scripts\LeftOnly.txt"
$TFserver = "localhost"
$serverpathL = "$/Data Warehouse/D4.0"
$serverpathR = "$/Data Warehouse/D5.0"
[datetime]$startDate = "1/1/2011"
$tfs = get-tfsServer $TFserver

$item = (get-diff -tfs $tfs -pathl $serverpathL -pathr $serverpathR ) |foreach{$_|?{($_.TypeDiff -eq 'Diff' -or $_.TypeDiff -eq 'LeftOnly') -and $_.DateCheckInL -ge $startDate }}

#Left only Files (Basically the same logic for RightOnly)
if (test-path $DestPath) {del $DestPath}

$left = $item | select information,DateCheckInL, TypeDiff, ItemL |?{$_.TypeDiff -eq 'LeftOnly'} |sort DateCheckInL -descending
"Owner`tChangeSetID`tDateCheckedIn`tServerItem"|set-content $DestPath
foreach($l in $left) {
   $serverItem = $l.Information
   $DateCheckedIn = ($l.DateCheckInL).tostring()
   $ChangeSetID = $L.ItemL.ChangeSetID
   $owner = (get-tfsItemhistory $serverItem -server $tfServer -stopafter 1).Owner
   "$owner`t$ChangeSetID`t$DateCheckedIn`t$serverItem"|add-content $DestPath
}
#get-content $DestPath

#Diff Files
$destPath = "$env:USERPROFILE\My Documents\_Development\TFS_Scripts\Diff.txt"

$diff = (get-diff -tfs $tfs -pathl $serverpathL -pathr $serverpathR) |foreach{$_|?{$_.TypeDiff -eq 'Diff' -and $_.DateCheckInL -ge $startDate -and $_.DateCheckInL -gt $_.DateCheckInR }}|sort DateCheckInL -descending

if (test-path $DestPath) {del $DestPath}

"Owner`tD4_ChangeSetID`tD4_DateCheckedIn`tD5_ChangeSetID`tD5_DateCheckedIn`tServerItem"|set-content $DestPath

foreach($d in $diff){
    $s = $d.Information -split " - "
    $L = get-tfsitemproperty $s[0] -server $TFserver -workspace $workspace
    $R = get-tfsitemproperty $s[1] -server $TFserver -workspace $workspace
    $Owner = (get-tfsItemhistory $L.SourceServerItem -server $tfServer -stopafter 1).Owner
    $ChangeSetL = $d | select -ExpandProperty ItemL |select changesetid, checkindate
    $ChangeSetR = $d | select -ExpandProperty ItemR|select changesetid, checkindate
    "$Owner`t"+ $ChangeSetL.changesetid + "`t" + ($ChangeSetL.CheckinDate).Tostring()+"`t"+$ChangeSetR.changesetid + "`t" + ($ChangeSetR.CheckinDate).Tostring()+"`t"+$L.SourceServerItem |add-content $DestPath
}
#get-content $DestPath

#compare-object $(get-content $L.LocalItem) $(get-content $R.LocalItem)

Initial URL


Initial Description
Compares two TFS paths after $startdate and returns a list of files that are different. 
First section outputs owner, changeset, servername that are only on the Left side. 
The second outputs owner, changeset L&R, servername for files that are different. Constrained to files where the Left side change date is after the right side change date.

Initial Title
Compare TFS Server Paths

Initial Tags


Initial Language
Windows PowerShell