我发现了很多有关如何更改特定修订版用户名的示例。
但是我需要的是:我使用工作伙伴的身份验证凭证进行了结帐,并且需要将其更改为我的凭证以用于将来的提交。
由于已经进行了许多更改,因此我不能仅凭我的凭证进行结帐...
有人熟悉吗?
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
希望你觉得它有用!