我安装了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);