我安装了visualvn服务器2.5.4。我可以创建用户和存储库。我的问题是如何从c创建/删除用户/存储库。有图书馆吗?

最佳答案

2015年9月3日更新
不再需要编写自定义的wmi脚本;从visualvnserver3.4开始提供的powershell cmdlet涵盖了大多数subversion服务器管理和存储库管理用例。阅读https://www.visualsvn.com/server/features/powershell/上的新功能
visualvn服务器3.4引入了powershell模块,该模块为您提供了许多有用的cmdlet。cmdlet可用于在本地或远程管理visualvn服务器及其存储库。这是complete reference on VisualSVN Server PowerShell cmdlets
例如,
通过运行以下powershell命令,可以创建新的存储库mysuperrepo:
New-SvnReposiory MySuperRepo
可以在存储库中创建项目结构
New-SvnRepositoryItem MySuperRepo -Path /branches, /tags, /trunk -Type Folder
您可以为域开发者活动目录组帐户提供对新存储库的读/写访问权限
Add-SvnAccessRule MyRepo -Path / -AccountName DOMAIN\Developers -Access ReadWrite
您可以计算存储库在磁盘上的大小:
Measure-SvnRepository MySuperRepo
您可以验证存储库是否存在损坏:
Test-SvnRepository MySuperRepo
还有更多,更多!
有关更多信息和cmdlet的完整列表,请阅读文章VisualSVN Server PowerShell Cmdlet Reference
可以通过wmi(windows管理)管理visualvn服务器
仪表)接口。
描述visualvn服务器接口的mof文件位于计算机上的%visualvn\u server%\wmi中
已安装visualvn服务器。使用此文件作为引用,您可以
编写一个c脚本来管理visualvn服务器。
请查看MSDN文章:
http://msdn.microsoft.com/en-us/library/bb404655
我包括以下样品供您参考:
此C代码将创建密码为“secret”的Subversion用户“user1”。

    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(“内置用户”)提供
对存储库“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);

2013年10月2日更新:
wmi架构已更改(并已改进!)在visualvn服务器2.6中。简而言之,要在存储库路径上设置访问权限,您需要:
创建指定存储库名称的类对象,
创建指定帐户用户名和访问权限的条目对象,
在传递有效存储库路径和PermissionEntry对象的VisualSVN_Repository上调用VisualSVN_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);

09-06 14:13