在Subversion中更改旧提交的作者

inq*_*uam 26 svn

我有一个用户,直到今天,被称为foo.bar.现在该用户将从此处被称为fb.但是我想更新所有旧提交以反映此用户名而不是旧用户名出于统计原因等.如何做到这一点?

我知道语法

svn propset --revprop -r revision_number svn:author your_username
Run Code Online (Sandbox Code Playgroud)

但这需要大量的体力劳动.是否有现有的函数或脚本只需要替换名称和替换它的名称?

更新:

这是我为处理这个问题而编写的一个小脚本,因为我将在很多用户的大量回购中执行此操作:)只需在您选择的已检出的存储库文件夹中运行它.请注意,脚本中的错误处理至少是最少的.

https://github.com/inquam/svn-rename-author

bor*_*ble 20

您可以构建一个命令来获取old_username已提交的日志中的修订:

svn log | grep "^r[0-9]* | old_username |" | cut -c 2- | awk '{print $1}'
Run Code Online (Sandbox Code Playgroud)

此命令获取日志,搜索出现在每个修订开头的r行,从这些行中删除第一个字符(即),然后获取该行的第一个剩余部分,即修订.

您可以通过各种方式使用此信息.在bash你可以使它产生svn propset命令序列:

for f in `svn log | grep "^r[0-9]* | old_username |" | cut -c 2- | awk '{print $1}'`
do
svn propset --revprop -r $f svn:author your_username
done
Run Code Online (Sandbox Code Playgroud)

它迭代第一个表达式(现在在反引号中)创建的值,并将这些值用于您的svn propset命令,替换$f为适当的修订值.