首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建用于共享githooks的makefile

如何创建用于共享githooks的makefile
EN

Stack Overflow用户
提问于 2019-10-07 17:22:32
回答 1查看 1.4K关注 0票数 0

我创建了一个运行linter的pre-commit钩子。pre-commit文件存在于<project>\.githooks\pre-commit.sh中。现在,我想通过make文件与团队成员共享这个钩子。

所以在makefile我做了

代码语言:javascript
复制
.PHONY: all githooks
githooks:
    root="$(pwd)"
    ln -s "$root/.githooks" "$root/.git/hooks"

我搞错了

代码语言:javascript
复制
$ make githooks
root=""
ln -s "oot/.githooks" "oot/.git/hooks"
ln: oot/.git/hooks: No such file or directory
make: *** [githooks] Error 1

看起来,我没有将$pwd读入变量,也无法连接2个字符串。我如何在makefile中做到这一点?

更新:

我把钩子换成了

代码语言:javascript
复制
githooks:
    root="$$(pwd)"; \
    ln -s "$$root/.githooks" "$$root/.git/hooks"

这是make文件的输出

代码语言:javascript
复制
[  1:31PM ]  [ ~ ]
 $ make githooks                 
root="$(pwd)"; \
        ln -s "$root/.githooks" "$root/.git/hooks"
[  1:32PM ]  [ ~ ]
 $ find . -maxdepth 1 -type l -ls

find命令没有返回任何链接。我试过git commit,但是钩子没有得到triger。

EN

回答 1

Stack Overflow用户

发布于 2019-10-07 17:29:02

有两个问题。

  1. 在菜谱中的每一行都在单独的shell中执行;root在第一个shell中定义,但在执行ln的shell中没有定义。在执行行之前,整个脚本需要在recipe.
  2. $(pwd)中的一个逻辑行上展开一个名为pwd的Makefile变量。若要保留命令替换,请将$$$(pwd)加倍。同样,$$root也需要传递$root以使shell展开。现在,oot.

正在尝试展开Makefile变量r,这个变量也没有定义,后面跟着文字文本r

正确的食谱是

代码语言:javascript
复制
githooks:
        root="$$(pwd)"; \
        ln -s "$$root/.githooks" "$$root/.git/hooks"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58274376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档