6

我想知道是否有人可以深入了解为什么当我通过 SSH 连接到我们的源代码控制服务器时 SmartGit 不正常。GitBash 表现良好。

背景:

我在网络上设置了一个源代码控制服务器,运行 MSYSGit 和 WinSSH 作为 SSH 服务器。它连接到 AD 以解析用户名等,并且我已经导入了所有公共 RSA 密钥等。一切正常。

对我们来说,一个曲线球是,虽然 Git 安装在“ C:\Program Files (x86)\Git ”,但我们的实际源代码位于“ C:\Git ”,它会定期备份。

我已将 WinSSH 配置为使所有 SSH 会话默认为“ C:\Git ”作为它们的主文件夹,这很有效。当我使用 Git Bash 连接到服务器时,它默认为' C:\Git '。完美的。

当我让 SmartGit(使用 SmartGit SSH 客户端)连接到同一台服务器时,使用 url:

    ssh://<server>/<folder>/<repo>

我收到一条错误提示路径...

    C:\Program Files (x86)\Git\<folder>\<repo> 

...似乎不是存储库。嗯,是的......它应该在“ C:\Git ”中寻找它,而不是“ C:\Program Files (x86)\Git ”。

我不确定为什么 SmartGit 不适合这个设置,但我认为它的 SSH 客户端绕过了默认的 WinSSH 设置,因为它完全从' C:\Program Files (x86)\Git指定了整个路径'。

我的问题:

SmartGit 可能从中获取“ C:\Program Files (x86)\Git ”路径的任何想法?

这是我可以在某处设置的变量吗?

更多信息(更新)

SmartGit 的版本是 3.0.4,但问题也存在于 2.x 中。

我附上了 SmartGit 应用程序日志中的一个失败实例(我很确定):

1782732 (2012-05-10 12:18:56,653) [QThreadPoolThread-2 (smartgit.KL)] 信息 smartgit.core.executable - 执行以下命令:"C:\Program Files\Git\bin\git.exe" ls -remote ssh://initio-dev01/INIT/INIT.Framework.git refs/heads/

1782732 (2012-05-10 12:18:56,653) [QThreadPoolThread-2 (smartgit.KL)] 信息 smartgit.core.executable - 在目录中:null

1783049 (2012-05-10 12:18:56,970) [QThreadPoolThread-8 (smartgit.aqT)] 信息 smartgit.server - 收到命令:ssh

1786438 (2012-05-10 12:19:00,359) [QThreadPoolThread-6 (smartgit.cR)] 信息 smartgit.command.logging - 标准错误:致命:'C:/Program Files (x86)/Git/INIT/INIT。 Framework.git' 似乎不是 git 存储库

1786438 (2012-05-10 12:19:00,359) [QThreadPoolThread-6 (smartgit.cR)] 信息 smartgit.core.command - 致命:'C:/Program Files (x86)/Git/INIT/INIT.Framework。 git' 似乎不是 git 存储库

1786439(2012-05-10 12:19:00,360)[Thread-29] 错误 smartgit.ssh.trilead - com.trilead.ssh2.transport.TransportManager:接收线程:receiveLoop 中的错误:套接字已关闭

1786763 (2012-05-10 12:19:00,684) [QThreadPoolThread-6 (smartgit.cR)] INFO smartgit.command.logging - 标准错误:致命:远程端意外挂断

1786763 (2012-05-10 12:19:00,684) [QThreadPoolThread-6 (smartgit.cR)] INFO smartgit.core.command - 致命:远程端意外挂断

1786772 (2012-05-10 12:19:00,693) [QThreadPoolThread-2 (smartgit.KL)] WARN sg.command.ping - 'C:/Program Files (x86)/Git/INIT/INIT.Framework.git'似乎不是 git 存储库 远程端意外挂起 smartgit.cn: 'C:/Program Files (x86)/Git/INIT/INIT.Framework.git' 似乎不是 git 存储库 远程端挂起出乎意料地起来

在 smartgit.gG.a(SourceFile:86)

在 smartgit.ga.a(SourceFile:63)

在 smartgit.ga.a(SourceFile:53)

在 smartgit.hA.a(SourceFile:57)

在 smartgit.ahq.a(SourceFile:26)

在 smartgit.ahl.a(SourceFile:39)

在 smartgit.aL.a(SourceFile:46)

在 smartgit.aD.a(SourceFile:41)

在 smartgit.Kw.a(SourceFile:144)

在 smartgit.KL.run(SourceFile:34)

在 smartgit.Pp.run(SourceFile:65)

4

1 回答 1

1

硬编码路径非常烦人,这似乎是这里的问题?!在此问题在以后的版本中得到修复之前,也许您应该创建一个目录连接点或符号链接。可能是一个(快速而肮脏的)解决方案,而不是花时间修复程序。

(必须在管理员 shell 中运行)

对于连接点:

mklink /j "C:\Program Files (x86)\GIT\<folder>" C:\GIT\<folder>

对于符号链接:

mklink /d "C:\Program Files (x86)\GIT\<folder>" C:\GIT\<folder>
于 2012-05-16T12:30:42.343 回答