标签: pre-commit

预提交 isort 没有名为“setuptools”的模块

我正在尝试运行预提交挂钩,但是当它们遇到 isort 挂钩时会失败,该挂钩会引发以下错误:

  File "/home/el/.cache/pre-commit/repoffrjhcx0/py_env-python3/lib/python3.10/site-packages/_distutils_hack/__init__.py", line 92, in create_module
    return importlib.import_module('setuptools._distutils')
  File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named 'setuptools'
Run Code Online (Sandbox Code Playgroud)

我正在使用 docker,并且我已经检查了 setuptools 是否已安装在我的全局计算机和 docker 上。我不明白为什么会出现这个错误。我认为 isort 设置了它自己的环境,但是为什么它不会被安装,因为它是在配置文件pyproject.toml中定义的。

以下是我的预提交和 isort 配置:

.pre-commit-config.yaml

repos:
- repo: https://github.com/pycqa/isort
  rev: 5.8.0
  hooks:
    - id: isort
      args: ["--multi-line=5", "--line-length=120", "--use-parentheses", "--filter-files"]
      exclude: "migrations"
      stages: [commit]
Run Code Online (Sandbox Code Playgroud)

毒物文件

[isort]
line_length=120
skip_glob=*migrations*
multi_line_output=5
sections=FUTURE,STDLIB,THIRDPARTY,FIRSTPARTY,LOCALFOLDER
use_parentheses=true
include_trailing_comma=true
lines_between_types=1
lines_after_imports=2
[testenv:isort]
deps =
    isort
commands =
    isort . --check-only --diff
Run Code Online (Sandbox Code Playgroud)

系统上的Python版本:3.10.1 …

python pre-commit pre-commit-hook isort pre-commit.com

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

Bitbucket 管道 - 安装预提交 ts-lint 时出错

我的管道中有一个步骤在 Bitbucket 上运行我们配置的预提交:

...
- step:
    name: Passing linters
    image: python:3.7-slim-stretch
    script:
      - pip3 install "pre-commit==2.17.0"
      - apt-get update && apt-get --assume-yes install git
      - pre-commit run --all-files

Run Code Online (Sandbox Code Playgroud)

没有进行任何更改,但它突然停止工作。

管道结果:

+ pre-commit run --all-files
[INFO] Initializing environment for https://github.com/psf/black.
[INFO] Initializing environment for https://github.com/psf/black:click==8.0.4.
[INFO] Initializing environment for https://github.com/pre-commit/pre-commit-hooks.
[INFO] Initializing environment for https://github.com/maximevast/pre-commit-tslint/.
[INFO] Initializing environment for https://github.com/maximevast/pre-commit-tslint/:tslint-react@4.1.0,tslint@5.20.1,typescript@4.0.2.
[INFO] Installing environment for https://github.com/psf/black.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] …
Run Code Online (Sandbox Code Playgroud)

bitbucket pre-commit pre-commit-hook bitbucket-pipelines pre-commit.com

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

使用自定义 Pypi 索引中的 extra_dependencies 预提交 mypy

在我的中.pre-commit-config.yaml,我有以下配置mypy

  - repo: https://github.com/pre-commit/mirrors-mypy
    rev: v0.971
    hooks:
      - id: mypy
        args: [--strict]
        additional_dependencies:
          [
            apache-airflow==2.3.3,
            apache-airflow-providers-apache-hive==4.0.0,
            apache-airflow-providers-apache-livy==3.1.0,
            types-protobuf==3.20.4,
          ]
Run Code Online (Sandbox Code Playgroud)

如果所有这些依赖项都来自公共 pypi 索引,则此方法可以正常工作。如果我有一个包来自自定义 pypi 索引,我该怎么办?在这种情况下我该如何更新我的配置?谢谢。

pre-commit pre-commit-hook python-3.x mypy pre-commit.com

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

如何忽略预提交配置中的“rev”?

这是.pre-commit-config.yaml来自预提交的
它将 git 克隆指定的revgit 存储库。
我怎样才能忽略rev并始终 git clone 最新的?

repos:
-   repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v2.3.0
    hooks:
    -   id: check-yaml
    -   id: end-of-file-fixer
    -   id: trailing-whitespace
Run Code Online (Sandbox Code Playgroud)

python pre-commit pre-commit.com

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

在预提交挂钩上时无法写入错误消息

我正在写一个预提交钩子,或者更好,我正在编辑tigris SVN版本标准的钩子.

我的目标是适度的,我只想在没有提交提交消息的情况下向提交的人写一条错误消息.

所以我的想法只是用简单的错误信息写入stderr.但出于某种原因,我的信息似乎永远无法通过.

互联网上的每个人都说我必须写信给stderr.但不知何故,这是行不通的.

REPOS="$1"
TXN="$2"


LOG=""
#here is where it seems to wrong
#if [ ${#LOG} -lt 1 ]
        echo "You did not provide a commit message, please try again." 2>&1
#fi

echo
# Make sure that the log message contains some text.
SVNLOOK=/usr/bin/svnlook
$SVNLOOK log -t "$TXN" "$REPOS" | \
   grep "[a-zA-Z0-9]" > LOG || exit 1

# Exit on all errors.
set -e


# All checks passed, so allow the commit.
exit 0
Run Code Online (Sandbox Code Playgroud)

如果这是一个愚蠢的问题你不得不原谅我,但我是一个Linux新手,所以事先道歉.

谢谢,贾斯帕

svn hook pre-commit svn-hooks

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

用于checkstyle的Svn预提交钩子

这是我当前的checkstyle shell脚本.如果我在TRUNK上提交但在分支上没有,它可以正常工作.我真的不明白为什么它不起作用.有人可以帮帮我吗?

#!/bin/sh

###################################################
#
# Verify Checkstyle
#
###################################################

REPOS="$1"
TXN="$2"

SVNLOOK=/usr/bin/svnlook
JAVA=/opt/ibm/java2-i386-50/bin/java
CHECKSTYLE=/usr/local/checkstyle/checkstyle-all-5.1.jar
TMPDIR=/tmp/$TXN
REPORT=/tmp/$TXN/report
CHECKSTYLE_CONFIG=/usr/local/checkstyle/checkstyle.xml

CHANGED=`$SVNLOOK changed -t "$TXN" "$REPOS" | grep -v "^D" | awk '{print $2}'`
mkdir -p $TMPDIR
for LINE in $CHANGED ; do
    FILE=`echo $LINE | egrep -v Test\\.java$ | egrep -v \\/src\\/test\\/ | egrep -v \\/js\\/ext`
    if [ -n "$FILE" ] ; then
        DIRNAME=`dirname $FILE`
        mkdir -p $TMPDIR/$DIRNAME
        $SVNLOOK cat $REPOS --transaction $TXN $FILE > $TMPDIR/$FILE
    fi
done
$JAVA -jar $CHECKSTYLE -c …
Run Code Online (Sandbox Code Playgroud)

svn hook checkstyle pre-commit

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

Svn预提交挂钩没有被执行

我有一个Centos 7虚拟机(VirtualBox guest)作为我的svn服务器,已配置svn - mod_dav_svn并使一切工作正常:可以结帐并做提交.问题是,当添加预提交钩子然后尝试从Windows机器(VirtualBox主机)提交时TortoiseSVN失败并出现此错误

提交被预提交挂钩(退出代码255)阻止而没有输出.

从我得到的httpd日志

[client xx.xx.xx.xxx:57]无法将资源"/ svn/testrepo /!svn/txn/5-2f"合并到"/ svn/testrepo/trunk"中.[500,#0]

所有权限都设置正确,我甚至尝试777,除非我删除钩子它不起作用.

这是我设置的参考:http: //www.unixmen.com/install-subversion-centos-7/

我想知道我的10-subversion.conf文件中是否缺少某些内容......

我正在使用默认的预提交,它已经设置为可执行文件,并且所有者是apache用户.我做的另一个测试是删除预提交脚本中的所有代码,只留下"退出0"指令.

这就是我的10-subversion.conf文件的样子:

    LoadModule dav_svn_module     modules/mod_dav_svn.so
    LoadModule authz_svn_module   modules/mod_authz_svn.so
    LoadModule dontdothat_module  modules/mod_dontdothat.so

    <Location /svn>
       DAV svn
       SVNParentPath /var/www/svn
       AuthType Basic
       AuthName "Subversion repositories"
       AuthUserFile /etc/svn-auth-users
       Require valid-user
    </Location>
CustomLog logs/svn_logfile "%t %u %{SVN-ACTION}e" env=SVN-ACTION
Run Code Online (Sandbox Code Playgroud)

svn pre-commit

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

VS2015缺少禁用模式策略?

我正在尝试添加签入策略以防止某些文件类型被提交到我们的源代码控制,但是当我从VS2015中添加签入策略时,"添加签入策略"中提供的列出的选项窗口未显示"禁止模式策略"作为选项:

在此输入图像描述

我通过执行以下操作来实现此选项:

  • 导航到团队资源管理器
  • 点击"设置"
  • 在"团队项目"下点击"源控制"
  • 单击"签入策略"选项卡
  • 按"添加"以显示"添加签到策略"窗口(如上所示)

如何在VS2015中设置禁止模式策略?它移动了吗?

我可以确认此政策目前尚未在我们的源代码管理中设置.我们正在使用TFS.

version-control tfs commit pre-commit visual-studio-2015

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

我可以像git一样跳过mercurial pre-commit hooks吗?

我想做一些像git commit --no-verifymercurial 这样的事情.有什么办法吗?

git mercurial hook pre-commit pre-commit-hook

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

预提交未找到 python 包

我使用pyenv来支持拥有不同版本的 python。

在使用 python 3.7的项目中,我还希望在进行代码更改时使用预提交进行linting 。

但是当 lint 规则运行时,预提交似乎正在用户下的缓存文件夹中查找 python 包,因此无法找到它们......即使它们安装在系统级别。例如:

>git ci -m'lint test'  
...
...
/Users/[]/.cache/pre-commit/repo180cws4u/py_env-python3.7/lib/python3.7/site-packages/ 
...
ModuleNotFoundError: No module named 'six'


>pip list | grep six
six                 1.11.0
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题。(一位同事通过运行/Users/[]/.cache/pre-commit/repo180cws4u/bin/python install -m six解决了问题,但感觉不对..必须可以配置为使用系统包或类似的......?

python pre-commit pyenv pre-commit.com

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