我正在写一个预提交钩子.我想php -l对所有扩展名为.php的文件运行.但是我被卡住了.
我需要获取已暂存的新/已更改文件的列表.应排除已删除的文件.
我已经尝试使用git diff和git ls-files,但我想我需要一只手在这里.
我想使用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 commit消息中使用票号时,则使用提交消息更新票证.
为简单起见,我们总是使用提交编号处理分支.
现在我想要提交一个提交消息,其中已经填写了票号.
它必须是可能的,因为分支已经在提交模板中,但是在由git删除的注释中.我曾经几次搜索过文档和网页,但我一定要找错字,因为我找不到它.
有人可以帮忙吗?
我正在使用一个git子模块(我们称之为SubmoduleRepo),这样我就可以将我的模块包含在几个项目中.
我可以从任何使用它的项目中提交SubmoduleRepo.
我可以非常轻松地更新,提交和推送到SubmoduleRepo.
每当我在包含SubmoduleRepo的项目中的目录中工作时,我都需要执行一个提交钩子(当我在SubmoduleRepo中工作时,提交钩子按预期执行)
子模块的dir中没有.git文件夹(仅指定当前目录路径的.git文件).
我正在使用Visual SVN Server和Tortoise SVN(客户端)进行源代码管理.我希望所有开发人员都能以一致的格式标注签入说明.
例如,我希望他们的提交消息默认为......
概要:
开发者名称:( 预先填充)
评论人:
[错误ID]:
[更改错误状态]:
已知的问题:
受影响的文件:( 预先填充)
在将来,我希望[Bug Id]和[Bug State]提供信息,以触发Bug跟踪系统的自动更新.还应使用svn用户和用户提交的文件预填充开发人员名称和受影响的文件.
请发送您可能拥有的任何链接或样本.
svn tortoisesvn commit-message visualsvn-server pre-commit-hook
我在我的中央存储库上编写了预提交钩子.当我的客户端克隆存储库时,它永远不会传播挂钩.我想将钩子也复制到我的客户端存储库.我的客户是Windows用户,使用msysgit作为git客户端.
有什么办法可以将钩子复制到本地存储库吗?
我尝试提交时收到此错误.
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) 我正在研究这个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 管理的本地版本的开发包,并且我还想“按原样”利用预提交框架,而不需要切换到 …
我有一个190 MB纯文本文件,我想在github上跟踪.
文本文件是我们的文本到语音引擎的代词词典文件.我们经常在文本文件中添加和修改行,并且差异相当小,因此在这个意义上它非常适合git.
但是,GitHub具有严格的100 MB文件大小限制.我已经尝试过GitHub大文件存储服务,但每次更改时都会上传整个190 MB文件的新版本 - 因此,如果我沿着这条路走下去,那么它将迅速增长到几千兆字节.
我想将文件保存为一个文件而不是拆分它,因为这是我们的工作流程当前的方式,并且需要一些编码才能允许多个文本文件作为我们工具中的输入/输出(并且我们没有太多的开发资源) .
我有一个想法是,也许可以设置一些预提交和提交后挂钩来自动拆分和连接大文件?这可能吗?
其他想法?
编辑:我知道StackOverflow上类似问题中描述的100 MB文件大小限制,但我不认为我的问题是重复的,因为我要求的是差异很小且频繁的特定情况(我'我没有尝试上传大型ZIP文件或任何东西).但是,我的理解是git-lfs仅适用于很少更改的文件,而普通的git非常适合我所描述的那种文件; 除了GitHub有文件大小限制.
更新:我昨天花了一些时间尝试创建一个小型跨平台程序,该程序使用git hooks将文件拆分并连接成较小的文件.它有点工作但不太令人满意.您需要将.gitignore排除大文本文件,这使得git不知道它是否已更改.拆分文件最初没有检测到git status或git commit导致与此SO问题中描述的相同问题,这非常烦人:预提交脚本创建mysqldump文件,但"没有提交(工作目录清理)"?
设置一个cron作业(linux)和计划任务(windows)以定期自动重新生成拆分文件可能会解决这个问题,但是自动设置并不容易,可能会导致用户计算机出现性能问题,而且不是很优雅解.可能还需要一些像动态修改.gitignore这样的hacky解决方案,并且绝不会得到实际文本文件的差异,只有分割文件(尽管这可能是可接受的,因为它们非常相似).
所以,睡着了,今天我觉得git hook方法毕竟不是一个好选择,因为它有太多的怪癖.正如@PyRulez所建议的那样,我想我不得不看看除GitHub之外的其他服务(不幸的是,因为我喜欢github).托管解决方案更可取,以避免必须管理我们自己的服务器.我也希望它能公开上市......
更新2:我已经看了一些GitHub的替代品,目前我倾向于使用GitLab.我已经联系了GitHub关于提高100MB限制的可能性的支持,但如果他们不这样做,我将只为这个特定项目切换到GitLab.
pre-commit-hook ×10
git ×8
pre-commit ×3
github ×2
git-clone ×1
git-commit ×1
githooks ×1
hook ×1
jshint ×1
large-files ×1
propagation ×1
python ×1
svn ×1
tortoisesvn ×1