git pre-receive hook原始目录

时间:2014-03-25 05:13:08

标签: git

我们有一个中央git bare,所有用户都可以从中进行克隆,我们将其用于用户之间的同步。

目前这个目录已经变得庞大,我们希望删除它的旧历史。

问题是删除历史记录会改变保留提交的散列。 我想使用“pre-receive”钩子来检测用户是否在更改之前尝试从新克隆而不是旧克隆中推送。

如果第一次提交,命令“git rev-list --max-parents=0 HEAD”应该给我哈希,问题是当执行预接收时我们已经在裸仓库中,我还需要确定什么是起始用户数据点。

那么,我怎么知道用户目录是什么?

2 个答案:

答案 0 :(得分:0)

您没有关于推送起源的信息。

可以 check the commit message在你的钩子里,以便检查一个预先定义的政策:

  

从现在开始,如果你想推送到那个仓库,你需要在提交消息中包含一些信息,允许中央仓库识别下游仓库的第一次提交。

但这需要与用户沟通才能落实到位 这不是Git可以独立执行的。

答案 1 :(得分:0)

感谢所有答案。 我发现解决方案只是使用perl脚本作为预接收,然后如果我检查$ {ENV {PWD}}我有用户的目录。