bash - Git 预提交 Hook : Unable to Run `dartfmt` (command not found) (Windows)

标签 bash git flutter dart

理想情况下,我想拥有 dartfmt在每次提交时格式化我的代码,我认为 git hooks非常适合这个。到目前为止,我已经尝试了 this link 中的代码。 ,但没有成功,尽管它出现在多个其他网站上——也许它已经过时了。

最后,我认为在大多数情况下(在 .git/hooks/pre-commit 文件中)应该没有比这更复杂的了:

#!/bin/bash

dartfmt -w . # or maybe `flutter format .` for Flutter

我得到的错误是:
  • 对于 dartfmt -w . : dartfmt: command not found
  • 对于 flutter format . : find: ‘> bin [’: No such file or directory

  • 如果直接放在终端中,这两个命令都可以工作。

    最佳答案

    制作 dartfmt工作,尝试运行which dartfmt手动获取可执行文件的路径,然后在脚本中调用时使用绝对路径。

    如果 which无法找到它,并假设您知道 dartfmt 所在目录的完整路径位于,尝试在脚本中将该目录添加到 PATH:

    #!/bin/bash
    PATH="/path/to/dart-sdk/bin:$PATH"
    export PATH
    

    另外,我建议花点时间仔细检查一下 git当它调用那些钩子(Hook)脚本时将用于工作目录。使用 . 可能会出现一些不良行为如果 CWD 不是预期的。见 this post .

    关于bash - Git 预提交 Hook : Unable to Run `dartfmt` (command not found) (Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60468804/

    相关文章:

    bash - 如何提高一个人的 bash/命令行技能?

    Bash 脚本在 for 循环中使用 sed 和变量?

    flutter - 在flutter项目中构建APK时

    flutter - 如何使用flutter在同一屏幕上创建多个水平 `GridView`

    Bash 脚本通过 SSH 进入机器而不提示密码且不使用 key

    bash - 自动化ssh响应

    git - 有没有办法将子模块添加到共享目录结构的git repo

    git - 快速、小型、随意的 git rebase,仅适用于一个或几个帅哥 : any facility?

    linux - 如何在 Windows 上 chmod 0777 文件并按原样提交给 Git?

    android - 在Dart中从云中解析嵌套的JSON但出现类型错误