شاید شما هم مثل من تمام سروکارتان با Git خلاصه شود به چند فرمان ابتدایی مثل git commit ولی همانطور که میدانید گیت امکاناتی فراتر از اینها نیز دارد، خود من تا چند روز پیش نمیدانستم گیت چنین قابلیتی (چیزی که در این مطلب میبینیم) دارد.
چند روز پیش روی VPS خودم سرور گیت راه اندازی کردم بمنظور اینکه پابلیش کدها سریعتر و مطمئن تر انجام شود (یکی از مطلب‌های آینده درباره‌ی همین کار است). کار بسیار عالی بود و تنها یک اشکال وجود داشت و آن اینکه برای کامیت کردن کدها و پوش روی سرور اول باید یک فایل را دستی تغییر میدادم و بعد کامیت و push دوباره به حالت اول برمی‌گرداندم (خیلی از مواقع محیط گسترش شما با محیط اجرای اصلی تفاوت‌هایی دارد).
خب ازجایی که آدم تنبلی هستم و تنبل‌ها همیشه دنبال راحتی هستند :) دست به دامن پرل و ترمینال و گیت شدیم تا این تغییرات را انجام دهد.
قبل از اینکه شیرجه بزنیم درون دستورات، لازم است بدانیم که در گیت قلاب‌هایی (hook) وجود دارد که با استفاده از آنها میتوانید کدهای دلخواه خود را در زمان‌های مشخص اجرا کنید، در مورد من قلاب های pre-commit و post-commit مورد نیاز بود. این هوک‌ها یا قلاب‌ها درون دایرکتوری hooks در دایرکتوری اصلی گیت نوشته می‌شوند(.git/hooks/).
تغییری که در کد من لازم به انجام بود تنها تغییر کلید $conf['development_mode'] از true به false هنگام کامیت و برعکس پس از آن بود. پس با توجه به گفته‌ی بالا فایل .git/hooks/pre-commit با این صورت نوشته می شود.

#!/bin/sh
perl -i -pe "s/\$conf.?\'development_mode\'.? = true;/ '$conf[\'development_mode\'] = false;' /e" core/bootstrap.php
echo "Development Mode OFF"
git add core/bootstrap.php

همچنین محتویات فایل .git/hooks/post-commit نیز بصورت زیر است:

#!/bin/sh
perl -i -pe "s/\$conf.?\'development_mode\'.? = false;/ '$conf[\'development_mode\'] = true;' /e" core/bootstrap.php
echo "Development Mode ON"
git add core/bootstrap.php

بخاطر داشته باشید این قلاب‌ها فایل های اجرایی هستند و الزاما باید دسترسی اجرایی داشته باشند chmod +x pre-commit و chmod +x post-commit

خب ماموریت انجام شد :) اگر به دستور پرل درون قلاب آشنایی ندارید نگران نباشید، این دستور تنها در مورد من کاربرد دارد و شما باید کدهای خود را بنویسید، چه با پرل چه هر چیز دیگر تنها بخاطر داشته باشد که اگر فایلی را تغییر میدهید حتما باید با دستور