Ras*_*Net 8 c# svn visualsvn-server
我安装了VisualSVN Server 2.5.4.我可以创建用户和存储库.我的问题是如何从C#创建/删除用户/存储库.有图书馆吗?
bah*_*rep 12
无需再编写自定义WMI脚本; 从VisualSVN Server 3.4开始提供的PowerShell cmdlet涵盖了大多数Subversion服务器管理和存储库管理用例.在https://www.visualsvn.com/server/features/powershell/上阅读有关新功能的信息
VisualSVN Server 3.4引入了PowerShell模块,为您提供了许多有用的cmdlet.cmdlet可用于本地或远程管理VisualSVN Server及其存储库.以下是VisualSVN Server PowerShell cmdlet的完整参考.
例如,
您可以通过运行此PowerShell命令来创建新的存储库MySuperRepo:
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
还有更多!
有关更多信息和cmdlet的完整列表,请阅读文章VisualSVN Server PowerShell Cmdlet Reference.
VisualSVN Server可以通过WMI(Windows Management Instrumentation)界面进行管理.
描述VisualSVN Server接口的MOF文件位于安装VisualSVN Server的计算机上的%VISUALSVN_SERVER%\ WMI中.使用此文件作为参考,您可以编写C#脚本来管理VisualSVN Server.
请查看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);
Run Code Online (Sandbox Code Playgroud)这个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);
Run Code Online (Sandbox Code Playgroud)此C#代码将为SID S-1-5-32-545('BUILTIN\Users')提供对存储库'Test'的读/写访问权限.FYI: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);
Run Code Online (Sandbox Code Playgroud)更新于2013年10月2日:
WMI架构已在VisualSVN Server 2.6中更改(并得到改进!).简而言之,要在存储库路径上设置访问权限,您需要:
VisualSVN_Repository指定存储库名称的类对象,VisualSVN_PermissionEntry条目对象,指定帐户用户名和访问权限,调用SetSecurity上的方法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.SetPropertyValue("Name", "MyProject");
ManagementBaseObject inParams =
repoClass.GetMethodParameters("SetSecurity");
inParams["Path"] = "/trunk";
inParams["Permissions"] = new object[] { permObject };
ManagementBaseObject outParams =
repoObject.InvokeMethod("SetSecurity", inParams, null);
Run Code Online (Sandbox Code Playgroud)