我正在使用git-svn连接到通过https进行身份验证的subversion存储库。我在Linux上使用git命令行客户端(Ubuntu 12.04)。当我执行任何需要与subversion服务器交互的命令时,我必须按预期输入我的svn密码。但是,如果该命令需要与svn服务器进行多次交互(例如,git svn dcommit有多个本地提交),我必须多次输入密码。
在另一个工作站上,我有一个类似的设置,它给了我在整个提交系列中要求输入一次密码的预期行为。
我发现了类似的问题here和here,但在这两种情况下,OP都希望在git-svn命令之间缓存svn凭据。我没有配置subversion来缓存我的密码,如果可以,我希望保持这种方式。
我的git-svn版本是1.7.9.5(svn 1.6.17)
答案 0 :(得分:1)
问题是git svn
命令使用常规Subversion接口周围的包装器执行多个Subversion操作; Git不知道或不关心您的Subversion凭证。
我可以看到一些不同的选项,但没有一个是伟大的:
启用Subversion的凭据存储。你知道这件事,并说你不想这样做,所以这不是一个非首发。
只需为Git执行的每个Subversion操作输入密码。您当前的解决方案如果那很好,你就不会问这个问题。
补丁git svn
。 Git代码是开源的,git svn
命令是用Perl编写的,因此您可以在系统上进行编辑并使用新版本而无需重新编译。粗糙的设计:
每当与Subversion存储库交互时,首先尝试在没有交互式身份验证的情况下执行它(即基础--non-interactive
命令的svn
参数)。
如果有效,那就好了,继续。如果失败,则假设由于缺少身份验证而失败,并提示用户输入用户名和密码。
对于以后的svn
命令,如果不需要身份验证,请继续执行此操作。否则,请明确指定存储的用户名和密码(即基础--username
命令的--password
和svn
参数。
答案 1 :(得分:0)
您需要将您的凭据存储在subversion
目录中。一个天真的解决方案是在临时目录中对您的svn存储库进行简单的检查,以便svn
保存您的username
和password
:
svn co http://url-of-your-svn/repos/repos temp-repos-directory
这样svn
会询问您是否要保存凭据,并将它们保存在subversion
配置目录(linux中的~/.subversion/aut/
)中。
另一种解决方案是直接询问svn
来存储您的凭据:
svn update --username 'username' --password 'password'
答案 2 :(得分:0)