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?

git hooksを設定するも、No such file or directory

Posted at

はじめに

Visual Studio 2022内のgit機能において、
git hooksを使ってpush時にスクリプトを実行させようとしたところ、
エラーが発生して、他の記事とは逆の事象が起こっていたのでまとめます。

実行環境

Visual Stuido 2022
git 2.43.0.windows.1

問題

以下の記事を参考にgit hooksを利用した特定ブランチへのpush禁止設定を行いました。

しかし作成したpre-pushを格納してpushを行ったところ、下記エラーが発生

error: cannot spawn. git/hooks/pre-commit: #!/bin/bash

解決方法

結論

先に結論を申しますと、
pre-pushファイルの1行目を以下のように修正することで解決しました。
#!/bin/bash → #!/bin/sh

この1行目の意味

(#!) は、シバン(Shebang)と呼び、スクリプトの1行目に記載される特殊な文字列で、
スクリプトを実行する際にどのプログラムを使うかを指定します。

今回の例で行くと、#!/bin/bash は Bash シェルを使って実行され#!/bin/shは POSIX準拠のシェル(ほとんどの場合は /bin/sh)を使用してスクリプトが実行されます。

/bin/sh はほぼすべてのUnix系システムに存在し、POSIX標準に準拠した非常に汎用的なものらしいです。

根本原因

Visual Studioのインストール時にGit for windowsがインストールされており、基本的にはbashとshの両方が実行できるようぇすが、恐らく、自環境において何かしらの理由でBashが正しく設定されておらず、実行できなかったのが問題だったと思われます。

今回のような簡単なスクリプトであればPOSIX標準のシェルで問題ないそうなので、今回はこちらの解決策を取りました。

おわりに

些細なエラーですが、馴染みのない分野の知識を少し齧ることが出来たので、
結果的に良かったかもしれないです。

参考

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?