/ Published in: Windows PowerShell
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.
Expand |
Embed | Plain Text
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{$_\3|?{($_\3.TypeDiff -eq 'Diff' -or $_\3.TypeDiff -eq 'LeftOnly') -and $_\3.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 |?{$_\3.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{$_\3|?{$_\3.TypeDiff -eq 'Diff' -and $_\3.DateCheckInL -ge $startDate -and $_\3.DateCheckInL -gt $_\3.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)
You need to login to post a comment.
