【问题标题】:SVN change usernameSVN更改用户名
【发布时间】:2011-10-06 08:08:18
【问题描述】:

我找到了很多关于如何更改特定版本的用户名等示例。

但我需要的是: 我使用同事的身份验证凭据进行了结帐,需要将其更改为我的凭据以供将来提交。

由于已经进行了许多更改,我不能只使用我的凭据结帐...

有谁熟悉这个?

【问题讨论】:

标签: authentication svn credentials


【解决方案1】:

你可以改变用户

  • 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

在您的工作副本中。

【讨论】:

  • 我收到一个错误“svn: E155024: Invalid source URL prefix: 'protocol://currentUser@server/path' (不重叠目标的 URL 'protocol://newUser@server/path' )" [当然是我的真实网址]
  • 这不适用于普通的 http-auth 身份验证方案。请参阅this answer,了解如何删除为该用例保存的用户凭据。 @James 这可能是你的问题。
  • 很棒的东西.. Thnaks :)
【解决方案2】:

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

svn commit --username newUser

svn co --username newUser

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

另请参阅: In Subversion can I be a user other than my login name?

【讨论】:

  • 我这样做了,然后svn info 我发现Author 行没有变化。
  • 从上面的链接:“当 Subversion 直接从文件系统访问存储库时,它使用您的文件系统权限来访问存储库。(当您通过 SSH 隧道连接时,SVN 使用您的 FS 权限在服务器上,由您的 SSH 登录名确定。)因此 svn checkout --username 可能不适用于您的存储库。”
  • @MattBrowne 是正确的。像“svn+ssh://svn.server.com”这样的路径不会遵守 --username 更改。使用 relocate 的公认答案是我可以更改它的唯一方法。
【解决方案3】:

我遇到了完全相同的问题,并在Where does SVN client store user authentication data?找到了解决方案:

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

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

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

【讨论】:

  • 值得注意的是,如果您运行 IntelliJ IDEA,您还必须重新启动 IntelliJ 才能使更改生效
  • fgrep 命令应该有一个-l,以便命令告诉您文件路径。我打算编辑它,但它不够长。
【解决方案4】:

可以执行的命令:

svn up --username newUsername

完美运行 ;)

附:只是一个提示:“--​​username”选项可以在任何“svn”命令上执行,而不仅仅是更新。

【讨论】:

    【解决方案5】:

    如果您的协议是 http 并且您使用的是 Subversion 1.7,您可以随时通过在任何命令上使用全局 --username 选项来切换用户。

    当 Ingo 的方法对我不起作用时,我发现这是行之有效的方法。

    【讨论】:

      【解决方案6】:

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

      有一个清除身份验证数据的选项,单击清除按钮,它将允许您选择要清除用户标识/密码的连接。

      执行此操作后,任何结帐或更新活动都会重新提示输入用户 ID 和密码。

      【讨论】:

        【解决方案7】:

        对于 Win10,您应该删除此文件夹并关闭/打开您的 IDE

        C:\Users\User\AppData\Roaming\Subversion\auth

        ,在我的项目中也没有“.subversion”文件夹,只有“.svn”

        【讨论】:

          【解决方案8】:

          此外,对于那些碰巧意识到他们使用错误凭据提交的人来说,解决方案(事后)是更改该修订版的 svn 作者:参见this question

          基本上语法是:

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

          【讨论】:

            【解决方案9】:

            基于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
            

            希望你觉得它有用!

            【讨论】:

              【解决方案10】:

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

              【讨论】:

                【解决方案11】:

                您可以让您的同事创建一个补丁,它将所有所做的更改合并到一个文件中,您可以将其应用于您自己的检出。这将适当地更新您的所有文件,然后您可以恢复他的更改并签入。

                【讨论】:

                  【解决方案12】:

                  特定于窗口的乌龟:

                  我尝试了上述解决方案,但无济于事。在我的用例中,存储在 Windows 凭据管理器中 Windows 凭据部分下的凭据和 TortoiseSVN 拒绝通过运行 --username 命令来更改它们。

                  您可以通过展开您的存储库的 url 并单击 edit 来编辑凭据。

                  【讨论】:

                    猜你喜欢
                    • 2013-11-23
                    • 2018-09-21
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2011-07-16
                    • 1970-01-01
                    • 2018-04-19
                    • 1970-01-01
                    相关资源
                    最近更新 更多