Вопрос по c#, svn – Управлять сервером VisualSVN из C #

8

Я установил VisualSVN Server 2.5.4. Я могу создать пользователя и хранилище. У меня вопрос, как я могу создать / удалить пользователя / репозиторий из C #. Есть ли библиотека?

Ваш Ответ

1   ответ
12
Обновление 03.09.2015

Командлеты PowerShell, доступные начиная с VisualSVN Server 3.4, охватывают большинство случаев использования администрирования Subversion и управления серверами. Читайте о новой функции наhttps: //www.visualsvn.com/server/features/powershell

VisualSVN Server 3.4 представляет модуль PowerShell, который предоставляет ряд полезных командлетов. Командлеты могут использоваться для администрирования VisualSVN Server и его репозиториев локально или удаленно. Здесь полная ссылка на командлеты PowerShell для VisualSVN Server.

Например

Вы можете создать новый репозиторий MySuperRepo запустив эту команду PowerShell:

New-SvnReposiory MySuperRepo

Вы можете создать структуру проекта в репозитории

New-SvnRepositoryItem MySuperRepo -Path /branches, /tags, /trunk -Type Folder

Вы можете предоставить учетной записи группы DOMAIN \ Developers Active Directory доступ на чтение / запись к новому репозиторию

Add-SvnAccessRule MyRepo -Path / -AccountName DOMAIN\Developers -Access ReadWrite

Вы можете рассчитать размер хранилища на диске:

Measure-SvnRepository MySuperRepo

Вы можете проверить хранилище на наличие повреждений:

Test-SvnRepository MySuperRepo

И многое, многое другое!

Для получения дополнительной информации и полного списка командлетов прочитайте статьюVisualSVN Справочник по командлету PowerShell для сервера.

VisualSVN Сервер может управляться через интерфейс WMI (инструментарий управления Windows).

айл @MOF, описывающий интерфейс сервера VisualSVN, находится в% VISUALSVN_SERVER% \ WMI на компьютере, где установлен сервер VisualSVN. Используя этот файл для справки, вы можете написать скрипт C # для управления сервером VisualSVN.

Пожалуйста, проверьте статью MSDN:http: //msdn.microsoft.com/en-us/library/bb40465

Я включаю следующие образцы для справки:

Этот код 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'. К вашему сведению: значения AccessLevel соответствуют описанию в 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 объект ввода с указанием имени пользователя учетной записи и прав доступа,

invokeSetSecurity метод наVisualSVN_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.SetPropertyVal,ue("Name", "MyProject");

    ManagementBaseObject inParams =
        repoClass.GetMethodParameters("SetSecurity");

    inParams["Path"] = "/trunk";
    inParams["Permissions"] = new object[] { permObject };

    ManagementBaseObject outParams =
        repoObject.InvokeMethod("SetSecurity", inParams, null);
Большое спасибо. Это именно то, что я ищу. Одна вещь отсутствует. как сопоставить пользователя и репозиторий? Rased Dot Net
@ RasedDotNet: Что вы имеете в виду под «отображением пользователя и хранилища»? Ivan Zhakov
@ IvanZhakov: разрешение на установку для пользователя, чтобы он / она мог получить доступ только к (одному или нескольким) конкретным репозиториям только с правами чтения / чтения-запи Rased Dot Net

Похожие вопросы