web-dev-qa-db-ja.com

TFSプロジェクトのサブフォルダーにアクセス許可を委任する

TFSプロジェクトのソース管理サブディレクトリにTFSプロジェクトグループの寄稿者権限を付与する必要があります。このグループの誰かとして正常に接続できますが、おそらくユーザーがプロジェクトのトップレベルにアクセスできないため、ソース管理を参照できません。プロジェクト全体への読み取りアクセス権を付与したり、ターゲットサブディレクトリへのパス内のフォルダーとディレクトリを共有するすべてのフォルダーの特権を維持したりする必要がない方法でアクセスを構成する方法はありますか?

説明:

プロジェクト/ Folder1/Folder2/TargetFolder

アクセス許可を与えることでこれを設定しましたが、アクセス許可をTargetFolderとそのコンテンツのみに制限するには、グループにFolder1とFolder2への読み取りアクセス権を与える必要があります。ただし、アクセス許可は継承されるため、Project、Folder1、およびFolder2の下の他のすべてのフォルダーでこのグループを拒否する必要があります。これはメンテナンスの問題であり、将来新しいディレクトリが追加された場合は、アクセス許可も変更する必要があります。

5
dmo

箱から出してこれを行う方法はありません。まれにしか実行しない場合は、親フォルダーを拒否する手動プロセスが最も効率的です。

ただし、これがかなり頻繁に繰り返されると思われるタスクである場合は、TFSAPIを使用してユーティリティを作成して実行できます。

(これらの線に沿った何か。警告、これはテストされていません)

vcs = //...VersionControlServer reference...

string checkinPath = @"$/MyProject/Sources/Whatever";
string identityName = @"[MyProject]\Contributors";
string[] removesNone = new string[]{ };    
string[] allowsNone = new string[]{ };
string[] deniesNone = new string[]{ };
string[] allowsCheckin = new string[]{ PermissionChange.ItemCheckin };
string[] deniesCheckin = new string[]{ PermissionChange.ItemCheckin };


PermissionChange pc = new PermissionChange(
    checkinPath, identityName, allowsCheckin, deniesNone, removesNone);

vcs.SetPermissions(new SecurityChange[]{ pc } );

// walk up the path denying on parent folders
checkinPath = checkinPath.Substring(0, checkinPath.LastIndexOf('/'));
while (checkinPath.Length > 2)
{
        PermissionChange pc = new PermissionChange(
            checkinPath, identityName, allowsNone, deniesCheckin, removesNone);

        vcs.SetPermissions(new SecurityChange[]{ pc } );

        checkinPath = checkinPath.Substring(0, checkinPath.LastIndexOf('/'));
}
2
Aidan Ryan

フォルダを右クリックプロパティ、次に[セキュリティ]タブに移動すると、そのフォルダにリストされているグループが表示されますか?

個別のグループのフォルダーの読み取りアクセス許可を変更できるはずです。

0
Mark Turner