我为我的一个项目设置了一个预提交插件。
目前,.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) 我目前正在尝试扩展我们已经存在(并且正在工作)的预提交批处理文件,以便提交到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) 我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)
我需要附加新格式化的源文件来提交.我怎样才能做到这一点?
Szenario:在使用git进行文件提交时,我想在预提交挂钩内检查某条线是否已被修改.因此,我想比较修改后的文件中的部分行与来自存储库的相应行部分.
背景:我想确保要提交的文件具有另一个版本号,而不是存储库中已有的文件.应强制用户为文件提供适当的版本号.在提交时自动增加版本号不是一个选项,因为我们使用多部分版本(1.0.0.0),用户必须修改版本字符串的正确部分...
问题:是否可以在预提交挂钩中访问已修改的文件内容以及存储库文件?
我正在使用 GITpre-commit
挂钩来查找 README.md 文件 ex 中的字符串模式。{{STRING_PATTERN}},然后将字符串模式更改为所需的文本/代码输出,其中还包含当前分支名称。
这就是问题所在。该pre-commit
脚本的工作原理是它找到字符串模式并将其替换为正确的文本/代码,但它似乎在提交更改之前没有这样做......这意味着在我运行git commit -m "Updated README.md"
并检查git status
自述文件之后.md 文件显示为正在修改,如果我要运行git push origin branch_name
README.md 文件,则包含实际的{{STRING_PATTERN}}标识符(不需要),而不是更新的文本(这正是我想要的)。
正如我所说,这是pre-commit
代码,请注意,从定位字符串{{STRING_PATTERN}}标识符并使用动态创建的文本/代码 \xe2\x80\x93 更新它的角度来看,这确实有效。并没有真正提交这些更改,这就是问题所在。
#!/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) 我在配置 tslint 和预提交挂钩时遇到问题。重点是我创建了 tsconfig 文件,它工作得很好。并添加了 bash 脚本,如果 tslint 返回任何错误,则不允许我提交。问题是我需要为团队中的其他人提交这个挂钩文件。这应该会自动替换 .git 文件夹中的预提交挂钩。我刚刚找到了一个 bash 脚本,它检查“hooks”文件夹中的钩子并将其替换到 .git 文件夹中。我如何提交并为我的团队“自动”执行此操作?
我有一个镜像存储库(“镜像”),它复制一些“主要”存储库。GitLab 让这一切变得简单,并且每小时都会轮询 Prime 进行更新。
我对镜像进行了提交(添加了一个与pre-commit一起使用的文件),这导致轮询失败。我想要的是我的镜像仍然与prime保持同步,但将提交应用于顶部。
有没有办法让镜像更新和变基而不是仅仅更新和变基git remote update
,这会失败,因为我的镜像有一个我的素数没有的提交?
编辑:看起来GitLab 说它不支持此功能,尽管它看起来很容易添加。
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并运行 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 项目中,我pytest
用作pre-commit
挂钩。一些测试创建和删除临时文件,当我运行pytest <test directory>
. 但是,当我运行git commit
并pre-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) pre-commit ×10
git ×8
bash ×2
python ×2
batch-file ×1
findstr ×1
githooks ×1
github ×1
gitlab ×1
hook ×1
mirror ×1
pytest ×1
python-black ×1
svn ×1
svn-hooks ×1