Delegar permissões para subpasta no projeto TFS

5

Eu preciso dar privilégios de colaborador do Grupo de Projetos do TFS a um subdiretório do Controle de Origem em um projeto do TFS. Posso me conectar com sucesso como alguém desse grupo, mas não posso navegar pelo Controle de origem, presumivelmente porque o usuário não tem acesso ao nível superior do projeto. Existe alguma maneira de configurar o acesso de uma maneira que não exija dar acesso de leitura a todo o projeto ou manter privilégios para cada pasta que compartilha um diretório com pastas no caminho para o subdiretório de destino?

Esclarecimento:

Projeto / Pasta1 / Pasta2 / TargetFolder

Configurei isso concedendo permissões, mas para restringir as permissões apenas a TargetFolder e seu conteúdo, preciso dar ao grupo acesso de leitura para Folder1 e Folder2. Mas como as permissões são herdadas, preciso negar esse grupo em todas as outras pastas em Projeto, Pasta1 e Pasta2. Essa é uma dor de cabeça de manutenção e, se novos diretórios forem adicionados no futuro, eles também precisarão ter suas permissões alteradas.

    
por dmo 01.05.2009 / 21:09

2 respostas

2

Não há como fazer isso imediatamente. Se você for fazer raramente, o processo manual de negar as pastas pai será mais eficiente.

Se, no entanto, essa é uma tarefa que você acha que se repetirá com bastante frequência, é possível criar um utilitário usando a API do TFS para fazer isso por você.

(algo ao longo destas linhas. Atenção, isso não é testado)

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('/'));
}
    
por 07.05.2009 / 15:38
0

Quando você clica com o botão direito do mouse na pasta, vá para Propriedades e, em seguida, na guia Segurança , vê o grupo listado para essa pasta?

Você deve conseguir alterar as permissões de leitura das pastas para grupos separados.

    
por 05.05.2009 / 19:40