VisualSVNServer2.5.4をインストールしました。ユーザーとリポジトリを作成できます。私の質問は、C#からユーザー/リポジトリを作成/削除するにはどうすればよいですか。図書館はありますか?
1 に答える
2015年3月9日更新
カスタムWMIスクリプトを作成する必要はもうありません。VisualSVN Server 3.4以降で利用可能なPowerShellコマンドレットは、Subversionサーバーの管理とリポジトリ管理のほとんどのユースケースをカバーしています。https://www.visualsvn.com/server/features/powershell/で新機能についてお読みください
VisualSVN Server 3.4には、便利なコマンドレットを多数提供するPowerShellモジュールが導入されています。コマンドレットは、VisualSVNサーバーとそのリポジトリをローカルまたはリモートで管理するために使用できます。VisualSVNServerPowerShellコマンドレットの完全なリファレンスは次のとおりです。
例えば、
次のPowerShellコマンドを実行して、新しいリポジトリMySuperRepoを作成できます。
New-SvnReposiory MySuperRepo
リポジトリにプロジェクト構造を作成できます
New-SvnRepositoryItem MySuperRepo -Path /branches, /tags, /trunk -Type Folder
DOMAIN \ DevelopersActiveDirectoryグループアカウントに新しいリポジトリへの読み取り/書き込みアクセスを提供できます
Add-SvnAccessRule MyRepo -Path / -AccountName DOMAIN\Developers -Access ReadWrite
リポジトリがディスク上で取るサイズを計算できます。
Measure-SvnRepository MySuperRepo
リポジトリの破損を確認できます。
Test-SvnRepository MySuperRepo
そして、はるかに!
コマンドレットの詳細と完全なリストについては、VisualSVNサーバーのPowerShellコマンドレットリファレンスの記事を参照してください。
VisualSVNサーバーは、WMI(Windows Management Instrumentation)インターフェイスを介して管理できます。
VisualSVNサーバーインターフェイスを記述したMOFファイルは、VisualSVNサーバーがインストールされているコンピューターの%VISUALSVN_SERVER%\WMIにあります。このファイルを参照として使用すると、VisualSVNサーバーを管理するためのC#スクリプトを記述できます。
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('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);
2013年2月10日に更新:
VisualSVN Server 2.6でWMIスキーマが変更(および改善)されました。つまり、リポジトリパスにアクセス許可を設定するには、次のことを行う必要があります。
VisualSVN_Repository
リポジトリ名を指定するクラスオブジェクトを作成し、VisualSVN_PermissionEntry
アカウントのユーザー名とアクセス許可を指定するエントリオブジェクトを作成し、有効なリポジトリパスとPermissionEntryオブジェクトを渡すとき
SetSecurity
にメソッドを呼び出します。VisualSVN_Repository
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);