Управление сервером VisualSVN из C#
Я установил сервер VisualSVN 2.5.4. Я могу создать пользователя и репозиторий. Мой вопрос: как я могу создать/удалить пользователя/репозиторий из C#. Здесь есть библиотека?
1 ответов
03/09/2015 обновление
больше нет необходимости писать пользовательские сценарии WMI; командлеты PowerShell, доступные начиная с VisualSVN Server 3.4, охватывают большинство случаев использования Subversion server administration и repositories management. Читайте о новой функции вhttps://www.visualsvn.com/server/features/powershell/
VisualSVN Server 3.4 представляет модуль PowerShell, который предоставляет вам ряд полезных командлетов. Командлеты могут быть используется для администрирования сервера VisualSVN и его репозиториев локально или удаленно. Вот это полная ссылка на командлеты PowerShell сервера VisualSVN.
например,
-
вы можете создать новый репозиторий MySuperRepo выполнив эту команду PowerShell:
New-SvnReposiory MySuperRepo
-
вы можете создать структуру проекта в хранилище
New-SvnRepositoryItem MySuperRepo -Path /branches, /tags, /trunk -Type Folder
-
вы можете предоставить учетной записи DOMAIN\Developers Active Directory group доступ для чтения / записи в новый репозиторий
Add-SvnAccessRule MyRepo -Path / -AccountName DOMAIN\Developers -Access ReadWrite
-
вы можете рассчитать размер репозитория на диске:
Measure-SvnRepository MySuperRepo
-
вы можете проверить репозиторий на наличие повреждений:
Test-SvnRepository MySuperRepo
и гораздо, гораздо больше!
для получения дополнительной информации и полного списка командлетов, прочитайте статью Справочник По Командлету PowerShell Сервера VisualSVN.
сервер VisualSVN можно управлять через WMI (управление Windows Инструментальный интерфейс).
MOF файл, который описывает интерфейс сервера VisualSVN находится в %VISUALSVN_SERVER%\WMI на компьютере, где Клиента VisualSVN сервер установленный. Используя этот файл в качестве ссылки вы можете напишите сценарий C# для управления сервером VisualSVN.
пожалуйста, проверьте статью MSDN: http://msdn.microsoft.com/en-us/library/bb404655
я включаю следующие образцы для вашей ссылки:
-
этот код c# создаст пользователя Subversion ' user1 'с паролем'secret'.
ManagementClass userClass = new ManagementClass("root\VisualSVN", "VisualSVN_User", null); // Obtain in-parameters for the method ManagementBaseObject inParams = userClass.GetMethodParameters("Create"); // Add the input parameters. inParams["Name"] = "user1"; inParams["Password"] = "secret"; // Execute the method and obtain the return values. ManagementBaseObject outParams = userClass.InvokeMethod("Create", inParams, null);
-
этот код c# создаст новый репозиторий 'Repo1'.
ManagementClass repoClass = new ManagementClass("root\VisualSVN", "VisualSVN_Repository", null); // Obtain in-parameters for the method ManagementBaseObject inParams = repoClass.GetMethodParameters("Create"); // Add the input parameters. inParams["Name"] = "Repo1"; // Execute the method and obtain the return values. ManagementBaseObject outParams = repoClass.InvokeMethod("Create", inParams, null);
-
этот код C# предоставит SID S-1-5-32-545 ('BUILTIN\Users') с Доступ для чтения / записи в репозиторий "Test". FYI: значения уровня доступа как описано в MOF:"0 - нет доступа 1 - только для чтения, 2 - Чтение/запись".
ManagementClass userClass = new ManagementClass("root\VisualSVN", "VisualSVN_WindowsAccount", null); ManagementClass authzClass = new ManagementClass("root\VisualSVN", "VisualSVN_SecurityDescriptor", null); ManagementClass permClass = new ManagementClass("root\VisualSVN", "VisualSVN_PermissionEntry", null); ManagementObject userObject = userClass.CreateInstance(); userObject.SetPropertyValue("SID", "S-1-5-32-545"); ManagementObject permObject = permClass.CreateInstance(); permObject.SetPropertyValue("Account", userObject); permObject.SetPropertyValue("AccessLevel", 2); ManagementObject repo = new ManagementObject("VisualSVN_Repository.Name='Test'"); ManagementBaseObject inParams = authzClass.GetMethodParameters("SetSecurity"); inParams["Object"] = repo; inParams["Permissions"] = new object[] { permObject }; ManagementBaseObject outParams = authzClass.InvokeMethod("SetSecurity", inParams, null);
Обновлено 02/10/2013:
схема WMI была изменена (и улучшена!) в VisualSVN Server 2.6. Короче говоря, чтобы установить доступ разрешения на путь к репозиторию, вы должны:
- создать
VisualSVN_Repository
объект класса, указывающий имя репозитория, - создать
VisualSVN_PermissionEntry
объект ввода, указывающий имя пользователя учетной записи и права доступа, -
invoke
SetSecurity
метод onVisualSVN_Repository
передача допустимого пути репозитория и объекта PermissionEntry.ManagementClass userClass = new ManagementClass("root\VisualSVN", "VisualSVN_WindowsAccount", null); ManagementClass permClass = new ManagementClass("root\VisualSVN", "VisualSVN_PermissionEntry", null); ManagementClass repoClass = new ManagementClass("root\VisualSVN", "VisualSVN_Repository", null); ManagementObject userObject = userClass.CreateInstance(); userObject.SetPropertyValue("SID", "S-1-5-32-545"); ManagementObject permObject = permClass.CreateInstance(); permObject.SetPropertyValue("Account", userObject); permObject.SetPropertyValue("AccessLevel", 2); ManagementObject repoObject = repoClass.CreateInstance(); repoObject.SetPropertyValue("Name", "MyProject"); ManagementBaseObject inParams = repoClass.GetMethodParameters("SetSecurity"); inParams["Path"] = "/trunk"; inParams["Permissions"] = new object[] { permObject }; ManagementBaseObject outParams = repoObject.InvokeMethod("SetSecurity", inParams, null);