在我的仓库中,有不同的帐户来控制不同文件夹的权限,并且有一个公共帐户具有只读权限,可以访问整个仓库。
回购路径是:
svn://foo.bar/trunk/
svn://foo.bar/trunk/projectA/
公共帐户pub
具有访问svn://foo.bar/trunk/
的只读权限。
我的工作帐户staffA
完全属于svn://foo.bar/trunk/projectA/
,但<{1}} 没有私密性。
我的本地仓库已在svn://foo.bar/trunk/
与D:\Worksapce\
进行了检查。
svn://foo.bar/trunk/
结帐/更新pub
svn://foo.bar/trunk/
结帐/更新staffA
除svn://foo.bar/trunk/
文件夹projectA
提交staffA
svn://foo.bar/trunk/projectA/
路径staffA
添加了read-pnly权限。trunk
可以解决问题,但我正在使用Windows。 Tortoise SVN在解决冲突和比较历史时非常有帮助。每次我ci / up时,我必须在Tortoise SVN auth对话框中输入相应的帐号和密码,而不保存身份验证。
如何使用保存的alias
帐户更新D:\Worksapce\
?
如何使用已保存的pub
帐户提交D:\Worksapce\projectA
?
答案 0 :(得分:1)
常见简答:无论如何纯粹的GUI。
对于任何领域(主机名)Subversion只能存储和替换一个身份验证对用户/传递
但如果你完全从CLI与远程仓库进行通信,你可以在命令行中使用--username
+ --password
个选项
答案 1 :(得分:1)
对于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/访问,那么您可以为第一个配置一组凭据,为后者配置一组不同的凭据。