【问题标题】:How to run a script that generates a file in another branch?如何运行在另一个分支中生成文件的脚本?
【发布时间】:2020-11-03 01:36:16
【问题描述】:

我目前正在尝试在master branch 的存储库中运行 脚本。 我希望该脚本(html 文件)的 输出 进入 另一个名为 output-branch 的分支。

有没有让我这样做的命令?

【问题讨论】:

    标签: git git-branch


    【解决方案1】:

    您可以通过使用curl -sfL 命令即时获取脚本的内容来运行脚本,然后由执行程序运行它。首先,您需要在 Github 或其他任何地方找到文件的原始格式,然后单击页面上的raw 查看按钮。

    请参阅以下 bash 脚本示例:

    bash -l -c "$(curl -sfL https://raw.githubusercontent.com/bitrise-tools/codesigndoc/master/_scripts/install_wrap.sh)"
    

    【讨论】:

    • 这是非常危险的,要求 OP 从可变下载链接下载并盲目运行命令......(当前)它们自己下载并执行更间接的代码。
    • @jthill 此命令不下载文件它正在获取它的内容并运行它。盲目的意思是,如果 op 不知道他为什么需要运行它的脚本。他要求运行它,如果您不应用一些 AI,则无法获取脚本并了解通过脚本方式运行它的后果。
    【解决方案2】:

    Git 的便捷命令是围绕通常的单用户单结账工作流程构建的。

    它的核心命令……没有那么受限。您的要求很简单。

    outputid=$(myscript | git hash-object -w --stdin)
    treeid=$(echo 100644 blob $outputid$'\t'script-output | git mktree)
    branchnow=$(git rev-parse -q --verify output-branch)
    git update-ref refs/heads/output-branch  $(
            git commit-tree ${branchnow:+-p $branchnow} -m 'script output' $treeid
    )
    

    第一行是“将myscript 输出添加到repo 并保存它的id”。

    第二个是“为添加的内容创建目录路径并保存该目录的ID”

    第三个是“检查是否已经有历史”

    第四个和其余部分特别使用 :+ 扩展修饰符,检查变量,如果其中有任何内容扩展为我在此处给出的内容,因此如果没有现有的分支历史记录,${branchnow:+-p $branchnow} 将扩展为空,或者 -p $branchnow如果已经有历史。 commit-treeupdate-ref 与它们看起来完全一样:为您刚刚构建的快照的新创建提交返回一个 id,并(重新)在该提交上挂起 output-branch 分支提示标签。

    【讨论】:

      【解决方案3】:

      只写:

      git checkout output-branch
      

      在脚本中,在生成 html 文件之前。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-09
        • 2019-06-17
        • 1970-01-01
        • 2020-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多