我的情况是这样的:我在家里安装了Subversion服务器,我们也在我工作的公司使用Subversion.
在工作中,我们使用锁定/编辑/解锁模型(主要是因为我们正在从Visual SourceSafe转换,目前更容易).目前,这是通过在所有添加的文件上设置'needs-lock'属性来实现的(使用每个客户端计算机上的SVN客户端配置文件的auto-props部分).
但是,我不想将这个模型用于我的家庭SVN服务器(我更喜欢编辑/合并/提交工作方式),所以目前我从工作PC到家庭服务器提交任何东西后,我必须手动删除我添加的任何文件的needs-lock属性.
有没有办法设置SVN客户端只将此属性应用于提交给特定服务器的文件?或者我是以错误的方式去做的:我应该在工作服务器上使用钩子来添加这个属性而不是客户端吗?
非常感谢任何帮助或建议.
编辑:显然,你不能在服务器上这样做(或至少强烈建议你不这样做).
我们客户的一个SVN存储库在单个存储库下有很多项目.现在我想通过预提交钩子检查其中一个项目的编码标准.
如果我配置预提交,它将影响存储库中的所有项目(文件夹),如何告诉钩子脚本仅在特定文件夹(或项目)中的文件时触发(检查编码标准) ) 承诺.
UPDATE
编码标准是Zend的故意,我将使用PHPCS(PHP编码标准)来验证编码标准.
我正在开发验证和linting实用程序,以与各种提交钩子集成,包括Git one
https://github.com/miohtama/vvv
目前,验证器和连接器在每次提交时都针对整个项目代码库运行.但是,仅针对更改的文件运行它们会更加优化.为此,我需要知道我的Git precommit钩子中的已更改文件列表(在Python中)
https://github.com/miohtama/vvv/blob/master/vvv/hooks/git.py
我有什么选择来提取已更改的文件列表(如果重要的话,在Python中)?
是否可以在Pycharm/Intellij Idea中的任何提交之前运行指定的脚本?我想确保测试没有被破坏.谢谢.
我是一个正则表达式新手,我不知道如何为我正在尝试做的这个模式设置正则表达式。
该表达式应位于 Python 预提交脚本中,如果提交的文件与其匹配,它将运行预提交挂钩。
我的示例文件列表
vars/prod-region1/mysql.yml
vars/prod-region1/keys.yml
vars/prod-region1/test.yml
vars/stage-region2/mysql.yml
vars/stage-region2/keys.yml
vars/stage-region2/test.yml
vars/local/mysql.yml
vars/local/test.yml
Run Code Online (Sandbox Code Playgroud)
我需要一个正则表达式模式来匹配属于以下目录模式的文件
我现在的努力是
vars/(prod*|stage*)/(mysql|keys).yml
Run Code Online (Sandbox Code Playgroud)
这是严重错误的。任何帮助都会很棒。
我正在使用 GitKraken (不确定是否相关),当我尝试提交时,我收到以下错误消息:

当我按下“查看挂钩输出”按钮时,我得到以下信息:
预提交
husky > npm run -s 预提交(节点 v8.9.4)[?25l
npm > 运行 src/**/*.js 的任务
\ 纱线格式 git add (...这两行很多...)
\ 纱线格式 git add
“纱线格式”发现一些错误。请修复它们并再次尝试提交。纱线运行 v1.6.0 $ prettier-standard './src/**/*.js' C:\mypath\myfile.js info[访问 [0;1mhttps://yarnpkg.com/en/docs/cli/run有关此命令的文档。
prettier-eslint [错误] 由于 eslint 错误,eslint 修复失败 prettier-standard [错误] 格式化“C:\mypath\messages.js”时出现错误:TypeError:无法读取 null 属性“范围”
at SourceCode.getTokenBefore (c:\mypath\index.js:303:18)
at checkSpacingBefore (C:\mypath\template-curly-spacing.js:52:42)
at TemplateElement (C:\mypath\template-curly-spacing.js:117:17)
at listeners.(anonymous function).forEach.listener (C:\mypath\safe-emitter.js:47:58)
at Array.forEach (<anonymous>)
at Object.emit (C:\mypath\safe-emitter.js:47:38)
at NodeEventGenerator.applySelector (C:\mypath\node_modules\eslint\lib\utilode-event-generator.js:251:26)
at NodeEventGenerator.applySelectors (C:\mypath\node_modules\eslint\lib\util\node-event-generator.js:280:22)
at NodeEventGenerator.enterNode (C:\mypath\node-event-generator.js:294:14)
at CodePathAnalyzer.enterNode (C:\mypath\code-path-analyzer.js:608:23)
at Traverser.enter [as _enter] …Run Code Online (Sandbox Code Playgroud) 我开始使用 Prettier + eslint 使用pretty-quick& husky(选项 2)。它的行为符合预期,即在提交(或修改)期间重新格式化代码并包含提交中的更改。
我的 monorepo 需要(几个)更多的预提交钩子,所以我最终迁移到pre-commit.com(选项 3)。现在,当我提交或修改时,Prettier 会修改文件并返回Failed状态。这造成了一个相当烦人的工作流程,我被迫添加文件并尝试再次提交更改。
有什么方法可以将更改重新暂存为提交的一部分吗?
我在预提交和黑色方面遇到了麻烦。
一切工作正常,直到我用 清除缓存pre-commit clean。现在我总是收到错误
该挂钩
black需要预提交版本 2.9.2,但已安装版本 2.6.0。也许运行`pip install --upgrade pre-commit
如果我检查我的版本,我正在运行最新的预提交版本 (v2.12.1)。另外,如果我运行推荐的命令,则不会发生任何变化,并且会出现相同的错误。如果我停用black挂钩,错误就会消失,所以我至少知道这是黑色的问题。
我尝试将黑色版本更改为stable最新版本,但没有任何帮助。
我有什么想法可以解决这个问题吗?
我的预提交配置:
- repo: https://github.com/ambv/black
rev: stable
hooks:
- id: black
language_version: python3.8
exclude: |
(?x)(
migrations/|
config/|
_build/|
buck-out/|
build/|
dist/
)
Run Code Online (Sandbox Code Playgroud)
非常感谢帮助
我将此添加到pre-commit-config.yml
- repo: local
hooks:
- id: python-hook
name: python-hook
entry: python python_script.py
language: python
pass_filenames: false
Run Code Online (Sandbox Code Playgroud)
哪里python_script.py有以下内容
#!/usr/bin/env python
import os
print(os.environ["VIRTUAL_ENV"])
import requests
Run Code Online (Sandbox Code Playgroud)
该软件包requests安装在活动虚拟环境中,当我运行预提交时,我得到以下输出
/path/to/home/.cache/pre-commit/repouecs3sp4/py_env-python3.7
Traceback (most recent call last):
File "python_script.py", line 7, in <module>
import requests
ModuleNotFoundError: No module named 'requests'
Run Code Online (Sandbox Code Playgroud)
这里的问题是虚拟环境的路径显然被切换到了不同的路径/path/to/home/.cache/pre-commit/repouecs3sp4/py_env-python3.7。
我在这里缺少什么吗?感谢您的帮助
我在大多数 Python 项目中使用预提交,并且在其中许多项目中,我需要使用 pylint 作为本地存储库。当我想要提交时,我总是必须激活 python venv 然后提交;否则,我会收到以下错误:
black....................................................................Passed
pylint...................................................................Failed
- hook id: pylint
- exit code: 1
Executable `pylint` not found
Run Code Online (Sandbox Code Playgroud)
当我使用vscode版本控制提交时,我得到同样的错误;我搜索了这个问题,但没有找到任何解决方案来避免 VSCode 中的错误。
这是我的典型.pre-commit-config.yaml:
repos:
- repo: https://github.com/ambv/black
rev: 21.9b0
hooks:
- id: black
language_version: python3.8
exclude: admin_web/urls\.py
- repo: local
hooks:
- id: pylint
name: pylint
entry: pylint
language: python
types: [python]
args:
- --rcfile=.pylintrc
Run Code Online (Sandbox Code Playgroud) python pre-commit pre-commit-hook visual-studio-code pre-commit.com
pre-commit-hook ×10
pre-commit ×6
git ×5
python ×3
svn ×2
codesniffer ×1
exit-code ×1
gitkraken ×1
php ×1
prettier ×1
properties ×1
pycharm ×1
python-3.x ×1
regex ×1