|
Запись в CSV-файл всех активных checkoutsПри использовании Microsoft Visual SourceSafe у администратора часто возникает необходимость узнать, какие файлы находятся в состоянии checked-out. Приведенный здесь скрипт решает эту проблему.В ходе своей работы скрипт создает в текущем каталоге текстовый CSV-файл со списком всех checked-out файлов и для каждого такого файла указывает его полный путь в SourceSafe, а также кто и когда сделал checkout. Полученный CSV-файл можно загрузить в Microsoft Excel для последующего анализа. Комментарии к коду:
Листинг: checkouts.vbsOption 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 ' --------------------------------------------------------------------
|