پنجشنبه, ۱۳ اردیبهشت, ۱۴۰۳ / 2 May, 2024
مجله ویستا

آشنایی با CVS


آشنایی با CVS

این کلمه CVS به چه معنایی است Concurrent Versions System کنترل نسخه های متفاوت خوب شاید برگردان آن به فارسی چندان مناسب نباشد اما ٬ می توان گفت که برای ذخیره کردن تاریخچه کدها یا متون شما است

وقتی با دنیای گنو/لینوکس آشنا می شوید. سعی می کنید درباره آن بیشتر بدانید. از هر موقعیتی برای آشنایی بیشتر با طرز کار سیستم عامل و فرهنگ آن استفاده می کنید. یکی از سوالاتی که بعد از مدتی برای شما پیش می آید. این است که متوجه می شوید تعداد زیادی از پروژه هایی که می بینید٬ توسط گروهی از برنامه نویسان نوشته می شوند. در مراحل بعدی شاید متوجه شوید که این افراد در سرتاسر دنیا از نظر جغرافیایی پراکنده هستند. حال چطور می توان از راه دور یک پروژه زیبا ٬ با شکوه و از نظر فنی کاملا مناسب و حرفه ای را از راه دور دنبال کرد! این سوال من را وادار کرد تا درباره آن تحقیق کنم. ابزارهایی مانند email و لیستهای پستی در بستر مناسبی همچون اینترنت٬ این کار را آسان کرده اند. اما آیا فقط به واسطه آنها می توان به تنهایی از پس کار برآمد ؟ یکی دیگر از جوابهایی که در این راه به آن رسیدم٬ چیزی بود به نام CVS. شاید این کلمه برای شما آشنا باشد و یا برای یک حرفه ای ابزاری مناسب که سالها از آن استفاده می کند. اگر شما با این موضوع آشنا نیستید ٬ این مقاله می تواند شروعی برای آشنایی با این موضوع باشد. شاید روزی شما هم وارد دنیایی مشابه دنیای برنامه نویسان شدید. برای CVS کتابهای متعددی وجود دارند و من قصد ندارم وارد دنیایی از دستورات و روشها برای CVS بشوم. چراکه آنوقت باید روی کتاب قطوری کار کرد. پس تنها به معرفی آن و طرح نمونه ای برای آشنایی مختصر با طرز عملکرد آن می پردازیم.

اما این کلمه CVS به چه معنایی است؟ (Concurrent Versions System) کنترل نسخه های متفاوت ! خوب شاید برگردان آن به فارسی چندان مناسب نباشد. اما در یک جمله ٬ می توان گفت که برای ذخیره کردن تاریخچه کدها یا متون شما است. تاریخچه ! شما متنی دارید و آن را برای اولین بار ایجاد کرده اید. حال هر از گاهی آن را تغییر می دهید و آن را به روز می کنید. اگر تغیراتی را که اعمال کرده اید٬ ذخیره بشوند و هر وقت خواستید بتوانید از این تغییرات مطلع باشید. می تواند در موردی مانند دنبال کردن باگهای یک برنامه مفید باشد. می توانید گذشته را مرور کنید و ببینید که چه چیزی مشکل را ایجاد کرده بود.

ذخیره کردن نسخه های متفاوت از فایل می تواند وقت و زمان زیادی را از شما بگیرد. اما CVS همه را در یک فایل ذخیره می کند. شما نیازی به حفظ و نگهداری شماره هایی که این فایل را به مرور ویرایش می کنید٬ نخواهید داشت. هر زمان که بخواهید می توانید این روند را از روی گزارش ها پیگیری کنید.

اگر شما عضوی از یک گروه هستید و روی یک پروژه کار می کنید ٬ CVS برای شما ابزار مناسبی خواهد بود. می توانید به طور همزمان روی یک پروژه کار کنید. بعضی از رابطها خودشان سعی می کنند تا جلوی ویرایش همزمان را از دو نفر بگیرند. می توانید به صورت جداگانه روی یک پروژه کار کنید و خود CVS بعد از پایان کار ٬ آن را جمع و جور می کند.

پروژه CVS با نوشتن یکسری اسکریپت(Shell script) از سوی Dick Grune برای comp.sources.unix از نسخه شش به بعد در سال ۱۹۸۶ میلادی شروع شد. که می توان گفت که این کدها در CVS امروزی قرار ندارند و حتی قسمتی از آن را تشکیل نمی دهند. در سال ۱۹۸۹ ٬ Brian Berliner طراحی و کدنویسی آن را انجام داد و بعدها Jeff Polk به کمک او آمد.

●آشنایی با طرز کار CVS

برای اینکه با طرز کار CVS آشنا شوید. آن را از دو سمت client و server نگاه می کنیم. تا بتوانیم تقریبا آنچه که اتفاق می افتد را ببینیم. مسائل امنیتی و نحوه مدیریت ٬ کارایی و اطمینان لازم را ایجاد می کند.

Serve●r

اولین چیزی که برای مدیرت فایلها نیاز داریم ٬ به اصطلاح یک مخزن است. این مخزن یا همان دایرکتوری ٬ برای قرار دادن فایلهای پروژه ها هستند. بنابراین ایجاد مخزن اولین قدم است. شما می توانید آن را در هر جایی که بخواهید ایجاد کنید. بسته به اینکه کار شخصی خودتان یا شبکه محلی یک دفتر را انجام می دهید و یا اینکه قرار است روی اینترنت باشد و تعداد بیشتری به آن دسترسی داشته باشند. خوب به عنوان مثال یک فایل متنی را با دوستانم روی رایانه شخصی خودم به اشتراک می گذارم. آنها می توانند با کد کاربری خودشان از رایانه من استفاده کنند. چون من از پارتیشن home نگهداری می کنم و از سیستمهای متفاوتی استفاده می کنم٬ امن ترین جا همان دایرکتوری شخصی است. یک دایرکتوری به نام project ایجاد می کنم و مخزن اصلی کارهایم قرار می دهم.

توجه: با توجه به اینکه این یک مثال است. من هر دو سمت client و server را در دایرکتوری شخصی خودم اضافه کردم.

mohammad@debian:~$ mkdir project

mohammad@debian:~$ cd project

mohammad@debian:~/project$ cvs -d /home/mohammad/project init

mohammad@debian:~/project$ ls -l

total