我尝试在git中实现一个预接收钩子,以防止大文件和指定的扩展文件(.jar,*.zip)。
对于接收操作,预接收挂钩执行一次。不需要
参数,但对于要更新的每个引用,它在标准上接收
输入一行格式:
(旧值)sp(新值)sp(参考名称)lf
其中(old value)是存储在ref中的旧对象名,
(新值)是要存储在ref和
(ref name)是ref的全名。创建新ref时,
(旧值)是40。
如果用户更新现有分支中的文件,我们可以通过使用“Git DIFF”命令获取更新文件列表。然后我只需要检查更新的文件。
但是对于新的分支创建,用户可以基于EXISTIG提交创建一个新的分支,并在本地存储库中进行一些更改,然后进行推送。对于这种情况,我只想检查在现有提交之后使用的更改的使用情况。任何git命令都可以帮助找到提交新分支或门户的位置?
例如,用户根据分支1中的最新提交创建分支2。之后,创建commit2和commit3。然后推动分支2。
在hook中,(旧值)是40 0;(新值)是commit3;(ref name)是branch2。我想得到佣金。
委员会3——分行2
委员会2
委员会1——分行1
最佳答案
我想你是在寻找最近的祖先。但是,如果合并被推送,那么可能有多个这样的祖先。因此,我认为您需要根据此命令输出的每个提交检查diff:
git rev-list --boundary <new-commit> --not --all | sed -n 's/^-//p'