برنامهنویسها، بنا بر تعریف، موجوداتی هستند که ترجیح میدهند به جای این که وظایفشان را خودشان انجام دهند، کامپیوترهایشان را به کار وا دارند. آنها خوب میدانند هر کجا که کاری زیاد و تکراری انجام میدهند، بدون شک راه را اشتباه گرفتهاند.
این را از باب مقدمه عرض کردم تا اخطاری داده باشم که آنچه در پی میآید، یک نوشتهٔ مرتبط با برنامهنویسی است و از گیت خواهم گفت. مراقب باشید.
ماجرا از آنجا شروع شد که به خودم آمدم و دیدم هر بار که چیزی را، هرچند کوچک، به مخزن پروژه پوش میکنم، باید بین سه تا چهار دقیقه، درست روی نقطهٔ ۱۶ درصد، منتظر بمانم و در این زمان هم حوصلهام سر میرود و هم تمرکز کاریام را از دست میدهم.
فرهنگ بازنگری کد در سازمان ما، ایجاب میکند که روزی چند بار کارهایمان را با یکدیگر ترکیب کنیم و برای هر کار کوچکی برنچ کوچکی بسازیم و این موضوع، زمانهای انتظار را سختتر میکرد.
با میثم مشورت کردم و گفت مخزن ما بزرگ شده و تاریخچهٔ سنگینی پیدا کرده و ساخت دلتا، حتی برای یک تغییر کوچک، زمانبر است و ما میتوانیم این تاریخچه را حذف کنیم و دوباره سبک شویم.
گفتم اگر نخواهیم پاک کنیم، چه راه دیگری داریم؟ گفت باید قبل از هر بار پوش کردن، شاخهٔ خودمان را با شاخهٔ dev ترکیب کنیم. این جوری:
git checkout dev git pull git checkout YOURBRANCH git merge dev
این همه کار کنیم؟ و تازه بعد هم لازم باشد نام برنچی که در آن هستیم را دوباره تایپ کنیم؟
برای من که حتی حوصلهٔ تایپ دستور پوش کردن معمولی را هم نداشتم و برایش میانبر تعریف کرده بودم، این یکی دیگر خیلی خارج از طاقت بود.
گفت خب بیا و تابعی مثل این را در bashrc خودت تعریف کن.
function gupdate() { git checkout dev git pull git checkout $1 git merge dev }
تصور میکرد که حال آن را دارم که هر بار اسم برنچی که در آن کار میکنم را تایپ کنم، اما این طور نبود.
سرتان را درد نیاورم.
یکی من گفتم و یکی او، و دست آخر به این ترکیب رسیدیم:
function gpush() { current=`git branch | grep \* | cut -d ' ' -f2` git checkout dev git pull git checkout $current git merge dev -m "merge branch dev into $current" git push origin $current }
حالا دیگر برای پوش کردن، کافی است این دستور را در خط فرمان تایپ کنم و با لبخند آپلود سریع آن را ببینم.
gpush
همین (:
پینوشت ۱: خیلی وقت بود که برای نوشتن سراغ ویرگول نیامده بودم. دلم تنگ شده بود.
پینوشت ۲: فایل bashrc خودم را اینجا منتشر کردهام. شاید چیزهایی در آن باشد که به کارتان بیاید، یا ایدههایی بدهد.