我正在尝试在SVN中构建一个预提交脚本,我想仅在修改的行上运行PHP_CodeSniffer (而不是整个文件).到目前为止,我有这个脚本:
#!/bin/sh
REPOS="$1"
TXN="$2"
# Make sure that the log message contains some text.
SVNLOOK=/usr/bin/svnlook
$SVNLOOK log -t "$TXN" "$REPOS" | \
grep "[a-zA-Z0-9]" > /dev/null || exit 1
# Check for code validation before commiting the script using PHP_CodeSniffer
/tmp/pear/download/PHP_CodeSniffer-1.4.3/scripts/phpcs-svn-pre-commit "$REPOS" -t "$TXN" >&2 || exit 1
# All checks passed, so allow the commit.
exit 0
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用预提交钩子在提交之前检测 eslint 错误。我正在使用 husky 和 lint-staged。但它对 src 中的所有文件运行 lint 命令,而不仅仅是对暂存文件运行。这是我的 package.json 文件。
"scripts": {
"test:ci": "cross-env CI=true react-scripts test --bail --passWithNoTests",
"lint": "eslint src/**/*.{js,jsx}",
"lint:fix": "eslint . --fix",
"precommit": "npm run lint && npm run test:ci"
}
Run Code Online (Sandbox Code Playgroud)
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
Run Code Online (Sandbox Code Playgroud)
"lint-staged": {
"*.js": [
"npm run precommit"
],
"*.jsx": [
"npm run precommit"
]
}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以使它仅适用于暂存文件而不适用于目录中存在的其他文件?
pre-commit-hook eslint husky eslint-config-airbnb lint-staged
我希望有一个Mercurial钩子,它将在提交事务之前运行,如果提交的二进制文件大于1兆字节,该事务将中止事务.我找到了以下代码,除了一个问题,它工作正常.如果我的更改集涉及删除文件,则此挂钩将引发异常.
钩子(我正在使用pretxncommit = python:checksize.newbinsize):
from mercurial import context, util
from mercurial.i18n import _
import mercurial.node as dpynode
'''hooks to forbid adding binary file over a given size
Ensure the PYTHONPATH is pointing where hg_checksize.py is and setup your
repo .hg/hgrc like this:
[hooks]
pretxncommit = python:checksize.newbinsize
pretxnchangegroup = python:checksize.newbinsize
preoutgoing = python:checksize.nopull
[limits]
maxnewbinsize = 10240
'''
def newbinsize(ui, repo, node=None, **kwargs):
'''forbid to add binary files over a given size'''
forbid = False
# default limit is …Run Code Online (Sandbox Code Playgroud) 假设您正在与20人的开发团队合作或支持,并希望使用git pre-commit钩子作为对正在提交或推送的代码强制执行某些验证的方法.例如,您希望确保人们不检查大型资产或SWF文件的调试版本,您还要检查代码是否具有足够的测试覆盖率等.
1.)应该有一个可以管理这些钩子的中心位置
2.)它们应该在所有用户/机器上自动更新
我正在尝试创建一个Mercurial钩子,当提交被推送到主存储库时运行.我创建了一个python脚本,如下所示:
# commit.py
from mercurial import ui, hg
from mercurial.i18n import gettext as _
def getV1ID(ui, repo, **kwargs):
ui.write("The hook works!!!")
v1id = ui.prompt('Enter the VersionOne ID')
ui.write('VersionOne ID: '+v1id)
对于每个分支,这commit.py是重复的,因为它包含在代码被推送到主存储库之前需要运行的机制.只有那些预推机制通过才能推动推动.用户可以修改他们的本地commit.py,以便他们只运行这些预推送操作的子集,具体取决于他们所处理的项目,并且每个人可以一次处理多个项目.所以,commit.py不能是可以驻留在.hg文件夹中的全局python脚本.
为了使mercurial运行本地commit.py,在我的mercurial.ini文件中(在C:\ Users\UserName\mercurial.ini中),我添加了以下语句:
[hooks] prechangegroup = python:./commit.py:getV1ID
如果我把它放在.hg文件夹中,python脚本会运行,但是当我这样做时它不会运行.任何人都可以帮助我阐明这个问题吗?非常感谢.
我们在Github有一个帐户,并在Github(私人存储库)中托管我们的所有项目.
我们希望强制执行编码标准以及我们用于内部目的的其他钩子.我们已经让这些钩子很好地用于颠覆,因为存储库位于一个地方,管理这些钩子非常好.
使用Github,看起来我失去了在主存储库(?)中添加钩子的能力,因此我很震惊:
我正在寻找想法/建议,让我的生活更轻松,非常感谢任何帮助.
有没有办法以预先挂起的方式运行gruntjs任务.例如,我想防止提交失败的测试或jshint问题.我还考虑为每次提交运行代码美化器.
确切的需要是强制将所有提交到Bitbucket的提交链接到JIRA票证.
我之前在Subversion上通过创建一个在提交文本中查找JIRA票证的提交钩子来做到这一点,但我不希望这个解决方案必然受限于之前的体验.
Bitbucket是否有设置某个地方强制关联所有提交对Jira门票?如果不是 - 它是否具有强制提交评论质量的机制(某种钩子或正则表达式)?如果不是 - GIT是否有可以用于此目的的东西?
如果注释文本不包含前导JIRA票证,后跟冒号,后跟一些提交文本,那么想象的解决方案是(但不限于是)提交失败的提交钩子,这样:
git commit -m "foo"
Run Code Online (Sandbox Code Playgroud)
失败了
git commit -m "PRJ-9327: foo"
Run Code Online (Sandbox Code Playgroud)
承诺...
我正在寻找一些帮助来在 Windows 上编写一个预提交钩子以在提交时检查 Jira 问题密钥。如果 Jira 密钥不存在,则不允许提交。我找不到任何方法。我是脚本的新手。任何帮助都会受到高度赞赏。
当我们提交更改时使用 Prettier 会格式化 Husky预提交中文件内的所有代码。有没有更好的方法来仅更改文件中已修改的代码行?
pre-commit-hook ×10
git ×4
hook ×2
mercurial ×2
svn ×2
windows ×2
bitbucket ×1
codesniffer ×1
commit ×1
eslint ×1
git-commit ×1
github ×1
gruntjs ×1
husky ×1
jira ×1
lint-staged ×1
php ×1
prettier ×1
python ×1