我正在尝试编写一个 commit-msg 钩子,它必须根据用户提交的位置 (dir) 获取一些信息。假设用户当前正在从以下路径进行操作:/projects/projectx/backend/stuff/things/
,当他们执行 时git commit
。
例如,我希望能够辨别用户处于,backend
因此这是与 相关的提交backend
。我的问题是,我所知道的获取目录信息的方法(pwd、rev-parse)在这种情况下不起作用,因为它们最终在 hooks 目录之外执行。
我能想到的唯一其他想法就是查看暂存的文件,但我宁愿避免这样做,因为这会使事情变得更加棘手。
有任何想法吗?
答案1
Git 无法做到这一点。Git 在运行钩子时会故意更改为一致的目录,以便于编写钩子,并且不会暴露原始工作目录。
此外,您建议的那种工作流程对许多用户来说并不适用。我几乎总是在存储库的主根目录下工作,几乎所有使用 IDE 的人也是如此(我使用 Vim)。如果您想猜测它是什么类型的提交,您需要使用某种有关正在提交的内容的数据来做到这一点。