我们有一个中央git bare,所有用户都可以从中进行克隆,我们将其用于用户之间的同步。
目前这个目录已经变得庞大,我们希望删除它的旧历史。
问题是删除历史记录会改变保留提交的散列。
我想使用“pre-receive
”钩子来检测用户是否在更改之前尝试从新克隆而不是旧克隆中推送。
如果第一次提交,命令“git rev-list --max-parents=0 HEAD
”应该给我哈希,问题是当执行预接收时我们已经在裸仓库中,我还需要确定什么是起始用户数据点。
那么,我怎么知道用户目录是什么?
答案 0 :(得分:0)
您没有关于推送起源的信息。
你可以 check the commit message在你的钩子里,以便检查一个预先定义的政策:
从现在开始,如果你想推送到那个仓库,你需要在提交消息中包含一些信息,允许中央仓库识别下游仓库的第一次提交。
但这需要与用户沟通才能落实到位 这不是Git可以独立执行的。
答案 1 :(得分:0)
感谢所有答案。 我发现解决方案只是使用perl脚本作为预接收,然后如果我检查$ {ENV {PWD}}我有用户的目录。