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

Можно ли получить svn для аутентификации с помощью windows / sspi, но с псевдонимами пользователей?

У меня есть сервер VisualSVN, работающий в Windows 2008 R2 x64 с использованием базовой аутентификации.

Я хочу перейти на использование проверки подлинности Windows.

Однако некоторые настроенные имена пользователей не соответствуют именам пользователей домена.

Есть ли способ изменить псевдоним basic-auth-username на domain-username, чтобы, когда кто-то теперь совершает фиксацию с использованием domain-username, svn записывает его как свое старое имя пользователя basic-auth?

Или есть способ пролистать репозитории и найти / заменить имена пользователей с базовой аутентификацией в коммитах с именами пользователей с аутентификацией домена?

Или, наверное, не стоит беспокоиться?

Можно заменить имена пользователей в истории, но немного сложнее. Имя пользователя хранится в svn:author свойство, связанное с каждой ревизией. svnadmin setrevprop команда может изменить это свойство.

Вы можете сделать это вручную, но для этого требуется запускать эту команду для всех версий. Поэтому я рекомендую использовать следующие шаги, чтобы упростить эту работу.

  1. Создайте резервную копию репозитория.
  2. Создайте командный файл 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. Установите старое имя пользователя с помощью переменной OLDUSER. Задайте путь к вашему репозиторию с помощью переменной REPO.

  4. Создайте текстовый файл user.txt с новым именем пользователя. Обратите внимание, что этот файл должен содержать единственную строку с именем пользователя.
  5. Запустите chg_users.cmd.
  6. Проверьте результат с помощью команды svn log или ее эквивалента TortoiseSVN.
  7. Повторите шаги 2-6 для другого имени пользователя.