我有一个在 Windows 2008 R2 x64 上运行的 VisualSVN 服务器,使用基本身份验证。
我想升级以使用 Windows 身份验证。
但部分设置的用户名与域用户名不匹配。
有没有办法将 basic-auth-username 别名为 domain-username,这样当有人现在使用 domain-username 提交时,svn 会将其记录为其旧的 basic-auth 用户名?
或者有没有办法通过存储库并在提交到域身份验证用户名的过程中查找/替换基本身份验证用户名?
或者说根本不值得这么麻烦?
答案1
可以替换历史记录中的用户名,但略显复杂。用户名存储在svn:author
与每个修订版关联的属性中。svnadmin setrevprop
命令可以更改此属性。
您可以手动执行此操作,但需要对所有修订版本运行此命令。因此,我建议使用以下步骤来简化此工作。
- 创建存储库的备份副本。
创建批处理文件 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%
使用 OLDUSER 变量设置旧用户名。使用 REPO 变量设置存储库路径。
- 使用新用户名创建文本文件 user.txt。请注意,此文件必须包含唯一一行用户名。
- 运行 chg_users.cmd。
- 使用 svn log 命令或其 TortoiseSVN 等效命令检查结果。
- 对另一个用户名重复步骤 2-6。