问题标签 [pre-commit-hook]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
svn - SVN 预提交挂钩脚本以阻止用户更改某些存储库文件
我想阻止我的 SVN 存储库的用户检查对某些文件的更改。我通过使用以下预提交钩子脚本完成了这项工作。然而,受限文件的数量正在增长,提交更改变得非常缓慢。我想知道是否有更有效的编码方式,我玩过变更列表,但我无法做到这一点。
提前致谢
预提交挂钩脚本(基于 Windows 的 SVN 存储库):
git - Git 子模块提交钩子
我正在使用一个 git 子模块(我们称之为 SubmoduleRepo),以便我可以将我的模块包含在几个项目中。
我可以从任何使用它的项目提交给 SubmoduleRepo。
我可以轻松地更新、提交和推送到 SubmoduleRepo。
每当我在包含 SubmoduleRepo 的项目中的目录中工作时提交某些内容时,我都需要执行一个提交挂钩(当我在 SubmoduleRepo 中工作时,提交挂钩按预期执行)
子模块的目录中没有 .git 文件夹(只有指定当前目录路径的 .git 文件)。
git - 检查提交是否是预提交钩子中的第一次提交
目前我正在使用 pre-commit 挂钩来禁止提交到主分支(迫使我在其他分支上工作并合并更改)。这不允许我对新创建的存储库进行初始提交。如果它是第一次提交,我想添加一个检查以允许在 master 上提交。
我已经尝试了多个版本,但没有运气...
git - NetBeans 会忽略我的 Git 预提交挂钩吗?
我正在尝试为 Git 使用预提交挂钩。钩子如下所示:
因此,它总是会失败,即我的 Git 提交应该失败。
如果我用 git 添加一些东西然后在命令行中提交它,我很可能会失败并且我的提交失败。
但是,如果我使用 NetBeans 提交,我的预提交钩子不会被执行。它似乎只是忽略它。
我正在使用Ubuntu和 NetBeans 7.1。预提交钩子的权限是 -rwxrwxrwx (只是为了测试目的将其更改为 777)。
这怎么可能?
git - 预提交挂钩中的 git stash 在第一次提交时失败
我正在研究一个使用 YUI Compressor 的预提交钩子来缩小任何已准备提交的 CSS 和 JavaScript 文件。文件缩小后,缩小的版本会自动暂存以进行提交。我读过自动将机器生成的文件添加到提交中通常不是一个好主意,但我认为在这种情况下它是可以的。这是它的样子:
输出git status
:
输出git commit -m "Updated site-wide styling"
:
这里发生的是 pre-commit hook 使用 YUI Compressor 来缩小_site-wide.css
,将结果输出到site-wide.css
(没有前导下划线)。然后它上演site-wide.css
提交。预提交钩子跳过了,_subpage.css
因为尽管它已被修改,但它并没有被提交。
由于磁盘上的 CSS 和 JavaScript 文件可能与暂存于提交的 CSS 和 JavaScript 文件不同,因此我git stash -q --keep-index
在压缩文件之前运行,然后在git stash pop -q
之后运行。这个预提交钩子在已经有提交的存储库上工作得很好,但是如果我在第一次提交之前将预提交钩子放在适当的位置,我会得到这个:
输出git status
:
输出git commit -m "Initial commit"
:
输出git status
:
我现在将粘贴预提交挂钩的代码。请记住,为了灵活,我编写了这个脚本,以便它可以在任何 CakePHP 项目中运行,而不仅仅是具有 Git 存储库的项目。我还编写了它,以便您可以强制它缩小所有 CSS 和 JavaScript 文件,而不仅仅是暂存提交的文件。这是通过运行来完成的.git/hooks/pre-commit force
。这是代码:
我怎样才能使这项工作?任何帮助,将不胜感激。
php - 如何美化phing的输出?
Phing,默认情况下,甚至任何内置记录器(phing.listener.NoBannerLogger、phing.listener.AnsiColorLogger、phing.listener.XmlLogger 和 phing.listener.HtmlColorLogger)都有相当详细的输出。
我的用例是使用 Phing 作为预提交挂钩来运行测试。因此,我不关心日志 phing 中可能提供给我的所有信息。我只是将它用作运行测试的多平台工具。
例子:
其中许多行对于我的用例来说确实是多余且无用的。实际上,我什至没有按原意运行“构建”。
我想让 phing 日志看起来像这样:
如果您认为我出于我的目的使用了不好的工具,也请告诉我,我很高兴知道还有别的东西。
svn - 如何将 svn 挂钩链接到签出的存储库
如何将 svn 挂钩链接到签出的存储库?我已经检查了一个示例 SVN 存储库。使用 SVN-admin 选项,我创建了 svn repo(?),其中包含示例 hooks 。但是,如何将我新编写的脚本链接到本地签出的仓库?它需要,因为我在放入管理区域之前在本地测试了脚本。
谢谢
php - 代码嗅探器 SVN 预提交钩子
我一直在尝试让代码嗅探器按照 pear 的指南充当 svn 预提交钩子。然而,虽然我 100% 确定我的代码应该是无效的,但我没有收到任何错误,并且项目提交没有问题。
除了按照梨子给出的指导,还有什么需要做的吗?
我的 phpcs-svn-pre-commit 文件:
还有我从颠覆中提交的预提交文件:
我对 SVN 和代码嗅探器都很陌生,所以我几乎只是在遵循指南并运行测试。任何有关使其工作的建议或提示将不胜感激:)
更新
我已经设法从我的 svn 钩子中得到了一些结果,但是它现在显示了一个基于脚本的错误列表。我不熟悉 SVN 所需的脚本语言,所以我不知道如何解决这些问题。
错误列表:
REPOS 不被识别为内部或外部命令
TXN 未被识别为内部或外部命令
未知命令'/usr/local/bin/svnlook'
$SVNLOOK 未被识别为内部或外部命令
git - 使用 Git 获取要在 pre-commit 挂钩中提交的文件列表
可能重复:
Git 预提交挂钩:更改/添加的文件
在提交源代码列表之前添加某种代码验证器或检查器可能会很好。Facebook 甚至将自动化测试集成到提交过程中(至少我听说过)。我需要的是一种获取将要提交的文件列表的方法,而不仅仅是编辑。这里有几个原因:
git commit -m "message"
当我尝试使用它们来获取文件时,可以修改默认消息绕过 prepare-message 和 commit-msg 挂钩。- 预提交钩子不会从
git commit
命令中获取任何参数,因此不容易判断正在提交的文件,尤其是部分提交。 - 我们在一个共享工作站上有多个用户,一个共享用户和一个共享本地存储库(我对此无能为力,我只是在那里做我的工作),所以当我提交我的代码时我不想验证其他人的代码(很确定这个感觉是相互的)。因此,如果我使用
git diff-index --name-only HEAD
,我会得到比我想要的更多的代码来验证。 - 自动化很棒,我认为在挂钩中安装代码验证器很酷。
- 如果验证失败,提交过程最好中止。
如果有任何其他方法可以按照我描述的方式自动验证代码,请告诉我如何。我真的需要这个。非常感谢。
git - 预提交钩子获取部分提交的文件列表
我知道运行 git-diff 和其他工具可以识别存储库中的更改,但是当我进行部分提交时,我只需要将提交的文件(而不是被触及的整个文件集)传递给预提交钩。
比如我修改了三个文件,只提交了两个,我想让 pre-commit 钩子知道这两个文件的名字。
然后我执行:
预提交挂钩如何仅获取两个文件的列表?