0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

husky の pre-push が stdin is not a tty で失敗する

Last updated at Posted at 2022-07-24

概要

件名のとおりですが、husky の pre-push が stdin is not a tty で git push に失敗します。使用しているのは Git Bash です。
error.png

環境

  • Windows 10 Pro
  • git version 2.37.1.windows.1
  • yarn v1.22.15
  • husky v8.0.1

再現環境

最小構成として以下で再現します。ちなみに yarn run foo ではなく npm run foo だと問題なく動きますので、どうも Yarn について回っている問題のようです。

package.json
{
  "devDependencies": {
    "husky": "^8.0.0"
  },
  "scripts": {
    "foo": "echo foo"
  }
}
.husky/pre-push
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

yarn run foo

対処

Yarn の問題らしいです。
husky公式リポジトリのIssueにhuskyを作ったtypicodeさんより対処方法がコメントされていました。
https://github.com/typicode/husky/issues/850#issuecomment-774231951

これを丸パクリして解決しました。圧倒的感謝っ・・・!

.husky/common.sh
command_exists () {
  command -v "$1" >/dev/null 2>&1
}

# Windows 10, Git Bash and Yarn workaround
if command_exists winpty && test -t 1; then
  exec < /dev/tty
fi
.husky/pre-push
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
. "$(dirname "$0")/common.sh"

yarn run foo

余談

これ、検索しても最近の例はあまりないのでなんか僕の環境の問題だったりするんですかね、もしかして。少しもやっとしますが、とりあえず直ったのでよしとします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?