|
Запись в CSV-файл всех активных checkoutsПри использовании Microsoft Visual SourceSafe у администратора часто возникает необходимость узнать, какие файлы находятся в состоянии checked-out. Приведенный здесь скрипт решает эту проблему.В ходе своей работы скрипт создает в текущем каталоге текстовый CSV-файл со списком всех checked-out файлов и для каждого такого файла указывает его полный путь в SourceSafe, а также кто и когда сделал checkout. Полученный CSV-файл можно загрузить в Microsoft Excel для последующего анализа. Комментарии к коду:
Листинг: checkouts.vbs
Option Explicit
' Измените эти параметры в соответствии с Вашей ситуацией
Dim Path, User, Password, StartFrom
Path = "C:\Program Files\Microsoft Visual Studio\VSS\srcsafe.ini"
' полный путь к файлу srcsafe.ini
User = "user" ' имя пользователя SourceSafe
Password = "password" ' пароль пользователя
StartFrom = "$\" ' проект, с которого начинать рекурсию
' Создаем пустой CSV-файл и пишем в него заголовок
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim File
Set File = FSO.OpenTextFile("checkouts.csv", 2, True)
File.WriteLine """File Path"";""User Name"";""Checkout Time"""
' Открываем SourceSafe
Dim VSSDatabase
Set VSSDatabase = CreateObject("SourceSafe.0")
VSSDatabase.Open Path, User, Password
Dim RootItem
Set RootItem = VSSDatabase.VSSItem(StartFrom)
' Рекурсивно проходим по всем проектам
Scanner RootItem.Items
' Закрываем SourceSafe
Set VSSDatabase = Nothing
' Закрываем файл
File.Close
Set FSO = Nothing
' Все
MsgBox "Finished.", vbInformation
WScript.Quit
' --------------------------------------------------------------------
' Процедура рекурсивного прохода по всем проектам
Sub Scanner(Items)
Dim Item
For Each Item In Items
If Item.Type = 0 Then ' VSSITEM_PROJECT
Scanner Item.Items
ElseIf Item.Type = 1 Then ' VSSITEM_FILE
If Item.IsCheckedOut Then
Dim Checkout
For Each Checkout In Item.Checkouts
' цикл на случай multiple checkouts
File.WriteLine """" & Item.Spec & _
""";" & Checkout.UserName & _
";""" & Checkout.Date & """"
Next
End If
End If
Next
End Sub
' --------------------------------------------------------------------
|