8

VisualSVNServer2.5.4をインストールしました。ユーザーとリポジトリを作成できます。私の質問は、C#からユーザー/リポジトリを作成/削除するにはどうすればよいですか。図書館はありますか?

4

1 に答える 1

12

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);
    
于 2012-04-05T13:57:21.763 に答える