应对远程主机的过时/ usr / bin / git

时间:2016-08-25 13:41:06

标签: git

Centos主机git上的“默认”BADHOST,即/usr/bin/git,是古老的(v 1.7.1),实际上比{{1}的所有其他实例都要老得多我一起工作。

事实证明,主持人git在非标准位置(BADHOST)安装了git的更新版本(2.5.0)。这是我登录/opt/git-2.5.0/bin/git时使用的版本,因此BADHOST上的$HOME/.gitconfig文件会被写入BADHOST

事实上,/opt/git-2.5.0/bin/git的默认BADHOSTgit)将我的/usr/bin/git视为无效

$HOME/.gitconfig

每当我尝试执行error: Malformed value for push.default: simple error: Must be one of nothing, matching, tracking or current. fatal: bad config file line 10 in /home/yourstruly/.gitconfig 作为远程主机git的操作时,这就成了问题。大多数此类操作失败,错误类似于上面显示的错误。

例如,如果我已登录其他主机(BADHOST),则命令

OKHOST

...以

失败
git clone BADHOST:/path/to/some/git/repo

但是,如果我删除Cloning into 'repo'... error: git upload-pack: git-pack-objects died with error. fatal: git upload-pack: aborting due to possible repository corruption on the remote side. remote: error: Malformed value for push.default: simple remote: error: Must be one of nothing, matching, tracking or current. remote: fatal: bad config file line 10 in /home/yourstruly/.gitconfig remote: aborting due to possible repository corruption on the remote side. fatal: early EOF fatal: index-pack failed 上的$HOME/.gitconfig,然后在BADHOST上重新运行git clone命令,则会成功。

有解决这个疯狂问题的方法吗?

NB:我正在寻找以外的解决方案更改OKHOST上的$HOME/.gitconfig文件,以便其过时{ {1}},但不再适用于BADHOST。此外,/usr/bin/git的系统管理员拒绝了我升级/opt/git-2.5.0/bin/git的所有请求,因此根据此类升级预测的解决方案也没有意义。

如果重要,BADHOST上的我的{是/usr/bin/git。{/ p>

1 个答案:

答案 0 :(得分:1)

好的,我找到了解决方案。基本上我创建了两个脚本:twitssh-wrapper

twit非常简单:它只需调用git并将GIT_SSH设置为指向ssh-wrapper

#!/bin/sh

GIT_SSH=/path/to/ssh-wrapper git "$@"

ssh-wrapper比较棘手(更有可能需要进一步的工作)。它假定它的第一个参数是一个主机名,它的第二个参数是一个命令,以" git相关的"的名称开头。可执行文件。

#!/bin/sh

host=$1
cmd=/opt/git-2.5.0/bin/$2

exec ssh "$host" "$cmd"

现在,命令可以是,例如,

twit clone BADHOST:/path/to/some/git/repo
twit push  BADHOST:/path/to/some/git/repo master
twit pull  BADHOST:/path/to/some/git/repo master

...成功。

一个丑陋的黑客,当然。我绝对愿意接受更好的解决方案。