为tortoiseGit改变GIT_SSH的值

时间:2014-11-06 14:09:59

标签: git svn ssh tortoisegit

我想使用tortoiseGit通过SSH检查SVN存储库。

每次都失败,因为无法执行SSH命令。显然,原因是,调用自定义SSH命令,其中包含用户名和密码。之前我使用tortoiseSVN通过SSH访问存储库并尝试在命令行中提交身份验证凭据(与自定义命令中相同),但由于这不起作用,我切换到基于密钥的身份验证。这实际上我也想用git做,但在我能做到之前,我显然必须改变SSH命令。<​​/ p>

我很好奇,我的旧凭据如何传输到服务器,最后在tortoiseGit设置中找到“显示环境变量”按钮。在那里我可以看到两个名为GIT_SSH和SVN_SSH的变量都包含相同的错误命令。所以我查找了这些环境变量,但显然它们不存在。我试图创建它们,但是git继续使用旧的。

我假设在某种脚本中,这些变量是在git启动之前定义的,但经过数小时的搜索后,我找不到任何东西。我还重新安装了git,toritoiseGit和tortoiseSvn,并尝试删除所有数据,但在重新安装完所有内容之后,git仍会使用错误的命令。

实际输出是(我选择“Git clone”后得到的 - “来自SVN信息库”:

git.exe svn clone "svn+ssh://username@puttyconfig/path/to/my/repo"  "C:\Path\to\Repo\on\Filesysem" -T trunk -b branches -t tags

WARNING: --prefix is not given, defaulting to empty prefix.
This is probably not what you want! In order to stay compatible
with regular remote-tracking refs, provide a prefix like
--prefix=origin/ (remember the trailing slash), which will cause
the SVN-tracking refs to be placed at refs/remotes/origin/*.
NOTE: In Git v2.0, the default prefix will change from empty to 'origin/'.
Initialized empty Git repository in C:/Path/to/Repo/on/Filesysem/.git/
No such file or directory: Error in child process: exec of 'C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe -I username -pw password' failed: No such file or directory at /usr/lib/perl5/site_perl/Git/SVN.pm line 310



git did not exit cleanly (exit code 1) (1794 ms @ 06.11.2014 16:17:30)

''中的命令实际上与我在GIT_SSH和SVN_SSH中找到的字符串完全相同。

3 个答案:

答案 0 :(得分:2)

您不能将参数包含到SVN_SSH环境变量中以供Git使用(对于Windows)。

创建一个putty配置并在那里存储用户名,这样您就不需要使用CLI参数。密码不必作为参数发布,因为预定义的ASKPASS工具可以要求它。

创建一个包装器应用程序,用适当的参数启动Tortoise(Git)Plink,将stdin和stdout交给Tortoise(Git)Plink。

答案 1 :(得分:1)

以防其他人来到这里,我在Windows上使用Git Extensions时收到了类似的错误消息:

  

失败:/usr/lib/perl5/site_perl/Git/SVN.pm第310GitExtensions \ PuTTY \ plink.exe

中没有此类文件或目录

修复方法是将git_ssh环境变量设置为8.3格式:

set git_ssh=c:\progra~2\gitextensions\putty\plink.exe

&#34; PROGRA〜2&#34;在我的例子中是&#34;程序文件(x86)&#34;的短名称,您可以通过命令行上的dir / x获取目录的短名称

似乎路径中的空格没有得到妥善处理

答案 2 :(得分:0)

我找到了解决问题的方法。

我卸载了tortoiseGit,Git和tortoiseSVN。之后,我搜索了我的硬盘驱动器,找到了可能留下的任何配置文件,实际上找到了很多。之后我搜索了注册表中的任何旧密钥,并再次找到了很多。显然,SVN_SSH和GIT_SSH是注册表中的故事而不是环境变量(尽管事实上它们被称为环境变量......)。

重新安装所有内容并尝试了一段时间后,我能够查看存储库。显然整个问题是由于无法编写卸载程序的人造成的,实际上是能够完全删除程序而不仅仅删除了一些二进制文件......