آشنایی با 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 |