# This script will: # Locate all synced repos on this machine # Report on diffs between versions on master and this machine # # $RepoList = @() $Masters = @{} $MasterData = @{} # Scan local repo Detecting masters # Slurp in all data about all the Repos on Master servers # Its quicker than accessing them one at a time # Get-CimInstance -Namespace "root\VisualSVN" -ClassName VisualSVN_Repository | ForEach-Object { # Only process Slave VFDS repos # Type of repository: 0 - FSFS, 1 - VDFS (master), 2 - VDFS (slave) # if ( $_.type -eq "2" ) { $entry = @{} $entry.Add( 'Repo', $_.Name) $masterServer = $_.MasterServer $entry.Add('Master', $masterServer) if ( -not $Masters.ContainsKey($masterServer)) { $Masters.Add($masterServer, 1) Get-CimInstance -ComputerName $MasterServer -Namespace root\VisualSVN -ClassName VisualSVN_Repository | ForEach-Object { $mName = $masterServer + $_.Name $MasterData.Add($mName, $_) } } $RepoList += $_ } } # Generate output foreach ($repo in $RepoList.GetEnumerator() | Sort-Object {$_.Name}) { $MasterServer = $repo.MasterServer $MasterName = $repo.MasterRepository $SlaveRevNo = $repo.TotalRevisions # # Get data from Master # #Write-Host "MasterServer: $MasterServer" $mName = $MasterServer + $MasterName $master = $MasterData.Item($mName) $MasterRevNo = $master.TotalRevisions $diff = $MasterRevNo - $SlaveRevNo $DiffStr = "" if ($diff -ne 0 ) { $DiffStr = " - $diff version to go" } Write-Host ("{4,20} {0,20} {1,10} {2,10} {3}" -f $repo.name, $MasterRevNo, $SlaveRevNo, $DiffStr, $MasterServer) }