Subversion Repositories DevTools

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5286 dpurdie 1
# This script will:
2
#     Locate all synced repos on this machine
3
#         Report on diffs between versions on master and this machine
4
#     
5
#
6
 
7
$RepoList = @() 
8
$Masters = @{}
9
$MasterData = @{}
10
 
11
# Scan local repo Detecting masters
12
#    Slurp in all data about all the Repos on Master servers
13
#    Its quicker than accessing them one at a time
14
#
15
Get-CimInstance -Namespace "root\VisualSVN" -ClassName VisualSVN_Repository | ForEach-Object {
16
 
17
    # Only process Slave VFDS repos
18
    # Type of repository: 0 - FSFS, 1 - VDFS (master), 2 - VDFS (slave)
19
    #
20
    if ( $_.type -eq "2" )
21
    {
22
        $entry = @{}
23
        $entry.Add( 'Repo', $_.Name)
24
        $masterServer = $_.MasterServer
25
        $entry.Add('Master', $masterServer)
26
 
27
        if ( -not $Masters.ContainsKey($masterServer)) {
28
        $Masters.Add($masterServer, 1)
29
        Get-CimInstance -ComputerName $MasterServer -Namespace root\VisualSVN -ClassName VisualSVN_Repository | ForEach-Object {
30
 
31
            $mName = $masterServer + $_.Name
32
            $MasterData.Add($mName, $_)
33
            }
34
 
35
        }
36
        $RepoList += $_
37
    }
38
}
39
 
40
# Generate output
41
foreach ($repo in $RepoList.GetEnumerator() | Sort-Object {$_.Name}) {
42
        $MasterServer = $repo.MasterServer
43
        $MasterName = $repo.MasterRepository
44
        $SlaveRevNo = $repo.TotalRevisions
45
 
46
        #
47
        # Get data from Master
48
        #
49
        #Write-Host "MasterServer: $MasterServer"
50
        $mName = $MasterServer + $MasterName
51
        $master = $MasterData.Item($mName)
52
        $MasterRevNo = $master.TotalRevisions
53
 
54
        $diff = $MasterRevNo - $SlaveRevNo
55
        $DiffStr = ""
56
        if ($diff -ne 0 ) { $DiffStr = " - $diff version to go" }
57
 
58
        Write-Host ("{4,20} {0,20} {1,10} {2,10} {3}" -f $repo.name, $MasterRevNo, $SlaveRevNo, $DiffStr, $MasterServer)
59
 
60
}
61