Windowsでpre-commitを実行する

Bash(Git Bash)スクリプトとして書く

.git\hooks\pre-commit

 #!/bin/sh
 echo OK                     # (1)
 php.exe -r 'print "PHP!";'  # (2)
 
  • (1) pre-commitはBash(Git Bash)スクリプトとして実行されるので、シェバングに#!/bin/shを指定すれば普通のシェルスクリプトとしてecho OKが実行される
  • (2) また、Git BashからWindowsのexeファイルを呼び出せるので、php.exeを記述すればPHPのワンライナーとしてprint "PHP!;が実行される
  • なお、php.exeをフルパスで指定する場合は、C:/PHP/bin/php.exeまたはC:\\PHP\\bin\\php.exeまたは/c/PHP/bin/php.exeとする

Perlスクリプトとして書く

.git\hooks\pre-commit

 #!/usr/bin/perl
 print "Perl!";
  • GitおよびGit for Windowsには必ずPerlがインストールされているので、Bashで記述が難しい複雑なスクリプトはPerlで書くことができ、WindowsのGitでも動く
     

Windows側のPHPスクリプトとして書く

.git\hooks\pre-commit

 #!/usr/bin/env php
 <?php print "PHP!\n";
  • Git Bash側にPHPが入ってる場合は、#!/usr/bin/env php.exeとすればWindows側のPHPを指定できる

PowerShellスクリプトを呼び出す

ワンライナー

.git\hooks\pre-commit

 #!/bin/sh
 powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "echo PowerShell!"

ps1ファイル

.git\hooks\pre-commit

 #!/bin/sh
 ./test.ps1

test.ps1

 echo "PowerShell!"
  • pre-commitの中でPowerShellスクリプトを呼び出す(この場合test.ps1)
  • なお、この場合はtest.ps1はプロジェクトフォルダー直下に置く

Windowsとそれ以外のOSで実行する処理を分岐する

.git\hooks\pre-commit

 #!/bin/sh
 if [ "$OS" = "Windows_NT" ]; then
   ./test.ps1
 else
   ./test.sh
 fi
  • Windowsの場合はtest.ps1を、それ以外のOSの場合はtest.shを呼び出す

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2019-10-06 (日) 12:00:49