【问题标题】:How can I check if homebrew-core is a shallow clone in a bash script?如何检查 homebrew-core 是否是 bash 脚本中的浅克隆?
【发布时间】:2021-02-15 06:07:25
【问题描述】:

如何在 bash 脚本中检查当前 homebrew-corehomebrew-cask 是否是浅克隆,如果是,则将它们取消浅化?如果它们已经不浅,我也想打印一条消息。

在已经非浅层的克隆上运行 git -C "/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask" fetch --unshallow 只会给出错误消息,而不是优雅的处理。

我试过了

if [[ "git rev-parse --is-shallow-repository /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core" == "false" ]] 
then
    echo "homebrew core is already non shallow. Moving to next step."
else
    git -C "/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core" fetch --unshallow
fi

但是得到了

fatal: --unshallow on a complete repository does not make sense

【问题讨论】:

  • “而不是优雅处理” 那么在脚本中添加优雅处理?
  • @matt:这就是他想要做的。我不确定为什么这被否决(可能有重复,但如果是这样,那应该只要求关闭重复)。
  • @torek 是的,不知道这个投票发生了什么(OP 甚至给出了答案,而 那个 被否决了)。

标签: bash git homebrew


【解决方案1】:

你可以使用类似的东西

$ for d in homebrew-core homebrew-cask
do
    (cd /usr/local/Homebrew/Library/Taps/homebrew/$d && git rev-parse --is-shallow-repository)
done

如果 repo 很浅,它将打印 truefalse

【讨论】:

    【解决方案2】:

    这似乎有效

    if [[ "git rev-parse --is-shallow-repository /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core | grep -q 'false'" ]] 
    then
        echo "homebrew core is already non shallow. Moving to next step."
    else
        git -C "/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core" fetch --unshallow
    fi
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-07
      • 2015-02-22
      • 1970-01-01
      • 2010-10-10
      相关资源
      最近更新 更多