标签: pre-commit-hook

Git pre-commit hook:更改/添加的文件

我正在写一个预提交钩子.我想php -l对所有扩展名为.php的文件运行.但是我被卡住了.

我需要获取已暂存的新/已更改文件的列表.应排除已删除的文件.

我已经尝试使用git diffgit ls-files,但我想我需要一只手在这里.

git hook pre-commit pre-commit-hook

61
推荐指数
4
解决办法
4万
查看次数

Git钩子可以自动添加文件到提交吗?

我想使用Git中的预提交或后提交挂钩将自动生成的文件添加到同一提交中,这取决于在该提交中修改的文件.我该怎么做?

我已经尝试过这个作为预先提交的钩子,但没有运气:

#!/bin/sh
files=`git diff --cached --name-status`
re="<files of importance>"
if [[ $files =~ $re ]]
then
  echo "Creating files"
  exec bundle exec create_my_files
  exec git add my_files
  exec git commit --amend -C HEAD
fi
Run Code Online (Sandbox Code Playgroud)

这会成功将它们添加到存储库,但不会将它们添加到提交中.我也尝试在post-commit钩子中使用最后两个exec行以及pre-commit检查,但也没有好处.

git pre-commit pre-commit-hook githooks

58
推荐指数
5
解决办法
2万
查看次数

setup pre-commit hook jshint

我最近在github上开了一个项目.我使用Travis在每次提交后设法自动进行测试.但是现在我想用jshint设置一个pre-commit钩子.因此,如果jshint报告错误,则提交失败.但这是否可能,如果是这样,该怎么做?

git github pre-commit-hook jshint

35
推荐指数
3
解决办法
2万
查看次数

我可以为git使用脚本化的提交模板吗?

我们正在处理票证,当我们在第一行的git commit消息中使用票号时,则使用提交消息更新票证.

为简单起见,我们总是使用提交编号处理分支.

现在我想要提交一个提交消息,其中已经填写了票号.

它必须是可能的,因为分支已经在提交模板中,但是在由git删除的注释中.我曾经几次搜索过文档和网页,但我一定要找错字,因为我找不到它.

有人可以帮忙吗?

git pre-commit-hook git-commit

32
推荐指数
2
解决办法
7521
查看次数

Git子模块提交挂钩

我正在使用一个git子模块(我们称之为SubmoduleRepo),这样我就可以将我的模块包含在几个项目中.

我可以从任何使用它的项目中提交SubmoduleRepo.

我可以非常轻松地更新,提交和推送到SubmoduleRepo.

每当我在包含SubmoduleRepo的项目中的目录中工作时,我都需要执行一个提交钩子(当我在SubmoduleRepo中工作时,提交钩子按预期执行)

子模块的dir中没有.git文件夹(仅指定当前目录路径的.git文件).

git pre-commit-hook git-submodules

27
推荐指数
2
解决办法
7619
查看次数

如何创建SVN提交消息模板和挂钩进行验证

我正在使用Visual SVN Server和Tortoise SVN(客户端)进行源代码管理.我希望所有开发人员都能以一致的格式标注签入说明.

例如,我希望他们的提交消息默认为......

概要:

开发者名称:( 预先填充)

评论人:

[错误ID]:

[更改错误状态]:

已知的问题:

受影响的文件:( 预先填充)

在将来,我希望[Bug Id]和[Bug State]提供信息,以触发Bug跟踪系统的自动更新.还应使用svn用户和用户提交的文件预填充开发人员名称和受影响的文件.

请发送您可能拥有的任何链接或样本.

svn tortoisesvn commit-message visualsvn-server pre-commit-hook

25
推荐指数
1
解决办法
3万
查看次数

如何在克隆时传播GIT Hook

我在我的中央存储库上编写了预提交钩子.当我的客户端克隆存储库时,它永远不会传播挂钩.我想将钩子也复制到我的客户端存储库.我的客户是Windows用户,使用msysgit作为git客户端.

有什么办法可以将钩子复制到本地存储库吗?

git propagation pre-commit-hook git-clone

25
推荐指数
2
解决办法
8439
查看次数

pre-commit/hook:没有这样的文件或目录

我尝试提交时收到此错误.

OS - 最新的OSX

Git版本 - git版本2.11.0(Apple Git-81)

.git/hooks/pre-commit: line 2: ./node_modules/pre-commit/hook: No such file or directory
Run Code Online (Sandbox Code Playgroud)

git pre-commit pre-commit-hook

23
推荐指数
5
解决办法
2万
查看次数

如何拥有诗歌和预提交包版本的单一事实来源?

我正在研究这个Python 项目模板。它们用于poetry定义开发依赖项

[tool.poetry.dev-dependencies]
black = {version = "*", allow-prereleases = true}
flake8 = "*"
isort = "^5.6"
mypy = ">0.900,<1"
...
Run Code Online (Sandbox Code Playgroud)

它们还用于pre-commit检查 git 和 CI 工作流程的内务工作(例如,格式化、linting、分类等):

minimum_pre_commit_version: 2.8.0
default_stages: [commit, push, manual]
repos:
  - repo: https://github.com/psf/black
    rev: 21.11b1
    hooks:
      - id: black
  - repo: https://github.com/pycqa/flake8
    rev: 4.0.1
    hooks:
      - id: flake8
        args: [--max-line-length=88]
  - repo: https://github.com/pycqa/isort
    rev: 5.10.1
    hooks:
      - id: isort
        args: [--filter-files]
  - ...
Run Code Online (Sandbox Code Playgroud)

就我而言,我肯定想要一个由 Poetry 为我的 IDE 管理的本地版本的开发包,并且我还想“按原样”利用预提交框架,而不需要切换到 …

python pre-commit-hook python-poetry pre-commit.com

23
推荐指数
2
解决办法
9290
查看次数

对文本文件的GitHub 100MB文件大小限制有什么好的解决方法吗?

我有一个190 MB纯文本文件,我想在github上跟踪.

文本文件是我们的文本到语音引擎的代词词典文件.我们经常在文本文件中添加和修改行,并且差异相当小,因此在这个意义上它非常适合git.

但是,GitHub具有严格的100 MB文件大小限制.我已经尝试过GitHub大文件存储服务,但每次更改时都会上传整个190 MB文件的新版本 - 因此,如果我沿着这条路走下去,那么它将迅速增长到几千兆字节.

我想将文件保存为一个文件而不是拆分它,因为这是我们的工作流程当前的方式,并且需要一些编码才能允许多个文本文件作为我们工具中的输入/输出(并且我们没有太多的开发资源) .

我有一个想法是,也许可以设置一些预提交和提交后挂钩来自动拆分和连接大文件?这可能吗?

其他想法?

编辑:我知道StackOverflow上类似问题中描述的100 MB文件大小限制,但我不认为我的问题是重复的,因为我要求的是差异很小且频繁的特定情况(我'我没有尝试上传大型ZIP文件或任何东西).但是,我的理解是git-lfs仅适用于很少更改的文件,而普通的git非常适合我所描述的那种文件; 除了GitHub有文件大小限制.

更新:我昨天花了一些时间尝试创建一个小型跨平台程序,该程序使用git hooks将文件拆分并连接成较小的文件.它有点工作但不太令人满意.您需要将.gitignore排除大文本文件,这使得git不知道它是否已更改.拆分文件最初没有检测到git statusgit commit导致与此SO问题中描述的相同问题,这非常烦人:预提交脚本创建mysqldump文件,但"没有提交(工作目录清理)"? 设置一个cron作业(linux)和计划任务(windows)以定期自动重新生成拆分文件可能会解决这个问题,但是自动设置并不容易,可能会导致用户计算机出现性能问题,而且不是很优雅解.可能还需要一些像动态修改.gitignore这样的hacky解决方案,并且绝不会得到实际文本文件的差异,只有分割文件(尽管这可能是可接受的,因为它们非常相似).

所以,睡着了,今天我觉得git hook方法毕竟不是一个好选择,因为它有太多的怪癖.正如@PyRulez所建议的那样,我想我不得不看看除GitHub之外的其他服务(不幸的是,因为我喜欢github).托管解决方案更可取,以避免必须管理我们自己的服务器.我也希望它能公开上市......

更新2:我已经看了一些GitHub的替代品,目前我倾向于使用GitLab.我已经联系了GitHub关于提高100MB限制的可能性的支持,但如果他们不这样做,我将只为这个特定项目切换到GitLab.

git github large-files pre-commit-hook post-commit-hook

22
推荐指数
3
解决办法
2万
查看次数