我发现了很多有关如何更改特定修订版用户名的示例。
但是我需要的是:我使用工作伙伴的身份验证凭证进行了结帐,并且需要将其更改为我的凭证以用于将来的提交。
由于已经进行了许多更改,因此我不能仅凭我的凭证进行结帐...
有人熟悉吗?
Answers:
您可以通过以下方式更改用户
Subversion 1.6及更早版本:
svn switch --relocate protocol://currentUser@server/path protocol://newUser@server/path
Subversion 1.7及更高版本:
svn relocate protocol://currentUser@server/path protocol://newUser@server/path
要找出是什么protocol://currentUser@server/path
,运行
svn info
在您的工作副本中。
最简单的方法是在下一次签出或提交时仅使用--username选项。例如:
svn commit --username newUser
要么
svn co --username newUser
然后将其缓存,并将用作将来命令的默认用户名。
svn info
我发现Author
生产线没有变化。
我遇到了完全相同的问题,并在SVN客户端将用户身份验证数据存储在哪里的地方找到了解决方案?:
cd
到~/.subversion/auth/
。fgrep -l <yourworkmatesusernameORtheserverurl> */*
。(对于Windows,步骤类似;auth
目录位于中%APPDATA%\Subversion\
)。
请注意,这仅适用于用户名是服务器登录名一部分的SVN访问方案,因此对于使用进行访问的存储库无效file://
。
fgrep
命令应带有一个-l
,以便该命令告诉您文件路径。我本来要编辑的,但是还不够长。
基于Ingo Kegel的解决方案,我创建了一个“小” bash脚本来更改所有子文件夹中的用户名。记得:
<NEW_USERNAME>
为新的用户名。<OLD_USERNAME>
为当前用户名(如果您当前未设置用户名,只需删除<OLD_USERNAME>@
)。在下面的代码中,仅打印出svn命令(不执行)。要执行svn命令,只需删除echo
它前面的和空格(就在上方popd
)。
for d in */ ; \
do echo $d ; pushd $d ; \
url=$(svn info | grep "URL: svn") ; \
url=$(echo ${url#"URL: "}) ; \
newurl=$(echo $url | sed "s/svn+ssh:\/\/<OLD_USERNAME>@/svn+ssh:\/\/<NEW_USERNAME>@/") ; \
echo "Old url: "$url ; echo "New url: "$newurl ; \
echo svn relocate $url $newurl ; \
popd ; \
done
希望你觉得它有用!