为什么git日志在JavaScript GitHub操作中执行时会返回意外的结果?
在我的命令行中,如果执行以下两个为什么git日志在JavaScript GitHub操作中执行时会返回意外的结果?,javascript,git,yaml,github-actions,Javascript,Git,Yaml,Github Actions,在我的命令行中,如果执行以下两个git log命令(在提交中打印文件名),它们将返回预期的输出: $ git log -1 --name-only --pretty=format: c0ddab lib/ow/css.js $ git log -1 --name-only --pretty=format: fc3039 .github/workflows/github-actions-demo.yml 但是,如果从JavaScript GitHub操作内部执行相同的两个命令,则它们不会返回相
git log
命令(在提交中打印文件名),它们将返回预期的输出:
$ git log -1 --name-only --pretty=format: c0ddab
lib/ow/css.js
$ git log -1 --name-only --pretty=format: fc3039
.github/workflows/github-actions-demo.yml
但是,如果从JavaScript GitHub操作内部执行相同的两个命令,则它们不会返回相同的结果——它们返回:
/usr/bin/git log -1 --name-only --pretty=format: c0ddab
c0ddab
.github/workflows/github-actions-demo.yml// This is not the file that was modified in this commit.
/usr/bin/git log -1 --name-only --pretty=format: fc3039
fc3039
.github/workflows/github-actions-demo.yml
有人知道为什么会发生这种情况,或者我如何排除故障吗?有关我的JavaScript操作的完整代码,请参见下文
我的代码 我的YML文件 我的JavaScript操作(index.js;在myUsername中)/myRepo@master)
您的javascript代码执行以下等效代码:
git日志-1--仅限名称”--pretty=format:fc3039
当您将字符串数组传递给exec.exec()
时,它不会解析字符串以尝试拆分参数,而是将每个未修改的字符串作为单个参数传递给您的命令
解决方法很简单:将
“--pretty=format:”
和commitSha
拆分为两个不同的参数:
wait exec.exec(
“吉特”,
[“log”、“-1”、“--name only”、“--pretty=format:”,commitSha],
选择权
);
您的javascript代码执行等同于:
git日志-1--仅限名称”--pretty=format:fc3039
当您将字符串数组传递给exec.exec()
时,它不会解析字符串以尝试拆分参数,而是将每个未修改的字符串作为单个参数传递给您的命令
解决方法很简单:将
“--pretty=format:”
和commitSha
拆分为两个不同的参数:
wait exec.exec(
“吉特”,
[“log”、“-1”、“--name only”、“--pretty=format:”,commitSha],
选择权
);
好的,太棒了——非常感谢,它成功了。我记得在我写代码的时候,我对自己说,“你想在这里走捷径——让我们看看它是否有效。”对于那个特定的用例,它确实按照预期工作。我忘了回去修理它,我就在这里。再次感谢!好的,太棒了,非常感谢,它成功了。我记得在我写代码的时候,我对自己说,“你想在这里走捷径——让我们看看它是否有效。”对于那个特定的用例,它确实按照预期工作。我忘了回去修理它,我就在这里。再次感谢!
name: GitHub Actions Demo
on: [push]
jobs:
Job-1:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2.3.4
with:
fetch-depth: 0
- name: Test JS action
id: hello
uses: myUsername/myRepo@master
const exec = require("@actions/exec");
async function myAAFunc() {
let commitSha;
const options = {};
commitSha = "c0ddab";
await exec.exec(
"git",
["log", "-1", "--name-only", `--pretty=format: ${commitSha}`],
options
);
commitSha = "fc3039";
await exec.exec(
"git",
["log", "-1", "--name-only", `--pretty=format: ${commitSha}`],
options
);
}
myAAFunc();