我喜欢在cygwin中使用git svn clone
命令和我们公司的svn存储库。
此网址为svn+ssh://svn.<url>.com/repo
在此我可以看到,例如使用trunk / tags / branches擦除存储库
正在运行git svn clone svn+ssh://svn.<url>.com/repo
没有此类文件或目录:无法连接到URL上的存储库 'svn + ssh://svn..com/repo':子进程出错:'ssh'的exec 失败:/ usr / lib / git-core / git-svn行没有这样的文件或目录 2299
任何人都可以帮助我做什么以及如何做到这一点?
答案 0 :(得分:0)
对于git-svn
svn+ssh
工作,您需要确保:
ssh
客户端。svn+ssh://foo@svn.bar.com/project
或您安排使用ssh密钥和ssh-agent进行身份验证。答案 1 :(得分:0)
必须同时使用私钥和公钥ssh来设置svn + ssh协议。
如果使用Windows,则必须先设置ssh密钥,然后再运行
svn客户端使用与本地Windows svn.exe
相关的这些常规步骤(例如,不应移植为非完全本地的msys
或cygwin
工具):>
putty
客户端。puttygen.exe
实用工具和正确类型的密钥生成密钥
密钥取决于svn集线器服务器(Ed25519,RSA,DSA等)。SVN_SSH
环境变量:SVN_SSH="<path-to-plink>/plink.exe" -batch -l "<USERNAME>"
。这样可以避免由于交互式登录/密码请求而导致脚本挂起,并且可以避免使用用户名位于内部的svn存储库URL。externals
属性都包含带有svn+ssh://
前缀的有效svn存储库URL。如果不是,则使用svn relocate https:// svn+ssh://
命令切换到该命令。然后,例如,只需删除url方案前缀并保留externals
前缀,即可修复//
属性中的所有其余url。pageant.exe
(添加它)。putty.exe
客户端测试与svn集线器服务器的连接。如果pageant.exe
已启动并以正确的私钥运行,则客户端不应要求输入密码。如果用用户名声明了SVN_SSH
环境变量,则客户端也不应要求用户名。 git
客户端基本上是已移植的msys
或cygwin
工具的一部分,这意味着它们的行为有所不同。
消息Can't create session: Unable to connect to a repository at URL 'svn+ssh://...': Error in child process: exec of '' failed: No such file or directory at .../Git/mingw64/share/perl5/Git/SVN.pm line 310.
的问题之一是SVN_SSH
环境变量的问题。应该使用与git
本身相同的工具中的实用程序来定义变量。尝试与plink.exe
应用程序中的独立putty
一起使用它时,将以该消息结束。
因此,除了svn.exe
应用程序的步骤之外,您还应该应用以下步骤:
SVN_SSH
环境变量的使用并将其删除。ssh-pageant
或msys
工具运行cygwin
(putty
的{{1}}必须已经使用有效的私钥运行了)。例如,您可以从这里阅读有关内容:https://github.com/cuviper/ssh-pageant ssh-pageant是Windows的微型工具,允许您在Cygwin和MSYS Shell环境中使用PuTTY的Pageant中的SSH密钥。
pageant
返回的环境变量,例如:ssh-pageant
。SSH_AUTH_SOCK=/tmp/ssh-hNnaPz/agent.2024
命令中使用URL和用户名:git svn ...
--username = <用户> 对于SVN处理(http,https和svn)身份验证的传输,请指定用户名。对于其他传输方式(例如svn + ssh://),您必须在URL中包含用户名,例如svn + ssh://foo@svn.bar.com/project
这些说明应有助于将svn+ssh://<USERNAME>@svn.<url>.com/repo
命令与git svn
命令一起使用。