【发布时间】:2017-09-25 05:40:06
【问题描述】:
是否可以阻止git commit中的特定文件类型(.dll, .exe)?
我知道我们可以通过.gitignore 文件来做到这一点。但是我有500多个repo,所以在每个项目中添加.gitignore文件并不容易。
我们可以通过per-receive 钩子做同样的事情,但我得到Restrict the specific type file commit in Git。
有什么想法吗?
【问题讨论】:
-
如果唯一的问题是将
.gitignore文件添加到每个 repo,您可以只使用系统范围的gitignore或用户范围的gitignore来代替。 -
1) 一个全局或系统范围的 gitignore,它忽略
.dll和.exe,2) 一个全局或系统范围的本地pre-commit,它删除了.dll和 @987654336 的更改@ 来自索引,3) 服务器端pre-receive使任何更改.dll或.exe的新提交失败。第三个确保不会将此类提交合并到祝福存储库中。第一和第二给用户快速检查和帮助。 -
@ElpieKay 我尝试了第三个想法manually,但它对我不起作用!对使用 ruby 代码有什么建议吗?
-
我不了解 Ruby。但是您链接中的
pre-receive似乎不对。git diff --cached不能在这里工作。您需要从标准输入中获取old-value、new-value和ref-name。然后使用git log old-value..new-value --pretty=format:"" --name-only之类的命令来获取更改的文件列表。如果列表包含任何.dll或.exe,则以非零值退出以使推送失败。关于pre-receive,请看git-scm.com/docs/githooks.html#pre-receive。