标签: pre-commit-hook

Git预提交钩子+docker=不同的git状态

我想在预提交 git hook 中运行脚本。我希望该脚本从 docker 映像中运行。此预提交挂钩的示例代码:

# pre-commit hook
#!/bin/bash
repo_root=$(git rev-parse --show-toplevel)
docker run -v ${repo_root}:${repo_root} -w ${repo_root}  <my_docker_image> <path_to_my_script.py>
Run Code Online (Sandbox Code Playgroud)

my_script.py内部运行git status以确定要在预提交挂钩中处理哪些文件。

git status问题:当我运行 时,预提交挂钩中的输出与 docker 容器内的 输出不同git commit --all。例子:

# pre-commit hook
#!/bin/bash
git status
echo "------------------------------------"
repo_root=$(git rev-parse --show-toplevel)
docker run -v ${repo_root}:${repo_root} -w ${repo_root} <my_docker_image> git status
Run Code Online (Sandbox Code Playgroud)

我希望通过在 docker 容器内运行git commit --allgit status我可以看到所有已上演的更改。

但是,这些更改不会在 docker 容器内进行。我之前编写的代码打印以下内容:

Changes to be committed:
  (use "git reset HEAD <file>..." to …
Run Code Online (Sandbox Code Playgroud)

git pre-commit-hook docker

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

使用 `git commit -a` 时查找 git `pre-commit` 挂钩中的暂存文件

我正在使用一个git pre-commit钩子来自动格式化所有暂存文件。我通过确定暂存文件git diff --name-only --cached,然后在这些文件上调用脚本。这一切在标准用例中都运行良好,但是当我通过提交时它不起作用

git commit -a ..
Run Code Online (Sandbox Code Playgroud)

因为文件尚未暂存。

有什么方法可以:

  1. 在钩子之前运行-a效果(将文件添加到暂存区)pre-commit

  2. 发现预提交在-a提交中运行?

一定有办法处理这个问题。

git pre-commit-hook githooks git-commit

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

如何使用 husky 和 ​​lint-staged 运行“stylelint --fix”而不阻止提交

我使用 husky 和 ​​lint-staged 在具有此配置的 sass 文件上运行“stylelint --fix”

\n
"husky": {\n    "hooks": {\n        "pre-commit": "lint-staged",\n        "post-commit": "git update-index --again"\n    }\n},\n"lint-staged": {\n    "resources/sass/*.scss": [\n        "stylelint --fix",\n        "git add"\n    ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n

PhpStorm 阻止了我的提交并告诉我:

\n

Commit failed with error, 0 file committed, 4 files failed to commit: test lintstaged husky > pre-commit (node v12.18.4) \xe2\x9a\xa0 Some of your tasks use `git add` command. Please remove it from the config since all modifications made by tasks will be automatically added to the git commit …

pre-commit-hook githooks stylelint husky lint-staged

5
推荐指数
0
解决办法
6932
查看次数

通过覆盖“检测到 CI,跳过 Git hooks 安装”在 Jenkins 管道作业中安装 husky git hooks

我正在尝试使用husky安装 git hooks 作为 Jenkins 管道作业的一部分。

我已将其添加到 Jenkins 作业中:

npm install husky --save-dev
Run Code Online (Sandbox Code Playgroud)

但是当作业运行时,我在 Jenkins 输出中看到了这一点:

> node-sass@4.14.1 install /home/jenkins/agent/workspace/<branch_name>/node_modules/node-sass
> node scripts/install.js

Downloading binary from https://github.com/sass/node-sass/releases/download/v4.14.1/linux_musl-x64-72_binding.node
Download complete
Binary saved to /home/jenkins/agent/workspace/<branch_name>/node_modules/node-sass/vendor/linux_musl-x64-72/binding.node
Caching binary to /root/.npm/node-sass/4.14.1/linux_musl-x64-72_binding.node

> husky@4.3.0 install /home/jenkins/agent/workspace/<branch_name>/node_modules/husky
> node husky install

husky > Setting up git hooks
CI detected, skipping Git hooks installation.
husky > Done
Run Code Online (Sandbox Code Playgroud)

...并且.git/hooks/precommit钩子文件永远不会创建。

故障排除研究笔记:

  • husky v4 文档中,它说“默认情况下,Husky 不会安装在 CI 服务器上”。我找不到任何有关如何覆盖该默认行为的文档。

  • 在搜索 repo 代码时,我什至无法在代码中 …

git continuous-integration pre-commit-hook jenkins husky

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

如何防止带有“console.log”的文件被提交?

我目前正在尝试强制我或我的同事无法在我的角度应用程序中提交包含 console.log 的文件。

我目前已经进行了husky预提交,执行ng lint --fix.

有没有办法在我的 linting 中添加一些内容以防止控制台日志,或者在 husky 脚本中添加一些内容?

人们仍然应该能够使用 console.log,只是不提交它。

谢谢

git pre-commit-hook eslint husky

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

SVN预提交挂钩,用于拒绝具有不一致的选项卡使用情况的Python文件

如果解释的文件具有不一致的选项卡用法,则可以启动Python解释器-tt以引发TabError异常.

我正在尝试为SVN编写一个预提交挂钩,拒绝引发此异常的文件.我可以传递提交的文件python -tt但我的问题是文件也被执行,除了被检查.有没有办法告诉Python"只分析文件,不运行它"?或者也许其他一些方法可以更好地完成我想要的东西.

python svn pre-commit-hook

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

如何自动化SVN中的属性设置?

我的subversion存储库有一个预提交钩子,要求所有文件在提交之前具有SVN属性.

我手动设置此属性使每个文件和文件夹添加两步提交.

如何自动化?

svn tortoisesvn pre-commit-hook

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

为什么我的Git预提交钩子在克隆的存储库中不会触发?

我刚刚编写了一个小的预提交钩子来执行我的自定义操作.我的中央存储库位于Solaris服务器上并启用了HTTP.

/apps/opt/git/myrepo.git 
Run Code Online (Sandbox Code Playgroud)

我编辑了pre-commit hook并修改如下:

#!/bin/sh -x
if [ $LOGNAME -ne bala ]; then
   echo  "You are not allowed"
   exit 1;
fi
Run Code Online (Sandbox Code Playgroud)

如果我克隆此存储库并使用其他用户执行提交操作,它不会给出任何消息,并提交它.为什么我的提交没有调用pre-commit钩子?

我也可以在.git/hooks目录下的克隆仓库中看到," pre-commit"钩子不存在,我只能看到默认模板.

有人可以帮忙吗?

git pre-commit-hook

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

如何调试Subversion预提交钩子脚本?

这似乎是一个非常基本的问题,但我被淘汰了.如何测试那些为了挂钩而编写的脚本.

我们知道脚本是在后台运行的,SVN控制台只会向我们抛出错误.我尝试使用断点但是我没有任何东西可以为脚本提供输入.

有没有人对此有所了解.我正在Windows上编写svn钩子脚本,因此很多已编写的钩子脚本要么没有运行,要么没有提供所需的输出,例如从apache检查mime-type和eol脚本.

svn pre-commit-hook

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

TortoiseSVN客户端预提交钩子来检查正在提交的文件的内容

我想在Windows批处理文件中编写一个预提交挂钩,它将检查正在提交的文件中的特定字符串.如果字符串存在,则提交将失败.我安装了TortoiseSVN客户端.因为它是tortoisesvn客户端,它没有像'svnlook'这样的命令来获取文件列表等.我希望为每个提交/添加的文件执行该脚本.

我是这些钩子的新手.有人可以指导我吗?

svn tortoisesvn batch-file pre-commit-hook

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