不确定这是否可以在git中使用(我没有找到它,但我可能在我的搜索中使用了错误的词汇表),但是能够修改和启用钩子作为所有新存储库的默认值是有用的(在我的意思是创建的时间)所以每次创建新的存储库时都不必自定义这些.看起来这样做的简单方法是编写一个包装器,在我创建一个新的存储库时设置我的钩子和chmods,但如果有一种内置到git中的方法,我宁愿使用它而不是使用不必要的包装器脚本,而不是四处闲置.
澄清从评论复制到现在删除的答案:
我的问题是,是否可以更改所有新存储库的默认行为,因此不需要每次为每个新存储库以相同的方式自定义它们.简单的答案是编写一个包装器来创建和自定义repos(它生成钩子脚本并对它们进行chmod),但似乎这个默认行为也应该是可自定义的,而不必这样做.
Bri*_*ell 34
从git-init
手册页(git-clone
如果您正在克隆现有的仓库而不是从头开始创建新仓库,也可以使用):
--template=<template_directory> Provide the directory from which templates will be used. The default template directory is /usr/share/git-core/templates. When specified, <template_directory> is used as the source of the template files rather than the default. The template files include some directory structure, some suggested "exclude patterns", and copies of non-executing "hook" files. The suggested patterns and hook files are all modifiable and extensible.
您可以修改系统范围的模板目录(默认为/usr/share/git-core/templates
,但可能位于计算机上的其他位置),您可以--template=<template_directory>
在创建或克隆存储库时在命令行上提供,也可以在以下位置配置默认模板目录:你的配置文件:
[init]
templatedir = /path/to/templates
Run Code Online (Sandbox Code Playgroud)
Von*_*onC 26
使用git 2.9,您有一个用于集中挂钩的新选项: core.hooksPath
请参阅ÆvarArnfjörðBjarmason()提交867ad08,提交de0824e,提交bf7d977,提交49fa52f(2016年5月4日).(由Junio C Hamano合并- -在6675f50的承诺中,2016年5月17日)avar
gitster
该git config
文档现在包括:
core.hooksPath
Run Code Online (Sandbox Code Playgroud)
默认情况下,Git会在'
$GIT_DIR/hooks
'目录中查找你的钩子.
将其设置为不同的路径,例如'/etc/git/hooks
',Git将尝试在该目录中找到您的挂钩,例如'/etc/git/hooks/pre-receive
'而不是'$GIT_DIR/hooks/pre-receive
'.路径可以是绝对路径也可以是相对路径.相对路径被视为相对于运行挂钩的目录
如果您希望集中配置Git挂钩而不是基于每个存储库配置它们,或者作为一个更灵活和集中的 替代方案来
init.templateDir
更改默认挂钩的位置,则此配置变量非常有用.
这个路径的作者(ÆvarArnfjörðBjarmason avar
)在他的提交中添加了:
我打算在集中式Git服务器上使用它,用户可以在其下创建任意存储库
/gitroot
,但我想管理应该通过统一调度机制集中运行的所有挂钩.
Git 2.10使用了新的设置 git rev-parse --git-path hooks/<hook>
见Johannes Schindelin()提交的9445b49(2016年8月16日).(由Junio C Hamano合并- -在提交d05d0e9,2016年8月19日)dscho
gitster
rev-parse
:尊敬core.hooksPath
的--git-path
该--git-path
选项的思想不仅是为了避免必须在路径前面添加输出--git-dir
,而且还要考虑.git
目录内特定公共路径的覆盖
(例如,如果设置,git rev-parse --git-path objects
将报告环境变量的值GIT_OBJECT_DIRECTORY
).
在介绍
core.hooksPath
设置时,我们忘了相应调整git_path()
.这个补丁修复了这个问题.
使用 git 1.6.5.3(和一些早期版本),您可以在目录中获得示例挂钩.git/hooks
:
$ ls .git/hooks
applypatch-msg.sample post-update.sample prepare-commit-msg.sample
commit-msg.sample pre-applypatch.sample update.sample
post-commit.sample pre-commit.sample
post-receive.sample pre-rebase.sample
$
Run Code Online (Sandbox Code Playgroud)
它们在我的系统上都是可执行的。要使用其中一个挂钩,请复制或重命名该文件并删除“ .sample
”后缀。根据您的要求进行适当编辑。
解决评论中的问题 - 要更改安装的默认示例挂钩,您需要找到git
安装目录。在我的机器上,就是这样$HOME/git
- 所以二进制文件位于$HOME/git/bin/git
. 那么包含示例钩子的目录是:
$HOME/git/share/git-core/templates/hooks
Run Code Online (Sandbox Code Playgroud)
如果您编辑这些模板(请小心),那么这些模板将被复制到新的 git 存储库。它们仍然是样品,但它们将是您的样品。
我没有尝试过在目录中创建非示例文件;它可能会也可能不会被复制。不过,要小心更改默认设置 - 当您下次升级时,您将必须重做更改。
归档时间: |
|
查看次数: |
22314 次 |
最近记录: |