ورود/ایجاد حساب کاربری
   منوی اصلی
· خانه
· لیست کاربران
· جستجو
· آمار مشاهدات
· آرشیو مقالات


- شرح
· راهنمای نویسندگان
· درباره ما

   همکاری با نشریه
در صورتی که مایل به همکاری با نشریه هستید، می‌توانید در لیست پستی نشریه عضو شده و در جریان امور قرار گیرید. برای اطلاعات بیشتر، اینجا کلیک کنید.

   کاربران
سردبیر
هیچ مدیر کمکی حاضر
همکاران
هیچ مدیر کمکی حاضر
اعضا:
جدیدترین:جدید امروز:0
جدیدترین:جدید دیروز:0
جدیدترین:مجموع:2471
جدیدترین:جدیدترین:
ufumenarayu
اعضا:حاضر
اعضا:اعضا:0
مهمان‌ها:مهمان‌ها:6
مجموع:مجموع:6
کاربران حاضر
هیچ کاربر حاضری وجود ندارد

   ورود کاربران




 


 برای ورود مشکل دارید؟
 ثبت نام کاربران جدید

آشنایی با Subversion بخش پایانی

(808 مجموع کلمات موجود در متن)
(7053 بار مطالعه شده است)  نسخه چاپی

آشنایی با Subversion بخش پایانی

تاریخچه Subversion و مقایسه آن با CVS

اگر در ۱ سال گذشته تنها ۵ دقیقه در روز از سایتهای برنامه‌نویسی دیدن کردن باشید، قطــعا اســم CVS بــه گــوشتـان خــورده است. فکر می‌کنید نرم‌افزارهای بــزرگی چون لینوکس، PHP، MySql و در کل بــازمتن چطور بوجود آمده‌اند؟ ایــن نرم‌افزارها هر کدام چنــدین و چند صد برنامه‌نویس دارند، قطعا فکر نمی‌کنید کــه هـمـه ایــن عــزیزان در طی چند سال طراحی این برنامه‌ها زیر یک سقف دور هم گرد آمده‌اند؟! از هــمان موقع نیز از ورژن کنترل استــفاده میشده و نرم‌افزاری که اینکار را میکرده و همین امروز هم بسیار کاربرد دارد (هنوز حتی بیشتر از subversion) نرم‌افزار CVS می‌باشد.

در ســال ۲۰۰۰، شرکت [1]CollabNet شروع به طراحی و ساخت جایگزینی برای CVS کرد. دلیل اینـکـار شرکت این بود که آنها در حال طراحی پروژه‌ای به نام SourceCast بودند که شدیدا از CVS استفاده ‌‌می‌کرد، منتها از همان اول مشخص بود که CVS نمی‌تواند پاسخگوی اینکار بــاشـد. آنـهـا بــه نرم‌افزاری جدید نیاز داشتند کــه تمــام اشکالات CVS قدیمی و پدربزرگ ورژن کنترل را از میان بردارد. به همین دلیل آنها از Karl Fogel نویسنده کتاب Open Source Development With CVS برای طراحی این سیستم جدید دعوت به همکاری کردند. تصادفا در آن زمـــان او بــا دوست قدیمش Jim Blandy در حال مذاکره برای ساخت یک سیستم ورژن کنترل جدید بودند. این دو دوست کسانی بودند که از سال ۲۰۰۵ شرکت Cyclic Software را برای خدمات دهی حرفه‌ای به کاربران CVS بنیانگذاری کرده بودند. هر چند چندین سال است که آنها دیگر صاحب این شرکت نیستند، ولی کار هر روزه آنها با CVS و مشکلاتی که به همراه داشت، بــاعـث شده بود که خود به فکر طراحی یک سیستم جدید بیفتند. Jim حتی آنقدر پیش رفته بود کــه طراحی اولیه مخزن فایل این سیستم را نیز انجام داده بود و اسم Subversion را نیز او پیشنــهاد کــرد. بــه هنـگام دعوت CollabNet از آنها، Karl به سرعت دعوت را پذیرفت، و Jim نیز پس از متقاعد کردن شرکتی که برای آن کار میکرد – RedHat.com – برای تخصیص او به این پروژه، به صورت تمام وقت مشغول به کار بر روی پروژه شد. هدف آنها طراحی سیستمی بود که تمام خــوبیـهای CVS را داشته و در عین حال تمام مشکلات آنرا بر طرف کند. نتیجه چیزی شد که در این چند صفحه به حضورتان معرفی شد.

خالی از لطف نیست اگر به تفاوتهای Subversion و CVS اشاره کنیم تا بیشتر به نقاط قوت Subversion پی ببریم:


  • ورژن کردن شاخه‌ها CVS تنها فایلها را ورژن می‌کند، در صورتی که subversion شاخه‌ها را نیز جزء لاینفک پروژه حساب کرده و آنها را نیز ورژن می‌کند.

  • ورژن بندی درست بخاطر اینکه CVS از شاخه‌ها پشتیبانی نمی‌کند، بنابر این تغییــراتی کـه در یک شاخه اتفاق می‌افتد، مانند عملیات copy، move و rename نیز توســـط آن پشتیبانی نمی‌شوند. در صـــورتی کـــه بـوسیله subversion میتوان از تاریخچه یک فایل و اینکه آیا آن فایل از شاخه دیگری copy/move شده است اطلاع حاصل کرد. همچنین در CVS اگر شما یک فایل را پاک کنید و فایل دیگــری دقیقا با همان نام در جای آن قرار دهید، این فایل جدید ناخودآگاه تمام تاریخچه و اطلاعات ورژن فایل قبلی را دریـــافت می‌کند، یعنی CVS این اطلاعات را به آن اختصاص می‌دهد که خوب کاملا عملی غیر منطقی است، چنین مشکلی در subversion وجود ندارد و هر فایل تاریخچه مختص به خود را دارد.

  • ساختار اتمیک همـانطـور کـه بـارها روی این ویژگی تاکید کردم، عملیات subversion بصورت اتمیک و تراکنشی (Transaction) انجام می‌شود، یعنی یا کــل عملیات انجام شده و یــا اینکــه اصــلا انجام نمی‌شود. فـرض کنید هنگامی که مشغول commit کـــردن نسخه کاری خود بر روی اینتـــرنت هستید ناگهان به دلیلی ارتباط شما با سرور قطع شود، آیا دوست دارید که نیمی از فایلها این وسط منتقـــل شده بــاشنــد و نیم دیگر سرگردان و بلا تکلیف؟! این دقیقا مشکلی است که در CVS اتفاق می‌افتد!

  • metadata ورژن شده هر فایل و شاخه در subversion می‌تواند حـاوی چندین کلید و مقادیر مرتبط با آنها باشد. مثلا برای یک فایل ویژگی copyright را تعریف کرد و ... البته این قسمت را در این مقاله پوشش ندادم، ولی این یکی از امکانات قشنگ subversion است که نظیر آن در CVS به هیچ عنوان وجود ندارد.

  • استفاده از لایه‌های شبکه‌ای مختلف subversion می‌تــوانــد بــه عنــوان مــاژولی از آپاچی استفاده شود و به اینصورت از تمام امکانات این وب سرور قدرتمند نظیر wire compression، authentication و ... استفاده کند.


جمع بندی و معرفی منابع


در این سلسله مقالات کوتاه آموزشی سعی کردم به راحتترین روش مفهوم اولیه کنتــرل ورژن را بیــان کرده و همچنین جدیدترین ابزار موجود در این راستا را که همانا subversion باشد معرفی کنم. راحتترین روش همیشه به معنای بهترین روش نیست. در منبع اصلی این مقالات کــه کتــاب Version Control with Subversion می‌باشـد، بیشتر فرض را بر این گرفته اند که شما با مفهوم ورژن کنترل آشنایی دارید. منتها من سعی کردم کاربر خود را یک ایرانی که به احتمال قوی اصلا اسم چنین مقوله‌ای نیز به گوشش نخورده، در نظــر بگیرم و برای او مطلب بنــویسم. به همین جهت شاید مطالب آورده شده برای کاربری کــه ســـابقه برنامه‌نویسی تحــت ورژن کنترل را داشته تا حدی خسته کننده باشد. در پایان از حوصله همه شما سپاسگذارم و امیدوارم توانسته باشــم ارزش وقتـی که در این راه گذاشتید را به بهترین وجه پاسخگو بوده باشم. خواندن کتاب اصلی subversion کـــه اتفاقا نسخه الکــتــرونیکی آن رایــگان بــوده و توســـط طـــراحــان خود subversion نوشته شده است را به همه شما توصیه می‌کنم. باز هم تاکید می‌کنــم که مطالب آورده شده در اینجا تنها گوشه‌ بسیار کوچکی از کل کاری که می‌تــوان با subversion انجام داد می‌باشد. اگر مایلیدsubversion را بر روی سایت شرکتی خود نصب کنید، کاربر تعریف کنید و ... حتما این کتاب را مطالعه کنید. آدرس کتاب در [2] آورده شده است.


بیژن هومند

PDF Version

[1] http://www.collab.net
[2] http://svnbook.red-bean.com

تمامی مطالب و مقالات این سایت تحت مجوز GNU FDL قرار دارند. بنابراین کپی و ایجاد تغییر در آنها مطابق شرایط این مجوز آزاد می‌باشد.