相关疑难解决方法(0)

如何检查当前分支中是否没有提交?

目标是获得可以在shell命令中评估的明确状态.

我试过git status但它总是返回0,即使有提交的项目.

git status
echo $?  #this is always 0
Run Code Online (Sandbox Code Playgroud)

我有一个想法,但我认为这是一个坏主意.

if [ git status | grep -i -c "[a-z]"> 2 ];
then
 code for change...
else
  code for nothing change...
fi
Run Code Online (Sandbox Code Playgroud)

任何其他方式?


通过以下解决更新,请参阅Mark Longair的帖子

我尝试了这个,但它导致了一个问题.

if [ -z $(git status --porcelain) ];
then
    echo "IT IS CLEAN"
else
    echo "PLEASE COMMIT YOUR CHANGE FIRST!!!"
    echo git status
fi
Run Code Online (Sandbox Code Playgroud)

我收到以下错误 [: ??: binary operator expected

现在,我正在看那个男人并尝试git diff.

===================代码为我的希望,希望更好的答案======================

#if [ `git status | grep -i -c "$"` …
Run Code Online (Sandbox Code Playgroud)

git git-status

166
推荐指数
8
解决办法
6万
查看次数

如何/何时执行Shell将构建标记为Jenkins中的失败?

我在寻找这个答案时发现的恐怖故事......

好的,我有一个.sh脚本,几乎可以完成Jenkins应该做的所有事情:

  • 检查SVN的来源
  • 建立项目
  • 部署项目
  • 自己清理

所以在Jenkins中我只需要通过在Execute Shell命令中运行脚本来"构建"项目.脚本已运行(源代码已下载,项目已构建/部署)但随后它将构建标记为失败:构建步骤"执行shell"将构建标记为失败即使脚本已成功运行!我尝试用以下方法关闭脚本:

  • 退出0(仍将其标记为失败)
  • 退出1(按预期标记为失败)
  • 根本没有退出命令(将其标记为失败)

Execute Shell何时,如何以及为何将我的构建标记为失败?

unix shell hudson build jenkins

108
推荐指数
2
解决办法
15万
查看次数

如何在没有错误的情况下git提交任何内容?

我正在尝试编写一个可以执行的结构脚本git commit; 但是,如果没有提交,git退出状态为1.部署脚本将其视为不成功,并退出.我确实想要检测实际的失败提交,所以我不能仅仅给织物一个忽略git commit失败的问题.如何允许忽略空提交失败,以便部署可以继续,但仍然捕获真正提交失败时导致的错误?

def commit():
    local("git add -p && git commit")
Run Code Online (Sandbox Code Playgroud)

python git fabric

73
推荐指数
4
解决办法
2万
查看次数

不满足阈值时,Jest 测试覆盖率不会失败

使用 create-react-app,在我的 CI 管道中运行测试时,如果未满足代码覆盖率阈值,我希望控制台返回非零响应。

包.json

"scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "test:coverage": "npm run test -- --coverage --watchAll=false",
  },
  "jest": {
    "collectCoverageFrom": [
      "src/components/**/*.js",
      "src/state/**/*.js",
      "src/templates/**/*.js",
      "src/routes/**/*.js"
    ],
    "coverageThreshold": {
      "global": {
        "branches": 80,
        "functions": 80,
        "lines": 80,
        "statements": 80
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

运行test:coverage控制台时报告未满足阈值,但仍返回 0。我从 Jest 文档中了解到,当未满足覆盖阈值时,应返回错误。

https://jestjs.io/docs/en/configuration#coveragethreshold-object

具体来说...

If thresholds aren't met, jest will fail.
Run Code Online (Sandbox Code Playgroud)

有人熟悉这个问题吗?我经历过 Jest 和 CRA github 问题,结果喜忧参半,大多数发现都与过时的版本有关。

code-coverage jestjs create-react-app

7
推荐指数
1
解决办法
4981
查看次数

如果分支不存在,如何删除没有错误消息的分支?

我想在脚本中包含一个删除本地Git分支的命令,并且我不希望显示任何错误消息(如果该分支不存在)。同时,我也不需要状态代码来指示Git命令失败。

给出以下示例:

git branch -D foo
Run Code Online (Sandbox Code Playgroud)

如果该分支存在,则将其删除,并且命令的返回状态为0,表示成功。如果我再次运行相同的脚本,则该分支不再存在,因此命令失败,打印

error: branch 'foo' not found.
Run Code Online (Sandbox Code Playgroud)

并且Git命令的返回状态为> 0,表示错误。

有没有一种方法可以使命令静音,以便它不在乎分支是否首先存在?理想情况下,它不会打印错误消息,也不会通过非零返回状态指示失败。

我知道我可以使用一些脚本魔术来解决这些问题,但是我更喜欢一个简单的解决方案,因为我必须在Windows(.bat)和Unix / Linux / Mac(.sh)上执行相同的操作。

我错过了一个选择,还是我不走运?

git branch

5
推荐指数
2
解决办法
964
查看次数

通过 Jenkins 杀死特定端口上的所有进程

我想要一个 Jenkins 作业来杀死端口 5000 (bash) 上的所有进程。简单的解决方案

fuser -k 5000/tcp
Run Code Online (Sandbox Code Playgroud)

当我在终端中执行此命令时工作正常,但在 Jenkins(“执行 shell”)上将构建标记为失败。

我也尝试过

kill $(lsof -i -t:5000)
Run Code Online (Sandbox Code Playgroud)

但同样,因为它在常规终端上工作,所以在詹金斯上我得到

kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
Build step 'Execute shell' marked build as failure
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决这一问题?

bash shell kill fuser jenkins

1
推荐指数
1
解决办法
6356
查看次数