Назад | Перейти на главную страницу

Делегировать разрешения на подпапку в проекте TFS

Мне нужно предоставить участнику группы проектов TFS права доступа к подкаталогу Source Control в проекте TFS. Я могу успешно подключиться как кто-то из этой группы, но не могу просматривать систему управления версиями, предположительно потому, что у пользователя нет доступа к верхнему уровню проекта. Есть ли способ настроить доступ таким образом, чтобы не требовалось предоставлять доступ для чтения ко всему проекту или поддерживать привилегии для каждой папки, которая разделяет каталог с папками на пути к целевому подкаталогу?

Уточнение:

Проект / Папка1 / Папка2 / TargetFolder

Я установил это, предоставив им разрешения, но чтобы ограничить разрешения только TargetFolder и его содержимым, мне нужно предоставить группе доступ для чтения к Folder1 и Folder2. Но поскольку разрешения наследуются, мне нужно запретить эту группу на каждая вторая папка в Project, Folder1 и Folder2. Это головная боль обслуживания, и если в будущем будут добавлены новые каталоги, им также нужно будет изменить свои разрешения.

Нет возможности сделать это из коробки. Если вы собираетесь делать это редко, ручной процесс отказа в родительских папках будет наиболее эффективным.

Однако если вы думаете, что эта задача будет повторяться довольно часто, вы можете создать служебную программу с помощью TFS API, которая сделает это за вас.

(Что-то в этом роде. Предупреждение, это не проверено)

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('/'));
}

Когда ты щелкните правой кнопкой мыши в папке перейдите в Свойства а затем Вкладка Безопасность, вы видите группу в списке для этой папки?

Вы должны иметь возможность изменять разрешения на чтение папок для отдельных групп.