2011-10-06 98 views
75

我发现了很多关于如何更改特定修订的用户名的例子等等。SVN更改用户名

但我需要的是这样的: 我做了结帐与同事的认证证书,并需要为未来的承诺将其更改为我的凭据。

我不能用我的凭据结帐由于已经已经做了很多的变化...

任何人都熟悉这个?

+0

有趣的问题!似乎没有成为除的方式[清除所有存储的数据AUTH](http://blog.ansuz.nl/index.php/2008/10/13/tortoise- SVN-变化仓库的凭据/) –

+0

@Pekka:好,回答这个问题并不只对TortoiseSVN,虽然 –

回答

65

您可以

要找出protocol://[email protected]/path是,r联合国

svn info 
在你的工作拷贝

+3

我得到一个错误“的svn:E155024:无效的源地址的前缀:“协议:// @ currentUser服务器/路径”(不重叠目标的URL‘协议:// @ NEWUSER服务器/路径’)。” [我真实的URL,当然] –

+2

这并不适用于普通HTTP-auth的authenticaton方案工作参见[这个答案]( http://stackoverflow.com/a/9391129/313192)如何删除保存的用户凭据,该用例。@詹姆斯这可能是您的问题。 – Caleb

+0

辉煌的东西.. Thnaks :) – Karma

0

我相信你可以从你的同事的分支创建你自己的分支(使用你自己的凭证),从你的同事的分支合并到你的工作副本,然后从你的分支合并。所有将来的提交都应该标记为来自你。

0

您可以要求您的同事创建一个补丁程序,该补丁程序会将所有已做成单个文件的更改合并到您自己的签出文件中。这将更新所有的文件适当的,然后你可以恢复在他身边的变化,并检查你的

48

我有完全相同的问题,发现Where does SVN client store user authentication data?解决方案:

  1. cd~/.subversion/auth/
  2. fgrep -l <yourworkmatesusernameORtheserverurl> */*
  3. 删除找到的文件。
  4. 存储库上的下一个操作将再次询问您的用户名/密码信息。

(对于Windows,步骤是类似的; auth目录在%APPDATA%\Subversion\)。

请注意,这仅适用于SVN访问方案,其中用户名是服务器登录的一部分,因此对于使用file://访问的存储库是没有用的。

+1

值得注意的是,如果你运行IntelliJ IDEA你也必须重新启动IntelliJ以使更改生效 – AndersG

+1

'fgrep'命令应该具有'-l',以便该命令告诉您文件路径。我正在编辑它,但它不够长。 – vguzmanp

+0

作为魅力工作,谢谢! – pubsy

50

最简单的方法是简单地在下次结账或提交时使用--username选项。例如:

svn commit --username newUser

svn co --username newUser

然后它将被缓存和将被用作未来命令默认用户名。

参见: In Subversion can I be a user other than my login name?

+1

+1一个简单的解决方案 –

+0

我这样做,然后'SVN info',我看到在'Author'线没有变化。 – vsync

+1

从上面的链接:“当Subversion直接访问存储库关闭文件系统,它使用文件系统权限来访问存储库(当您通过SSH隧道连接,SVN使用服务器上的FS的权限,如确定。您的SSH登录名。)因此,svn checkout --username可能无法用于您的存储库。“ –

4

如果协议是HTTP和你使用Subversion 1.7,你可以通过简单地使用在任何命令全局--username选项随时切换用户。

当Ingo的方法不适用于我时,这是我发现的工作。

+0

请提供示例代码 – vsync

1

此外,对于那些谁碰巧实现为时已晚,他们犯下了错误的凭据,该解决方案(事后)是改变该修订的SVN作者:看this question

基本语法:

svn propset --revprop -r (revision_number) svn:author (new username) 
0

基于Ingo Kegel's solution我创建了一个“小” bash脚本更改用户名中的所有子文件夹。请记住:

  1. 更改<NEW_USERNAME>到新的用户名。
  2. <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 

希望你觉得它有用!

2

转到Tortoise SVN --> Settings --> Saved Data

有一个选项可以清除认证数据,点击清除按钮,它将允许你选择你想要清除userid/pwd的连接。

当你这样做,任何结账或更新活动后,它将重新提交用户名和密码。

3

这很简单。您应该执行

svn up --username newUserName 

就是这样。

1

为Win10,你应该删除此文件夹,并关闭/打开IDE

C:\用户\用户\应用程序数据\漫游\颠覆\权威性

,也是在我的项目没有“ .subversion“文件夹,只有”。SVN”