É possível obter o svn para autenticação com windows / sspi, mas com aliases de nome de usuário?

1

Eu tenho um servidor VisualSVN em execução no Windows 2008 R2 x64 usando a autenticação básica.

Eu quero atualizar para usar a autenticação do Windows.

No entanto, alguns dos nomes de usuário configurados não correspondem aos nomes de usuário do domínio.

Existe uma maneira de codificar basic-auth-username para domain-username, então quando alguém agora usa commit domain-username, o svn o registra como seu antigo nome de usuário basic-auth?

Ou existe uma maneira de girar através dos repositórios e encontrar / substituir nomes de usuários de autenticação básica em commits para nomes de usuários de domínio?

Ou provavelmente não vale a pena?

    
por Peter Mounce 20.12.2011 / 12:56

1 resposta

2

É possível substituir nomes de usuários no histórico, mas um pouco complicado. O nome do usuário é armazenado na propriedade svn:author associada a cada revisão. O comando svnadmin setrevprop pode alterar essa propriedade.

Você pode fazer isso manualmente, mas é necessário executar este comando para toda revisão. Por isso, recomendo usar as etapas a seguir para simplificar esse trabalho.

  1. Crie uma cópia de backup do repositório.
  2. Crie o arquivo em lote chg_users.cmd.

    @ECHO OFF
    SET OLDUSER=oldusername
    SET NEWUSERFILE=user.txt
    
    SET REPO=C:\Repositories\test\
    
    SET SVNADMIN="%VISUALSVN_SERVER%bin\svnadmin.exe"
    SET SVNLOOK="%VISUALSVN_SERVER%bin\svnlook.exe"
    
    REM Iterate over all revisions (svnlook history), get author of each revision (svnlook author),
    REM replace author if necessary (svnadmin setrevprop)
    
    FOR /F "delims=/" %%i IN ('%SVNLOOK% history %REPO% ^| FINDSTR ^[0-9][0-9]*') DO %SVNLOOK% author -r %%i %REPO% | FINDSTR %OLDUSER% && %SVNADMIN% setrevprop %REPO% -r %%i svn:author %NEWUSERFILE%
    
  3. Defina o nome de usuário antigo usando a variável OLDUSER. Configure o caminho para o seu repositório usando a variável REPO.

  4. Crie o arquivo de texto user.txt com o novo nome de usuário. Por favor, note que este arquivo deve conter a única linha com o nome de usuário.
  5. Execute chg_users.cmd.
  6. Verifique o resultado usando o comando svn log ou seu equivalente no TortoiseSVN.
  7. Repita as etapas de 2 a 6 para outro nome de usuário.
por 20.12.2011 / 13:30