ورژن کنترل اختیاری نیست!

·

4 min read

حقیقتش انتظار داشتم این موضوع خیلی وقت پیش حل شده باشد. حتی پیش خودم فکر می‌کردم که ورژن کنترل یک جورهایی جزء غرایض جامعه‌ی نرم‌افزاری است‌، آن هم با درجه‌ی اهمیتی مثل نفس کشیدن. دوستی دارم که حدوداً دو سال پیش روی دیوار فیس‌بوک‌اش از پاک شدن اتفاقی فایل‌های یکی از پروژه‌هایش شکایت کرده بود‌، که وا مصیبتا‌، مسلمانان چه نشسته‌اید که نتیجه‌ی تلاش چند سال گذشته‌ام به فنا رفت!

یادم می‌آید‌‌‌ همان موقع با یک لحن خیلی مودبانه پرسیدم «مگه از ورژن کنترل استفاده نمی‌کردی؟ خوب خطرناکه حسن…» و جوابی در این حدود‌ها گرفتم که «چون این پروژه‌ها یا شخصی بودن یا کوچیک‌، زیاد مباحث مهندسی نرم‌افزار رو توشون رعایت نکردم!». خوب اینکه می‌گویم دوست شاید‌، خیال بد کنید‌، ولی خوب خوشبختانه چند سالی هست که حسن را از نزدیک ملاقات نکرده‌ام‌، وگرنه احتمالاً آن موقع نمی‌توانستم خودم را کنترل کنم و ایشان را به کما می‌فرستادم تا این مشکل دوباره برایش تکرار نشود.

دوباره؟ بله دوباره‌، چند هفته‌ی پیش بود که این حسن آقای گل پستی همراه با نفرین و ناله علیه چند تن از رفقای نزدیک‌ترش نوشت که چرا مجبورش کردند که ویندوز (نه انگار باید در این رفاقت جدا تجدید نظر کرد ;))) عوض کند (یا یک بلایی سر ویندوزش آوردند یا همچین چیزهایی) و فایل‌های دو تا از پروژه‌هایش به فنا رفته…

البته یک بار خیال برتان ندارد که حسن تازه‌کار است و یا از این حرف‌ها… هر چند هم که ویندوزی باشد، یکی از خلاق‌ترین توسعه دهنده‌های PHP است که می‌شناسم.

ماجرا البته به حسن ختم نمی‌شود. دوست دیگری دارم که ارشد نرم‌افزار خوانده و ورژن کنترل را فقط از دهان من در دوره‌ی کارشناسی‌اش شنیده‌. یا سال گذشته در حال استفاده از نرم‌افزار اتوماسیون صنعتی یکی از شرکت‌های مطرح این زمینه در محل کارم‌، متوجه شدم که نسخه‌های مختلفشان را با فایل‌های زیپ مدیریت می‌کنند. فکرش را بکنید‌، مثلاً می‌خواستند یک آپدیت بدهند‌، باید هماهنگ می‌شد تکنسینشان در محل شرکت حاضر شود‌، پشت سرور بنشیند‌، فایل زیپ را دانلود و روی پوشه‌ی قبلی overwrite کند‌، تا آپدیت داشته باشیم. این روند البته همانطور که گفتم پروژه‌ی دانشگاهی نبود‌، شرکتی مطرح در حوزه‌ی نرم‌افزار کشور‌، پروژه‌ی ‎.Net می‌نوشت و آن را این‌طور به مشتری می‌رساند (که البته معلوم است خرج دوبله‌اش را از جیب مبارک مشتری کسر می‌کرد). این پروژه حتی مشتری خارجی هم داشت (تا جایی که یادم می‌آید از ترکیه) به هر حال خواستم بگویم:

ورژن کنترل اختیاری نیست:

مهم نیست پروژه چقدر کوچک است‌، مهم نیست چقدر کم اهمیت است، مهم نیست شما چقدر کارتان درست است. همین دلیل کفایت می‌کند «اگر همین الان اتفاقی فایل‌ها پاک شد‌، احساس تأسف می‌کنید؟» اگر آره‌، پس استفاده از ورژن کنترل اجباریست! تعارف که نداریم، در توسعه‌ی نرم‌افزار هر چقدر هم این‌کاره باشیم‌، باید بار‌ها اشتباه کنیم تا بتوانیم به نتیجه‌ی دلخواه برسیم. مجبوریم راه‌هایی را امتحان کنیم که قبلاً کسی نرفته، بار‌ها حتی مسیری که خودمان رفته‌ایم را عوض کنیم… جدا چه چیزی قشنگ‌تر از ورژن کنترل می‌تواند کمک کند؟

ورژن کنترل تنها محدود به توسعه نرم‌افزار نیست:

دارید کتاب می‌نویسد؟ مقاله؟ پایان نامه‌ی دانشگاه‌تان؟ اوه شما طراحید؟ سر و کارتان فقط با HTML و CSS است؟ ‌ گرافیستید؟ مهم نیست، تا جایی که پروژه‌تان بتواند در قالب یک ورژن کنترل توسعه پیدا کند‌، استفاده از آن لطف بزرگی به خودتان است.

ورژن کنترل فقط برای توسعه نیست:

در فاندرز بادی ما از ورژن کنترل برای دیپلوی هم استفاده می‌کنیم. این است که حتی اگر چیزی را اشتباها دیپلوی کنیم، برای برگشتش دو ثانیه وقت نیاز است! راستش این قضیه یک بار اتفاق هم افتاد. در حین دیپلوی تغییرات جدید سایت‌، یک ویژگی که هنوز کامل نشده بود هم اشتباهاً روی سایت قرار گرفت… این هم کاری که کردیم:

https://cdn.hashnode.com/res/hashnode/image/upload/v1672742656791/zC9e6mBiw.gifخوب حالا اگر موافق بحث اصلی متن هستید‌، احتمالاً می‌خواهید بدانید:

کدام ورژن کنترل؟

جواب کوتاه Git، و بلندش اینکه هر کدامی که دلتان خواست. گیت برای من تا الان انتخاب خوبی بوده و هرگز فایلی نداشته‌ام که مرز ۵۰ مگابایتی‌اش را رد کند. ولی اگر این سناریوی شماست‌، احتمالاً راه حل‌های خوب دیگری هم بتوانید پیدا کنید.

از کجا شروع کنیم؟

اگر انتخابتان گیت است‌، و کمی با کلاً بحث ورژن کنترل آشنایی دارید‌، این آموزش پویا احتمالاً کارتان را راه بیاندازد. اگر هم این کاره‌اید و یا می‌خواهید سر تا پای این ابزار دوست‌داشتنی را بشناسید، Udacity یک دوره‌ی فوق‌العاده عالی دارد. اگر توانستید فیل‌تر گوگل احمق برای Udacity و تامین کننده اینترنت احمق‌ترتان را برای Youtube بردارید‌، احتمالاً از دیدنش لذت خواهید برد. و البته نوید هم پست خیلی خوبی برای بهتر کردن تجربهٔ استفاده از ورژن کنترل دارد که می‌تواند استفاده از گیت را برای‌تان خیلی خوشمزه‌تر کند ;) همینطور اگر از کافران ویندوزی هستید‌، برچسب گیت مطالبش را از دست ندهید…

اضافه:

اگر کاربر ایمکس هستید‌، magit را از دست ندهید. تجربه‌ی کار با گیت را برایتان واقعاً دلنشین می‌کند. اگر هم مثل من که به تازگی کوچ کرده‌ام (جهت تغییر آب و هوا البته) از atom استفاده می‌کنید‌، git-plus همان امکان را به ارمغان می‌آورد.