Closed10

lint-staged -diff=origin/refs/heads/main^...origin/refs/heads/main が動かない

りすりす

pnpm lint-staged -diff=origin/main^...main とすると、No staged files found. となる (もちろん変更されたファイルはある状態)

りすりす

https://github.com/okonet/lint-staged/blob/19a6527c8ac07dbafa2b8c1774e849d3cab635c3/bin/lint-staged.js#L86C50-L86C50

const cliOptions = cli.parse(process.argv).opts()

として lint-staged は CLI のオプションを取得していて、この clicommander.js を使っている

ただライブラリは関係なくて、Windows で試すと main^...mainmain..main となってしまっていることが確認できる

バージョン

Windows

Edition Windows 11 Home Insider Preview
Version 22H2
Installed on ‎2023/‎10/‎01
OS build 23555.1000
Experience Windows Feature Experience Pack 1000.23555.1000.0

Powershell

7.4.0-preview.6

Node.js

v20.8.0

pnpm

8.8.0

lint-staged

14.0.1

りすりす

pnpm lint-staged --debug --diff=main^...main とすると、以下のようにキャレット(^)が消えていることが確認できる
process.argv の段階で消えているので、シェルの仕様かもしれないが、git diff では正常に動作するのでおそらくNode.jsの仕様

lint-staged:bin Options parsed from command-line: {
  ...
  diff: 'main...main',
  ...
}
りすりす

console.log(process.argv)node test.js ^ で実行すると、以下のようにキャレットが消えていることが確認できる
また、これは node test.js "^" でも同様だが、"^ "" ^" のようにすると消えない

[
  'C:\\Users\\takua\\AppData\\Local\\Volta\\tools\\image\\node\\20.8.0\\node.exe',
  'C:\\Users\\takua\\GitHub\\astrolarva\\test.js'
]
りすりす

SSH接続した Ubuntu (Ubuntu 22.04.3 LTS) では消えなかったので、Windows だけで発生する Node.js の問題…?

りすりす

よく見たらCIでは Failed to get staged files! となっていた
↑はすべてWindowsローカルでの原因

りすりす

refに日本語が入っているせいかと思ったが、PRのときは問題ないようなので違う
^ がダメなのだろうか?

りすりす

origin/refs/heads/main となっていたのが原因のようだった、Ubuntuローカルで refs/heads/main に変更したところ動作する

りすりす

git の参照について不勉強で全くわからんので勉強しないといけない…

このスクラップは2023/10/10にクローズされました