标签: pre-commit

是否可以将预提交配置文件添加到非根文件夹?

我为我的一个项目设置了一个预提交插件。

目前,.pre-commit-config.yaml配置文件位于项目的根目录下(如官方文档https://pre-commit.com/#usage所示)。

是否可以将其移至单独的文件夹并以某种方式调整以从那里读取?

当前状态(命令输出dir):

.pre-commit-config.yaml                                                                                                                                                                                                                                                                                                                      
.pylintrc                                                                                                                                                                      
ci                                                                                                                                                                             
commons                                                                                                                                                                        
doc
...         
Run Code Online (Sandbox Code Playgroud)

我想要什么(或类似的):

.pylintrc                                                                                                                                                                      
ci                                                                                                                                                                             
commons                                                                                                                                                                        
doc
precommit\.pre-commit-config.yaml
...         
Run Code Online (Sandbox Code Playgroud)

git pre-commit pre-commit-hook pre-commit.com

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

SVN Pre Commit Hooks

我目前正在尝试扩展我们已经存在(并且正在工作)的预提交批处理文件,以便提交到SVN.第一部分阻止任何没有注释并按预期工作的提交.第二部分是阻止用户提交SUO文件的attmept,但是这当前阻止了所有提交.

我对DO脚本的理解不是很好,所以我怀疑它可能是我对FindStr的使用?

有人可以帮忙吗?

"C:\Program Files\VisualSVN Server\bin\svnlook.exe" log -t %2 %1 | FindStr [a-zA-Z0-9]
IF %ERRORLEVEL% EQU 0 GOTO OK
echo "Commit Comments are Required" >&2
exit 1
:OK
"C:\Program Files\VisualSVN Server\bin\svnlook.exe" diff -t %2 %1 | FindStr /R "[a-zA-Z]\.suo"
IF %ERRORLEVEL% EQU 0 exit 0
echo "SUO files cannot be committed" >&2
exit 1
Run Code Online (Sandbox Code Playgroud)

svn batch-file pre-commit findstr svn-hooks

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

在预提交挂钩期间再次暂存文件?

mvn java-formatter:format在预提交挂钩中安装了任务.此任务将格式化java源代码.

pushd src/ > /dev/null

mvn java-formatter:format
RETVAL=$?
if (($RETVAL == 1)); then
        exit 1
fi

popd > /dev/null
Run Code Online (Sandbox Code Playgroud)

我需要附加新格式化的源文件来提交.我怎样才能做到这一点?

git pre-commit pre-commit-hook githooks

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

git precommit-hook:检查行内容是否已更改

Szenario:在使用git进行文件提交时,我想在预提交挂钩内检查某条线是否已被修改.因此,我想比较修改后的文件中的部分行与来自存储库的相应行部分.

背景:我想确保要提交的文件具有另一个版本号,而不是存储库中已有的文件.应强制用户为文件提供适当的版本号.在提交时自动增加版本号不是一个选项,因为我们使用多部分版本(1.0.0.0),用户必须修改版本字符串的正确部分...

问题:是否可以在预提交挂钩中访问已修改的文件内容以及存储库文件?

git pre-commit pre-commit-hook

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

GIT 预提交挂钩更改文件但不添加到提交

我正在使用 GITpre-commit挂钩来查找 README.md 文件 ex 中的字符串模式。{{STRING_PATTERN}},然后将字符串模式更改为所需的文本/代码输出,其中还包含当前分支名称。

\n\n

这就是问题所在。该pre-commit脚本的工作原理是它找到字符串模式并将其替换为正确的文本/代码,但它似乎在提交更改之前没有这样做......这意味着在我运行git commit -m "Updated README.md"并检查git status自述文件之后.md 文件显示为正在修改,如果我要运行git push origin branch_nameREADME.md 文件,则包含实际的{{STRING_PATTERN}}标识符(不需要),而不是更新的文本(这正是我想要的)。

\n\n

正如我所说,这是pre-commit代码,请注意,从定位字符串{{STRING_PATTERN}}标识符并使​​用动态创建的文本/代码 \xe2\x80\x93 更新它的角度来看,这确实有效。并没有真正提交这些更改,这就是问题所在。

\n\n
#!/usr/bin/env bash\n\n# Echo out text to ensure pre-commit is running\necho "pre-commit working"\n\n# Get the current branch name\nfunction git_branch {\n    git rev-parse --abbrev-ref HEAD\n}\n\n# Set branch variable to current branch\nbranch=$(git_branch)\n\n# Define the string/pattern marker to search for\n# This pattern/string serves …
Run Code Online (Sandbox Code Playgroud)

git bash github pre-commit pre-commit-hook

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

将 git hook 提交到 repo

我在配置 tslint 和预提交挂钩时遇到问题。重点是我创建了 tsconfig 文件,它工作得很好。并添加了 bash 脚本,如果 tslint 返回任何错误,则不允许我提交。问题是我需要为团队中的其他人提交这个挂钩文件。这应该会自动替换 .git 文件夹中的预提交挂钩。我刚刚找到了一个 bash 脚本,它检查“hooks”文件夹中的钩子并将其替换到 .git 文件夹中。我如何提交并为我的团队“自动”执行此操作?

git bash hook pre-commit

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

Git 镜像以及对镜像存储库的提交

我有一个镜像存储库(“镜像”),它复制一些“主要”存储库。GitLab 让这一切变得简单,并且每小时都会轮询 Prime 进行更新。

我对镜像进行了提交(添加了一个与pre-commit一起使用的文件),这导致轮询失败。我想要的是我的镜像仍然与prime保持同步,但将提交应用于顶部。

有没有办法让镜像更新和变基而不是仅仅更新和变基git remote update,这会失败,因为我的镜像有一个我的素数没有的提交?


编辑:看起来GitLab 说它不支持此功能,尽管它看起来很容易添加。

git mirror pre-commit gitlab

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

如何使用这个 git pre-commit 钩子

Yelp 检测机密是一个防止机密进入您的代码库的系统。我想安装它提供的预提交钩子

我以前从未使用过 git hooks,但我看到的所有示例文件.git/hooks/都是 bash,而yelp的自述文件中给出的示例是一个 yaml 文件。

它们链接到pre-commit.com;“用于管理和维护多语言预提交挂钩的框架”。

这是否意味着 yelp pre-commit hook 只能通过先安装pre-commit框架才能使用?

如果是这样,我有点迷失在预提交的使用中。我已经安装了它,我可以调用它。所以在现有的仓库中,我运行了pre-commit install. 但是我现在如何添加 yelp 检测秘密预提交钩子?

当然,我已经查看了pre-commit.com上的文档,但我有点迷失了。欢迎任何提示。

git pre-commit pre-commit-hook pre-commit.com

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

即使我已经暂存了以前修改过的文件,Git 预提交钩子也会继续修改文件

我正在运行 git pre-commit并运行 black 作为钩子之一。

现在,当我运行时commit,黑色失败并说:

All done! ?  ?
15 files reformatted, 1 file left unchanged.
Run Code Online (Sandbox Code Playgroud)

我查看了重新格式化的文件,我对它们很好。所以我暂存这些文件并commit再次尝试运行,但我不断收到与上述相同的消息。我尝试了以下命令但没有成功。

git add .
git add -A
git add -u
Run Code Online (Sandbox Code Playgroud)

这是我的.pre-commit-config.yaml文件:

repos:
    -   repo: https://github.com/psf/black
        rev: 19.10b0
        hooks:
            - id: black
              language_version: python3.6
    -   repo: https://github.com/pre-commit/pre-commit-hooks
        rev: v2.5.0
        hooks:
            -   id: check-merge-conflict
            -   id: check-docstring-first
            -   id: check-json
            -   id: check-yaml
            -   id: debug-statements
            -   id: double-quote-string-fixer
            -   id: end-of-file-fixer
            -   id: name-tests-test
                args: [--django]
            - …
Run Code Online (Sandbox Code Playgroud)

python git pre-commit python-black pre-commit.com

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

将 pytest 作为预提交钩子运行 // 没有这样的文件或目录问题

在我的 Python 项目中,我pytest用作pre-commit挂钩。一些测试创建和删除临时文件,当我运行pytest <test directory>. 但是,当我运行git commitpre-commit挂钩 triggers 时pytest,某些测试由于FileNotFoundError: [Errno 2] No such file or directory: '<file name>'. 我的印象是,当许多文件已更改且位于暂存区域时,会发生这种情况(对于 1-2 个文件,我没有观察到此问题)。这是我的pytest部分.pre-commit-config.yaml

  - repo: local
    hooks:
      - id: pytest-check
        name: pytest-check
        entry: bash -c 'pytest'
        language: system
Run Code Online (Sandbox Code Playgroud)

输出如下所示:

pytest-check.............................................................Failed
- hook id: pytest-check
- exit code: 1

tests/utils/test_application.py F                                        [ 91%]
tests/utils/test_image_io.py .FFF.........                               [100%]

==================================== ERRORS ====================================
_ ERROR at teardown of test_calling_with_nonexisting_parameter[--non_existing …
Run Code Online (Sandbox Code Playgroud)

python pre-commit pre-commit-hook pytest pre-commit.com

3
推荐指数
2
解决办法
4014
查看次数