问题标签 [pre-commit]

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 回答
1705 浏览

git - Git设置跳过某些文件的预提交挂钩


免责声明:是的,我已经阅读了Skip Git 提交挂钩并且我知道该-n标志,但这不是我想要的。


我有一个预先提交的钩子,它运行是为了做一些代码美化(用空格替换制表符,删除双空行,......)。

但是,在某些用例中我不希望钩子运行:例如,当我签入一些 Makefile 时,我不能简单地将制表符替换为空格,因此我必须跳过这些文件。

如果我是唯一的开发人员,我会使用-nflag 以防止 hook 运行,但是还有其他人使用不知道-nflag 的 UI(咳嗽tortoisegit),他们不会愿意指定一些标志到commit.

除了直接在钩子中实现跳过和明显的-n方式:还有其他方法可以防止预提交钩子运行吗?

0 投票
2 回答
212 浏览

git - Find files that were conflicting or locally edited during git merge commit

Background: I'm working on a pre-commit tool. As a developer it can be quite frustrating to pull another developer's branch and have the pre-commit hook complain loudly about files that I haven't even touched.

What I'd like to be able to do in my implementation is in a merge-commit case only run the hooks on files that were either conflicting or manually edited by me locally during the merge conflict.

What I've tried so far:

  • git diff --staged - This is what the current solution does and isn't correct because it contains all of the files including the ones that merged cleanly.
  • git diff MERGE_HEAD - This is pretty close, but if the branch I am merging in branched from master after I did, this contains all of the changes from master that I haven't yet merged.
  • .git/MERGE_MSG contains the list of conflicting files. This seems like a good starting point but does not contain locally edited files.
  • After committing, git show --name-only gets me exactly what I want. But that's too late (I'm implementing pre-commit after all :D)
0 投票
1 回答
2077 浏览

git - 使用 git commit -a 时如何防止 Git 跳过 pre-commit 钩子?

我们所有的 Puppet 配置都有这个 repo。我编写了以下内容来验证任何更改的 .pp 文件,并在验证失败时退出提交。预提交脚本在触发时正常运行,git commitgit commit -a似乎完全跳过了钩子。我们git commit -a专门使用,所以这种行为有点破坏交易。

难道我做错了什么?或者,我可以做些什么来复制 git commit -a 在预提交脚本中的行为?

0 投票
0 回答
97 浏览

svn - 如何在预提交挂钩中识别重命名的文件

我需要将重命名的文件与每个提交挂钩中的提交文件列表区分开来。

例如,我检查了一个包含更多文件的目录。我重命名了一些文件,删除了一些文件,修改了一些文件,添加了一些文件并提交了文件夹。

在这里,我只需要识别重命名的文件。

谢谢...,

0 投票
0 回答
372 浏览

mercurial - Mercurial 预提交挂钩:如何区分已更改和已提交的文件

我有以下代码用于获取当前变更集中所有文件的列表:

但事实证明,在 changeset.files() 中返回所有已更改的文件,而不仅仅是那些标记为已提交的文件。

Mercurial 当然,实际上知道这两种文件之间的区别,所以我mercurial/cmdutil.py从 mercurial repo 中检查了代码,发现了这段代码:

但问题是,在预提交挂钩中,所有文件都被标记为已修改,不确定这是故意还是错误。

好的,接下来我尝试使用pretxncommitor commithook 代替precommit,但在这种情况下 ctx 根本没有modified,addedremoved方法。

所以,问题是:如何区分更改的文件和将在预提交挂钩中提交的文件?

0 投票
1 回答
5678 浏览

java - 如何使用来自 Maven 的 sonarQube 在提交之前收集增量分析

问题:如何使用来自 Maven 的 sonarQube 在提交之前收集增量分析?

背景: 我们正在使用 SonarQube 4.1.2 对使用 Maven 构建的 java 项目执行分析。我们已将问题报告插件 1.1 安装到服务器上。

我已经在构建控制台中启用了增量报告,并且可以看到增量数据正在使用 maven 命令从持续集成服务器中正确提供: mvn org.codehaus.mojo:sonar-maven-plugin:2.3.1:sonar -P sonar -Dsonar.java.target=1.7 -Dsonar.java.source=1.7 -Dsonar.profile=MyProfileName -Dsonar.branch=branchID

有一个相关的 Maven 配置文件:

从持续集成 CI 服务器日志中,我可以按预期在控制台上看到增量报告:

当从开发机器调用它以使用以下命令进行增量分析时:mvn org.codehaus.mojo:sonar-maven-plugin:2.3.1:sonar -Dsonar.profile=MyProfileName -Dsonar.branch=branchID -Dsonar.analysis.mode=incremental -Dsonar.host.url=http://mySonarHostName:9000 -Dsonar.issuesReport.html.enable=true -Dsonar.issuesReport.console.enable=true -Dsonar.dynamicAnalysis=reuseReports

我收到一份增量报告,其中包含修改后的代码预期的更多问题。奇怪的是,这里的数字也大于在 sonarQube 服务器上测量的项目问题总数:

参考链接 作为调查的一部分,我一直在咨询以下链接:

提交前分析的三个选项 http://www.sonarqube.org/three-options-for-pre-commit-analysis/

SonarQube 中的分析与预览与增量预览 http://www.sonarqube.org/analysis-vs-preview-vs-incremental-preview-in-sonarqube/

问题报告插件http://docs.sonarqube.org/display/SONAR/Issues+Report+Plugin

CodeHaus 声纳 Maven 插件 http://mojo.codehaus.org/sonar-maven-plugin/plugin-info.html

更新 (2014/07/16) 注意到这个线程 [ http://sonarqube.15.x6.nabble.com/Incremental-run-mode-td5024228.html]。这说明增量正在处理文件的哈希以确定要分析的文件。

我正在从事的项目生成了声纳没有被告知忽略的代码。我假设这会导致额外的流失(除了扫描机器生成的代码是一个坏主意)。为了探索这个理论,我将添加-Dsonar.exclusions=com/generatedpackage/**/*.java到命令中。

更新 (2014/07/17)

通过在 sonar.exclusions 中指定生成的源,减少了为“增量”分析检测到的违规数量。一旦这些都考虑在内,问题/违规的数量就会与我引入的用于在本地验证流程的问题数量保持一致。为了简化对此的维护,然后我使用以下模式简化了所有生成文件的抑制指标:file:**/generated*/**

为了统一起见,我能够在正在分析的项目的根 POM 中指定这一点。

如上所述,声纳 Qube 论坛帖子解释说,增量分析只会分析哈希与声纳 Qube 服务器上的哈希文件不匹配的文件。

0 投票
1 回答
203 浏览

python - SVN:获取在 python 预提交钩子中发生提交的目标分支

我正在 python 中为 SVN 存储库编写我的预提交挂钩文件。

我有不止一个分支。

我想知道提交来自哪个分支,例如,trunk 或 branch1.1 等。

有什么方法可以在预提交脚本中以pythonic方式找到提交来自哪个分支?

提前致谢。

0 投票
1 回答
1090 浏览

git - 尝试为 checkstyle 运行 pre-commit git hook 返回多个“找不到文件!” 错误

我可以在命令行上通过 ant 很好地运行 checkstyle。不幸的是,安装了这个pre-commit checkstyle git hook 后,当我尝试通过 git shell 或 cmd 提示进行提交时,我收到以下(示例)错误:

其中“mydirectory”是我的网络应用程序根目录的路径。老实说,我不知道发生了什么。我已经为此工作了几个小时,如果没有足够的信息,请道歉。问你有什么问题,我醒来后会回复你的。提前致谢。

0 投票
1 回答
6702 浏览

git - 在 Git 中运行预提交挂钩。有没有办法验证脚本是否正在运行?

我想运行一个 Git,按照博客的建议,我曾经$git init初始化存储库,然后.git在 hooks 目录中的钩子所在的位置创建一个文件夹。然后按照脚本的建议,我重命名pre-commit.sample as pre-commit它不起作用,所以我将它重命名为pre-commit.sh它似乎仍然没有在后台运行,或者我至少不知道它确实如此。

因此,为了知道它是否在后台运行,我使用了 echo 语句,但我从未出现过。感觉迷茫,接下来尝试手动运行脚本.\pre-commit.sh在 powershell 中手动运行脚本,控制台上没有打印 echo 语句。一方面,我不知道控制台是否会显示,即使 echo 语句通过用户输入提要暂停脚本的进度而成功。

所以请告诉我——如何设置预提交钩子?我看错程序了吗?我在这里错过了什么吗?请务必让我知道。

我使用的钩子是一个默认的预提交钩子实现,只是为了方便我把它放在这里——希望它

0 投票
1 回答
137 浏览

svn - 如何在 Windows 中为某些特定值(BugID)配置预提交挂钩

我想使用预提交挂钩将 TeamID 集成到日志消息中。目前,我们没有使用任何类型的错误跟踪工具。我有一些 TeamID 并希望用户输入 teamID(这个 teamID 应该是有效的)。我已经尝试将 svn 的属性用于 Bugtraq,但不知道如何验证这些 TeamID。我可以将这些 IDS 与一些 excel 工作表条目进行比较。

请注意,我们不想将整个错误跟踪系统与 SVN 集成。只想将少数 TeamIDS 与日志消息中输入的 ID 进行比较。请问有什么建议吗?