Wal*_*ess 18 svn history rename repository
当我的团队第一次开始使用SVN时,我们只是在提交到存储库时使用了我们的名字,但是,现在我们的团队已经成长,我们遇到问题因为我们刚刚雇用了第二个Mike.
我们想要做的是将每个人的用户名更改为与其计算机上的用户名相同(名字首字母和姓氏).我看到的问题是SVN历史记录仍然会在提交时显示旧的用户名.
是否有用于在存储库的整个历史记录中更改用户名的工具?
例如,我希望当前归于Mike的每个提交都更改为msmith,一直返回到修订版1.
我的第一个想法是,我将不得不对转储文件进行一些解析和处理,但是一个工具会很好.
Jas*_*tta 20
你可以使用svndumptool:
svnadmin dump path/to/my/repo> repo.dump
svndumptool transform-revprop svn:author originalregexp newvalue repo.dump newrepo.dump
Ste*_*pel 13
TortoiseSVN对此功能提供了出色的支持:在其修订日志对话框中,可以按作者进行过滤(甚至通过正则表达式),根据需要从过滤列表中选择修订(通常在此问题中都是如此),然后从上下文中选择"编辑作者"菜单.
当然,正如jeroenhs 回答中提到的那样,使用pre-revprop-change钩子的前提条件仍然适用.
该处理是相当缓慢的,但根据需要的人,这可能仍然是很多更快和/或更方便的然后有倾倒整个仓库,并处理与脚本这些潜在的巨大转储文件(S).
jer*_*enh 12
就在这里:
svn propset --revprop -r revision_number svn:author new_username
Run Code Online (Sandbox Code Playgroud)
但是,svn默认情况下不允许更改修订版本属性.您需要为此设置pre-revprop-change挂钩脚本.在Windows上,只需将bat文件放在存储库的hooks文件夹中,该文件夹只包含一行:
exit 0
Run Code Online (Sandbox Code Playgroud)
如果已设置,您应该能够根据需要编写脚本.
编辑:我没有通过测试,但我认为这应该在PowerShell中做到这一点:
([xml] ( svn log --xml )).log.logentry
| ? {$_.author -eq "Mike"}
| foreach {svn propset --revprop -r $_.revision svn:author msmith}
Run Code Online (Sandbox Code Playgroud)
在存储库服务器上,您可以:
echo -n "msmith" > msmith.txt
svn log /svn -q | grep '^r[0-9]* | Mike |' | cut -f 1 -d' ' | xargs -n1 svnadmin setrevprop /svn svn:author msmith.txt -r
Run Code Online (Sandbox Code Playgroud)
这是在做什么:
| 归档时间: |
|
| 查看次数: |
10242 次 |
| 最近记录: |