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 (10d)