问题标签 [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.

0 投票
1 回答
4629 浏览

git - 使用钩子强制 git commit 消息的特定格式

我想使用 git 挂钩强制提交消息符合特定格式(它们应该以#number 结尾)。我试过安装这个钩子,也在这里引用,但我不断收到消息:

我使用的脚本与示例中的脚本完全相同,并且都给出了相同的错误。例如,我尝试过:

有什么问题?

0 投票
3 回答
3945 浏览

svn - 如何使用预提交挂钩检查提交给 SVN 的文件是否以 UTF-8 编码?

我正在尝试在 Linux Bash 中编写一个 SVN 预提交挂钩脚本,如果无法将文件解析为 UTF-8,它将拒绝提交。

到目前为止,我已经编写了这个脚本:

问题是 iconv 需要提交文件的路径(或其他形式的文本),我不知道如何获取它。

任何人都可以帮忙吗?

0 投票
1 回答
1182 浏览

svn - SVN 预提交钩子仅在 shell 脚本中验证子目录名称

我正在尝试添加一个预提交挂钩,以 yyyymmdd 格式验证子目录名称。它应该仅适用于特定目录而不适用于整个项目文件夹。请帮助编写挂钩脚本。

0 投票
1 回答
722 浏览

linux - 为什么从 SVN 事务读取而不是从 SVN 修订版读取时 iconv 退出并出错?

%%问题已解决,下面的代码按预期运行%%

我正在尝试在 Bash 中编写一个 SVN 预提交钩子,用于测试传入文件的 UTF-8 编码。经过大量字符串处理以获取传入文件的路径并忽略目录/图片/已删除文件等,我使用“svnlook cat”读取传入文件并将其通过管道传输到“iconv -f UTF-8”。在此之后,我使用 ${PIPESTATUS[1]} 读取了 iconv 操作的退出状态。

我的代码如下所示:

问题是,每次我尝试提交带有斯堪的纳维亚字符(如“æøå”)的文件时,iconv 都会返回错误(退出 1)。

如果我禁用脚本,请使用“æøå”提交文件,将“svnlook -t”和“svnlook cat -t”中的-t(事务)更改为-r(修订版),然后使用修订版手动运行脚本“æøå”文件的编号,然后iconv(以及脚本)返回出口0。一切都是花花公子。

为什么 svnlook cat -r 能按预期工作(返回 UTF-8 编码的“æøå”字符串),但 svnlook cat -t 不能?

0 投票
1 回答
3689 浏览

git - git pre-commit hook,将文件添加到索引中

我正在尝试编写一个简单的预提交挂钩来检查文件是否被修改,如果是,则将其压缩并将其添加到当前索引中,如下所示

我有 2 个问题,1 我的状况不合格,每次,我都必须有错字或类似的东西,但我不知道是什么?这是我回来的错误:

我的第二个问题是,即使我删除了文件从未真正添加到提交中的条件,它也被修改了,但从未添加过。

谢谢,狮子座

0 投票
5 回答
18517 浏览

github - github 支持 precommithooks 吗?

目前我们正在使用SVN。我想开始使用 GitHub,但一个绝对的要求是我们需要像我们目前拥有的那样对代码进行预提交(premerge)验证。GitHub 是否支持 precommithooks(premergehooks)?

我们是一个由 5 名开发人员组成的团队。我们达成协议,所有代码(JavaScript)都应该通过类似 JSLint 的验证。自愿验证已被证明是行不通的,因为它很容易被遗忘。我们如何确保其他人可以使用的代码可以保证通过 JSLint(或类似的)进行验证?

0 投票
2 回答
620 浏览

c# - SVN pre-commit-hook,有没有办法在客户端窗口中设置日志消息?

感谢您阅读我的问题:)

我的目标是在向 SVN 服务器触发提交之前修改此消息:

在此处输入图像描述

我已经有一个启动和预提交钩子(C#),当我尝试提交某些东西时它们都会被调用。我还有一个可用的 SharpSvn 库。但不幸的是,我没有前进,我不知道如何填写此消息。

那么有可能吗?如果可以,怎么做?我很高兴每一个小提示:)

0 投票
2 回答
1733 浏览

svn - 在预提交脚本中检测分支重新集成或合并

在预提交脚本中,是否有可能(如果有,如何)识别源自svn merge?

svnlook changed ...显示已更改的文件,但不区分合并和手动编辑。

理想情况下,我还想区分标准mergemerge --reintegrate.

背景:

我正在探索使用预提交挂钩来为我们的项目强制执行 SVN 使用策略的可能性。

其中一项政策规定,某些目录(如/trunk)不应直接修改,只能通过重新集成功能分支进行更改。因此,预提交脚本将拒绝对这些目录所做的所有更改,除了分支重新集成。

有任何想法吗?


更新:

我已经探索了这个svnlook命令,最接近的是检测和解析svn:mergeinfo对目录属性的更改。这种方法有一些缺点:

  1. svnlook可以标记属性更改,但不能标记更改了哪个属性。proplist(需要与先前版本的差异)
  2. 通过检查 中的更改svn:mergeinfo,可以检测到svn merge已运行。但是,无法确定提交是否纯粹是合并的结果。合并后手动进行的更改将不会被检测到。(相关文章:Diff transaction tree against another path/revision
0 投票
1 回答
507 浏览

svn - 将事务树与另一个路径/修订进行比较

在预提交脚本中,如何获取已提交更改与同一存储库中任意路径/修订版的差异?

例如,当提交对其中文件的更改时/trunk,我想获得提交的/trunk(还不是修订版)与例如/branches/feature_x(它的一个分支/trunk)的差异。

据我所知,svnlook diff仅显示该事务提出的更改,而svn diff仅适用于修订而不适用于事务。

一种蛮力的方法是为每个被修改的文件区分“ svnlook cat ...”和“ ”的输出。svn cat PATH:REV然而,这似乎相当低效,而不是我想在钩子脚本中拥有的东西。

背景:

我正在尝试创建一个预提交脚本,该脚本拒绝对某些目录的所有提交,并仅允许通过分支重新集成进行更改(相关帖子:检测分支重新集成或在预提交脚本中合并)。

到目前为止,似乎可以svn merge通过检查svn:mergeinfo基目录的属性来检测 的使用。但是,无法区分合并应用的文件修改和手动修改的文件,因此不会检测到合并后的编辑。

我希望能够将提交的事务树与合并的源进行比较,以确保没有进行额外的更改。merge --reintegrate(根据我们的项目政策,所有冲突解决都在重新集成之前在功能分支中完成,因此在into之后不需要更改/trunk)。

0 投票
3 回答
1063 浏览

svn - 在预提交中确定事务的基本修订

我正在编写一个预提交挂钩,我想在事务之前根据文件的内容强制执行一些规则。因此,当事务开始时,我想 svnlook cat 标记任何标记为“U”、“UU”或“D”的文件的内容,而不需要挂起的更改。我是否可以安全地使用提供的事务标识符(预提交的第二个参数)并去掉破折号和它后面的任何字符并认为是“基本修订版”?有没有更好的方法来获取这些信息?