【问题标题】:Tortoise SVN use different accounts access different pathsTortoise SVN 使用不同的账户访问不同的路径
【发布时间】:2016-05-09 11:33:45
【问题描述】:

在我的 repo 中,有不同的账户来控制不同文件夹的权限,并且有一个公共账户具有只读权限来访问整个 repo。

例如

repo路径为:

svn://foo.bar/trunk/
svn://foo.bar/trunk/projectA/

并且公众号pub拥有访问svn://foo.bar/trunk/的只读权限。

我的工作帐户staffA 拥有svn://foo.bar/trunk/projectA/ 的完整权限,但没有svn://foo.bar/trunk/ 的权限

我的本​​地仓库已在D:\Worksapce\svn://foo.bar/trunk/ 签出。

问题

  1. 我可以使用pub 结帐/更新svn://foo.bar/trunk/
  2. 除了projectA 文件夹外,我无法使用staffA 签出/更新svn://foo.bar/trunk/
  3. 我可以使用staffA 提交svn://foo.bar/trunk/projectA/
  4. 代码的管理员拒绝为 staffA 路径添加 read-pnly 权限。
  5. Linux 的alias 可能会解决问题,但我正在使用Windows。而且 Tortoise SVN 在解决冲突和比较历史时非常有帮助。

每次 ci/up 都必须在 Tortoise SVN auth 对话框中输入相应的帐号和密码,而不保存 auth。

问题

如何使用已保存的pub 帐户更新D:\Worksapce\

如何使用已保存的staffA 帐户提交D:\Worksapce\projectA

【问题讨论】:

    标签: svn tortoisesvn


    【解决方案1】:

    常见的简短回答:纯 GUI 不行。

    对于任何领域(主机名),Subversion 只能存储和替换一个身份验证对用户/通行证

    但如果您完全通过 CLI 与远程仓库通信,您可以在命令行中使用 --username+--password 选项

    【讨论】:

      【解决方案2】:

      对于 SVN(和 git),如果您想与同一台服务器通信,但出于各种目的使用不同的凭据,那么您必须使用 SSH 访问而不是 HTTPS(除非您可以使用与SSL 证书)。

      使用 SSH,您可以将服务器的别名设置为不同的 PuTTY 会话。因此,您可以通过以下 URL 访问“foo.bar”存储库:

      svn+ssh://pub@example.com/foo.bar/trunk
      svn+ssh://staffA@example.com/foo.bar/trunk
      

      之所以可行,是因为 URL 中 /// 之间的所有内容都被 plink (PuTTY) 解释为 PuTTY 会话的名称,该会话将告诉它如何与服务器通信(主机名、用户名、端口、SSH 密钥)。

      因此,在 PuTTY 中,您将创建两个与 SVN 服务器对话的会话。一个命名为pub@example.com,另一个命名为staffA@example.com(区分大小写)。有趣的是,PuTTY 会话几乎可以命名,因此您可以使用像 Aspidistra (svn+ssh://Aspidistra/foo.bar/trunk) 这样的会话名称。

      这个技巧也可以通过 SSH 用于 GitHub。或者在 Linux/Unix 机器上,您可以在 ~/.ssh/config 中进行设置。


      对于 HTTPS,它更加困难,并且要求服务器证书具有备用名称。因此,如果服务器可以作为https://example.com/https://svn.example.com/ 访问,那么您可以为第一个配置一组凭据,为后者配置一组不同的凭据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-10
        • 1970-01-01
        • 2020-10-21
        • 1970-01-01
        • 2020-07-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多