在尝试使用预提交挂钩时,我遇到了一些困难,包括Intel在 Conda 环境中以格式包形式发布的最新 Lava-nc 。.tar.gz
pip
environment.yaml
使用以下 Conda文件:
# This file is to automatically configure your environment. It allows you to
# run the code with a single command without having to install anything
# (extra).
# First run:: conda env create --file environment.yml
# If you change this file, run: conda env update --file environment.yml
# Instructions for this networkx-to-lava-nc repository only. First time usage
# On Ubuntu (this is needed for lava-nc): …
Run Code Online (Sandbox Code Playgroud) 我正在配置我的 pyproject.toml 以便 bandit 排除测试文件,但它给了我错误 ERROR pyproject.toml : toml parser not available, reinstall with toml extra
这是我的 pyproject.toml
[tool.bandit]
exclude_dirs = ["*/test/*"]
tests = ["B201", "B301"]
skips = ["B101", "B601"]
[tool.pre-commit-hooks.bandit]
exclude = ["test*"]
Run Code Online (Sandbox Code Playgroud)
我运行以下命令:bandit -c pyproject.toml -r .
pre-commit bandit pre-commit.com pyproject.toml bandit-python
首先,我不确定这是否可行,但我需要知道如何做到这一点,如果不是为什么不呢?
我想创建一个C#应用程序,它在subversion存储库的提交过程中运行(我相信预提交),然后添加另一个要提交的文件.
例如,我对Program.cs和Main.cs进行了更改,但没有对 AssemblyInfo.cs 进行更改.我希望能够强制更改AssemblyInfo.cs或任何文件.
我使用SharpSVN编写了一个控制台应用程序,它在post-commit上触发,然后替换了一个文件,但这导致了修订版本号的增加.显然这并不理想.
然后我发现SharpSVN中的SvnLookClient在预提交时运行并且已经开始写一些东西,但是当我意识到CopyFromPath并不意味着我的期望时,我遇到了死胡同:
using (SvnLookClient client = new SvnLookClient())
{
SvnLookOrigin o = new SvnLookOrigin(@"\\server\repository");
SvnChangedArgs changedArgs = new SvnChangedArgs();
Collection<SvnChangedEventArgs> changeList;
client.GetChanged(o, changedArgs, out changeList);
}
Run Code Online (Sandbox Code Playgroud)
或者,我会决定在C#之外执行此操作,但理想情况下我想在C#控制台应用程序中执行此操作,以便我也可以告诉我的存储库服务器执行其他任务,例如在数据库脚本中运行等.
我们有一个引用Common-directory中文件的项目.无论何时打开或编译该项目,都会复制这些文件.由于时间戳更改,Subversion将其视为更改.我只想提交常规Common目录的新更改,或项目中的实际更改.不是编译器为我执行的自动复制.
如何将目录和文件保留在SVN中,但是防止这些不变更被视为变更?是否有一些处理这种情况的"最佳实践"或"首选"方式?
在使用预提交时,有时我只想知道文件名将被传递到挂钩,只是为了验证--from-ref
和to-ref
是否正确。例如,我正在运行:
pre-commit run flake8 --from-ref $(git merge-base master HEAD) --to-ref HEAD
Run Code Online (Sandbox Code Playgroud)
我不确定哪些文件传递给了我的flake8
钩子,添加--verbose
没有帮助,因为flake8
也不会输出文件名。
那么有什么方法可以告诉pre-commit
只输出文件名列表而不运行实际的钩子?
我正在尝试将 flakehell 作为预提交钩子运行。
我的 .pre-commit-config.yaml:
repos:
- repo: local
hooks:
- id: flakehell
name: flakehell
entry: flakehell lint project/
language: python
pass_filenames: true
stages: [push, commit]
verbose: true
Run Code Online (Sandbox Code Playgroud)
pyproject.toml:
[tool.flakehell]
exclude = ["README.md"]
format = "colored"
show_source = true
[tool.flakehell.plugins]
flake8-bandit = ["+*", "-S322"]
flake8-bugbear = ["+*"]
flake8-builtins = ["+*"]
flake8-comprehensions = ["+*"]
flake8-darglint = ["+*"]
flake8-docstrings = ["+*"]
flake8-eradicate = ["+*"]
flake8-isort = ["+*"]
flake8-mutable = ["+*"]
flake8-pytest-style = ["+*"]
flake8-spellcheck = ["+*"]
mccabe = ["+*"]
pep8-naming = ["+*"] …
Run Code Online (Sandbox Code Playgroud) 预提交是一个很棒的工具,我喜欢将其合并到詹金斯管道中,以确保有人在提交到存储库期间不会尝试跳过它。
所以我的问题是:
success
或fail
?我正在开发一个pre-commit==2.15.0
已添加到 python 需求文件中的项目。我安装了要求。现在,当我尝试执行以下操作时,git commit
出现以下错误:
An unexpected error has occurred: ExecutableNotFoundError: Executable `/bin/sh` not found
Check the log at C:\Users\username\.cache\pre-commit\pre-commit.log
Run Code Online (Sandbox Code Playgroud)
在我的预提交日志中,我有:
pre-commit version: 2.15.0
sys.version:
3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)]
sys.executable: c:\users\username\appdata\local\programs\python\python39\python.exe
os.name: nt
sys.platform: win32
Traceback (most recent call last):
File "c:\users\username\appdata\local\programs\python\python39\lib\site-packages\pre_commit\error_handler.py", line 65, in error_handler
yield
File "c:\users\username\appdata\local\programs\python\python39\lib\site-packages\pre_commit\main.py", line 368, in main
return hook_impl(
File "c:\users\username\appdata\local\programs\python\python39\lib\site-packages\pre_commit\commands\hook_impl.py", line 231, in hook_impl
retv, stdin = _run_legacy(hook_type, hook_dir, args)
File "c:\users\username\appdata\local\programs\python\python39\lib\site-packages\pre_commit\commands\hook_impl.py", line …
Run Code Online (Sandbox Code Playgroud) 我突然收到字符串中语法的 flake8 错误。
例如,对于以下代码行:
tags.append(f'error_type:{error.get("name")}')
Run Code Online (Sandbox Code Playgroud)
我收到此错误:E231 missing whitespace after ':'
。
我不想忽略所有E231
错误,因为当它们不引用字符串中的文本时我会关心它们。
我也不想# noqa
为每个字符串添加注释。
我尝试将我的 flake8 版本固定到6.0.0
(这是之前没有引发这些错误的版本)。
我正在运行 flake8 并进行预提交(如果相关的话)。
为什么我突然收到这些字符串错误以及如何将其关闭?
我还应该提到,这种情况尤其发生在 Github Actions 中。
我正在尝试将svnperms实现到存储库中,但是我遇到了一些困难:
预提交具有执行权限:
-rwxrwxr-x 1 svnadm svn 3018 May 27 10:11 pre-commit
Run Code Online (Sandbox Code Playgroud)
这是我在预提交中对svnperms的调用:
# Check that the author of this commit has the rights to perform
# the commit on the files and directories being modified.
SVNPERMS=/usr/local/svn/scripts/svnperms.py
$SVNPERMS -r $REPOS -t $TXN || exit 1
Run Code Online (Sandbox Code Playgroud)
我在指定的位置安装了svnperms.py:
# ls -l /usr/local/svn/scripts
total 24
-rwxrwxr-x 1 svnadm svn 11840 May 25 07:48 svnperms.py
Run Code Online (Sandbox Code Playgroud)
svnperms.py是UNIX格式 - 没有^ M行结尾.
TortoiseSVN回归:
Command: Commit
Modified: C:\projects\Sandbox\Trunk\Test.txt
Sending content: C:\projects\Sandbox\Trunk\Test.txt
Error: Commit failed (details follow):
Error: 'pre-commit' hook …
Run Code Online (Sandbox Code Playgroud)