【问题标题】:Bash and Git Flow bug in common file公共文件中的 Bash 和 Git Flow 错误
【发布时间】:2015-08-24 05:23:33
【问题描述】:

我已经安装了Git Flow,这似乎是一个很好的工具,但是当我运行命令git flow feature start Test时出现以下错误:

/usr/lib/git-core/git-flow: 301: export: Internal/WPLion/gitflow/.git: bad variable name

于是我试图找出问题所在,发现在/user/lib/git-core/gitflow-common文件中,脚本无法执行以下代码:

export DOT_GIT_DIR=$(cd "$DOT_GIT_DIR" && pwd)

在线301

为了调试脚本,我使用命令echoexit 1来中断执行,所以301之前的代码如下:

DOT_GIT_DIR=$(git rev-parse --git-dir)

所以当我使用上面的命令时,我的 bash 会得到以下结果:

.

当我尝试echo 301 行之后的任何内容时,脚本当然会中断。

另外,当我尝试执行代码git rev-parse --git-dir 时,它的结果被保存在变量DOT_GIT_DIR 中,结果如下:

/media/merianos/Large Internal/WPLion/gitflow/.git

这实际上是我的项目文件夹中 git 存储库的路径。

那么,这段代码有什么问题?路径空间可能会导致问题?

【问题讨论】:

  • 您的初始错误看起来像是由路径中的空格引起的
  • 有办法解决吗?我是 Linux 的新手,这实际上是我使用的第二个 bash 脚本 :)
  • 您的修复看起来不错 - 或者您可能不得不使用无空间路径
  • 正如我上面所描述的,我是 Linux 上的新手,并且对我来说太难设置运行外部 HD(大型内部)的 Apache,所以我不再碰它了 :) xaxaxa

标签: git bash git-flow


【解决方案1】:

好的,我自己解决了这个问题。

我知道这不是永久性的,但我也会尝试在主存储库上做出贡献,并修复错误。

我所做的修改是在文件/user/lib/git-core/gitflow-commonUbuntu 系统)的 301302 行上,代码是这样的:

export DOT_GIT_DIR=$(cd "$DOT_GIT_DIR" && pwd)
export HOOKS_DIR=$(git config --get gitflow.path.hooks || echo "$DOT_GIT_DIR"/hooks) # the second option is used to support previous versions of git-flow

它变成了这样:

export DOT_GIT_DIR="$(cd $DOT_GIT_DIR && pwd)"
export HOOKS_DIR="$(git config --get gitflow.path.hooks || echo "$DOT_GIT_DIR"/hooks)" # the second option is used to support previous versions of git-flow

【讨论】:

  • 你用的是什么外壳?那个外壳是什么版本的? export foo=$(echo foo bar); declare -p foo 在你的 shell 中输出什么?
  • 我用的是3.14.2的GNOME终端,结果是:declare -x foo="foo bar"
  • GNOME 终端是终端而不是外壳,但该输出表明您在此处添加引号的修复不应该更改脚本中有关路径中空格安全性的任何内容。所以我不明白这应该如何解决问题。
  • 说实话我什至不知道bash和shell有什么区别。另外,我所知道的是我所做的修改,现在允许脚本运行,而不是返回任何错误消息。正如已经描述的那样,这是我生命中接触的第二个 shell 脚本,所以不要指望我得到任何答案 :)
  • 你能在这些行的上方添加set -x(和set +x),然后运行脚本(不带引号然后加上)并显示输出吗?
猜你喜欢
  • 2014-04-20
  • 2013-02-07
  • 1970-01-01
  • 2016-08-22
  • 2017-02-14
  • 2015-01-18
  • 1970-01-01
  • 1970-01-01
  • 2013-06-05
相关资源
最近更新 更多