آشنایی با Subversion بخش سوم(1530 مجموع کلمات موجود در متن) (9482 بار مطالعه شده است) آشنایی
با Subversion
بخش
سوم
نسخه
کاری
این
اصطلاح را قبلا هم در این بخش بارها
دیدهاید.
یک
نسخه کاری در واقع چیزی نیست جز یک شاخه
در کامپیوتر شخصی شما که مقداری فایل را
در خود نگاه میدارد!
این
فایلها در واقع کـپـی از فــایلهای موجود
در مخــزن فایل سِرور هستند.
هر
کاری که دوست داشته باشید میتوانید با
فایلهای نسخه کــاری خــود بکـنـید.
میتوانید
آنها را تغییر دهید، پاک کنید، اسمشان را
عوض کنید، آنها را در زیر شاخه های مختلفی
که درون نسخه کـاری قرار دارد کپی کنید و
خلاصه هر کاری که به ذهنتان میرسد با
آنها انجام دهید، بالاخره کامپیوتر مال
شماست و صاحب اختیار هستید.
حتی
اگر این فایلها مربوط به زبان برنامه
نویسی باشند که کامپایل پذیر باشد،
میتوانید خیلی ساده همانطور که قبـلا
آنـها را کامپایل میکردید، اینجا هم
آنها را کامپایل کنید.
subversion به
هیچ عنوان بدون اجازه شما این فایلها را
در اخـتـیار دیگـران قــرار نمیدهد و
فــایلهای دیگران را نیز در نسخه کاری
شما قرار نمیدهد.
پس
از اینکه کارتان روی فایلها تمام شد،
میتوانید با اجرای یک دستور آنها را
منتشر (publish)
کرده
و در اختیار بقیه کاربران قرار دهید.
به
هنگام منتشر کردن فایلهای خود نیز اگر
نسخه اولیهای کــه شـمـا دانلود کرده
بودید و این تغییرات را روی آن اعمال
کردهاید با نسخه موجود در مخزن فایل
برابر نباشد، subversion
پیغام
لازم مبنی بر تصادم
(Conflict)
را
به شما میدهد که با توجه به توضیحات بالا
دیگر بقیه داستان را میتوانید خود حدس
بزنید.
نسخه
کاری شما علاوه بر فایلهای شما، یک سری
فایلهای سیستمی را نیز که برای کار
subversion
لازم
میباشد در خود نگاه میدارد.
این
فایلهای سیستمی درون شاخه ای به نام
svn.
قرار
دارند.
در
بخش بعد توضیح خواهیم داد که این فایلها
چه هستند و چه فایده ای دارند.
Subversion
در
عمل تئوری
کافیست، در این بخش که در واقــع بخــش
آخر معرفی subversion
در
ایــن مقــاله کـوچـک میبـاشـد نحوه
نصب subversion،
راه انداختن یک سِرور کوچک و ساخت مخزن
فایل بر روی سرور را به شما نشان میدهــم.
پـس
از آنـکه از طــرف سِرور خیالتان جمع شد،
نحــوه کار با این سِرور و ســاخت نسخــه
کاری بر روی دستگاه کاربران و دستورات
مفید مدیریت فایلها را به شما نشان داده
و در آخر هم منابع تکمیلی، یا شاید بتوان
گفت منبع اصلی کار با subversion
را
به شما معرفی میکنم.
نصب
Subversion
subversion
بر
روی لایه قابل حمل APR
ســاخته
شده و این خود باعث میشود که subversion
بر
روی هر سیستمی که Apache
بر
روی آن قابل نصب باشد، کار کند.
بنابراین
میتــوانـیــد subversion
را
روی Windows،
Linux،
تـمـام نسخ BSD
و
Mac
OS X و
Netware
نصب
کنید.
راحتترین
روش نصب subversion
مــراجـعـه
بــه سایت [۱]
و
دانـلـود نسخه باینری مربوط به سیستم
عامل خودتان میباشد.
این
سایت معمولا بسته های نصاب گرافیکی برای
کاربران ویندوز مایکروسافت، و پکیـجــهای
DEB و
RPM و
... را
ارائه میدهد.
البته
روشهای دیگری نیز برای نصب وجود دارد.
میتوانیــد
بسـته ســـورس برنامه را دانلود کــــرده
و خود کامپایل کنید، اگر کاربر دبیان
هستید میتوانید از دستور معروف apt-get
install subversion استفاده
کنید و ...
راه
اندازی سِرور subversion
من
اکنون اینطور فرض میکنم کــه شما
subversion
را
بــر روی دستــگاه خــود نصب کردهاید
و میتوانید دستورات svn،
svnadmin
و
svnlook
را
اجـــرا نمایید.
لازم
به ذکــر اســت کــه اگــر هدف شما از
خواندن این متن تنها آشنایی با مفهوم
subversion
و
کنترل ورژن باشد تا بحال اینکار را انجام
دادهاید و نیازی نیست که بیشتر از این
مطالعه کنید!
ولی
اگر واقعا خواستار کار با این سیستم
میباشید، حتما ابتدا ایــن نرمافزار
را نصب کنید و بـعــد اقدام بـه خواندن
بقیه مطالب بکنید، چون در غیر اینصورت
طولی نمیکشد که کاملا از کنترل ورژن
متنفر خواهید شد، دلیل این امر هم همانند
بقیه کارهای برنامهنویسی ساده است:
احساس
خواب آلودگی مفرط!
بعــد
از یکبــار نـصب subversion
و
کار کردن با آن و عادت کردن به این محیط،
مطمئن باشید که این سوال را بارها از خود
خواهید پرسید که من تا بحال چگونه بدون
آن کار میکردم؟!
اکنــون
میخواهیم همان مخزن فایل معروف را نصب
کنیم که کاربران قرار است فایلهای خود را
در آن بریزند و تمام log
ها
و نسخههای مختــلف در آن ذخیره میشـوند.
برای
ساخت این مخزن فایل در سِرور خود ابتدا
باید شاخهای را برای اینکار انتخاب
کنید.
پس
از اینکه این شـــاخـــه را انتــخـاب
کردید، بوسیله دستور زیر میتوانید مخزن
فایل خود را ایجاد نمایید:
-
$
svnadmin create /path/to/repository
|
لازم
به ذکر است که قبل از اجرای دستور بالا،
شاخه مورد نظر خالی میباشد.
پــس
از اجرای دستور میتوانید درون آن شاخه
را مشاهده کنید:
-
$
ls /path/to/repository conf/ dav/ db/ format hooks/
locks/ README.txt
|
همانطور
که مشاهده میکنید چندین شاخه درون مخزن
فایل ایجاد شدهاند.
بحــث
و بررســی تـک تک این شاخه ها در حوصله
این مقاله نمیباشد، تنها به ذکر این
نکات اکتفا میکنم که شاخه conf
حاوی
فایلهای config،
شاخه db
شامل
فایلهای بانک اطلاعاتی Berkeleley
DB و
شاخه hooks
حــاوی
اسکریپتهایی میباشد که میتوان قبل و
یا بعد از ارسال داده ها توسط کاربر آنها
را اجرا کرد، در واقع این اسکریپتها در
حکم یک سری trigger
میباشند.
خوب،
اکنون شما صاحب یک مخزن فایل رسمی ولــی
خـــالی شدهاید!
معمولا
ما ابتدا یک سری فایل در قالب یک پروژه
داریم که بعد از بـــزرگ شدن پـــروژه
نیـــاز بـــه ورژن کنترل پیدا میکنند
و ما به همین خاطر سراغ subversion
و
ساخت مخزن فایل میرویم.
خوب،
اگر این سناریو در مورد شما هم صادق است
(قطعا
همینطور است!)
حال
باید دید چطور میتوانید مدیریت فایلهای
پروژه خود را به subversion
بسپارید،
در واقـــع آنــهــا را در مخزن فایل قرار
دهید تا دیگر مخزن شما خالی نباشد!
راحتترین
روش انجام این کار همان import
کــردن
فایـــلها بــه درون مخـزن فایل میباشد.
فرض
کنید پروژه ای دارید به نام Calender
که
درون شاخهای بـــه همیــن نــام قــرار
دارد و میخواهید این پروژه را درون مخزن
فایل جدیدتان قرار دهید، نحوه کار به
اینصورت است:
همانــطور
کـه میبینید پس از دستور svn
import ابتدا
آدرس شــاخهای کــه فایـــلــهای
Calender
ما
در آن قـــرار دارد را میاوریم، سپس آدرس
مخزن فایل را.
لطفا
دقت کنید که هر وقت، تکرار میکنم هر وقت
خواستید آدرس مخزن فایل را در هر دستوری
ذکر کنید، حتما آنرا با پروتکل و بصــورت
URL
بنویسید.
فراموش
نکنید که مخزن فایل در واقع درون سِرور
قرار دارد، در اینجا که من از پروتوکل
file:///
استفاده
کردم به این دلیــل بــود کــه دستــور
import
را
از درون خــود سِرور اجرا میکردم.
اگر
این محیط یک محیط واقعی بود و ما در حال
نوشتن یــک مقاله آموزشی نبودیم، به
احتمال قوی من از روی دستگاه کلاینت خود
همچین کاری را انجام میدادم، در اینصورت
اگر بر فـــرض اســـم سِـرور من
svn.hoomand.com
بود،
آنگاه دستور بالا بصورت زیر نوشته میشد:
خوب،
پس از اجرای این دستور، خروجی مشابه زیر
مشاهده خواهید کرد:
-
Adding
/home/hoomand/Calender/firstFile.php
Adding
/home/hoomand/Calender/someOtherFile.php
Adding
/home/hoomand/Calender/someGraphic.png
Adding
/home/hoomand/Calender/README
Adding
/home/hoomand/Calender/template/gui.tpl
Adding
/home/hoomand/Calender/template/body.html
…
Committed revision 1.
$
|
در
خط آخر نیز جمله معروف Committed
revision #number آمده
است که با داشتن شماره ۱ نشان میدهد که
اولین نسخه خود را با موفقیت درون مخزن
فایل قرار دادهاید.
از
ایـــن به بعد کاربران میتوانند به مخزن
فایل متصل شده و با دانلود کردن فایلهای
آن نسخه کاربری شخصی خود را ایجاد نمایند
و پس از هر تغییر آنرا مجدد در مخزن فایل
قرار دهند.
شماره
۱ که الان شاهد آن بودید با هر تغییر که
توسط کاربران روی مخـــزن فایل انجام شود
(فایل
جدیدی اضافه شود، فایلی تغییر پیدا کند
و ...)
یکی
یکی اضافه میشود، در مورد این شمـــاره
و نـحـوه اضافه شدن آن بعدا به تفصیل سخن
خواهیم گفت.
خوب،
اکنون که دیگر واقعا یک سری فایل در مخزن
فایل خود قرار داده ایم، فکـــر میکنید
اگــــر دوبــاره وارد سِرور شویم و درون
شاخهای که مخزن فایل را در آن نصب کرده
ایم نگاه کنیم، چه خواهیم دید؟!
بیائید
دوباره دستور زیر را پس از وارد شدن به
سِرور اجرا کنیم:
-
$
ls /path/to/repository conf/ dav/ db/ format hooks/
locks/ README.txt
|
چی
شد؟!
باز
هم که همان محتــوای قبلی، پس فایلهای
مــا کجا رفتند؟ خــوب، الان وقت این است
که به شما بگویم فایلهای شما در واقع درون
فایل سیستم خود سیستم عاملتان ذخیره
نمیشـــود، اگــــر اینـــطــور بـــود
کــه دیـگر شما نمیتوانستید مثلا ۵ نسخه
گذشته از یکی از فایلهایتان را مجدد ببینید
و در تونل زمان به عقب یا جلو بروید.
Subversion از
یک بانک اطلاعاتی بسیار قوی به نام Berkeley
DB استفاده
میکند که این بانک اطلاعاتی تمامی
ویـــژگیـــهای یـک بانک اطلاعاتی حرفهای
همچــون پشتیبانی از transaction
ها
و index
گذاری
و ...
را
دارد.
فایلهای
شما درون این بانک اطلاعاتی ذخیره میشود،
به بیان دیگر هیچگاه قادر به دیدن فایلـــهای
خــود با دستورات سیستم عاملتان نیستید.
ولی
اگر واقعا دلتان برای فایلهایتان تنگ شده
است و میخواهید که آنها را قبل از تهیه
نسخه کاری خود ببینید، اصلا نگران نباشید،
دستور svn
list مختص
شما طراحی شده است:
-
میبینید
که فایلهای شما در مخزن ذخیره شدهاند.
یک
مطلب که فراموش کردم توضیح دهم همانا
استفاده از سوئیچ m
بود
به هنگام import
کردن
فایلها.
هر
موقع که تغییرات شما به گونهای باشد که
بخــواهد چیزی را در مخزن فایل تغییر دهد
(در
واقع چیز جدیدی به آن اضافه کند، چون
هیچگاه هیچــی پــاک نخــواهد شد، تنها
ورژن جدیدتر اضافه میشود)،
شما میتوانید یک پیغام را
برای ذخیره سازی مشخص کنید.
ایـــن
پیـــغام log
شده
و در آینده میتوان دوباره آنرا مطالعه
کرد تا دلیل تغییرات را متوجه شد.
اگـــر
از این سوئیچ استفاده نکنید، ویرایشــگــر
پیش فرض سیستم عامل شما قبل از اجرای
عملیات باز میشود تا یادداشتتان را آنجا
وارد کنید.
بنابر
این اگر متن طولانی برای نوشتن دارید،
لزومیندارد که از این سوئیچ استفاده
کنید.
لازم
به ذکر است که اجباری برای وارد کردن پیغام
وجود ندارد، پس از باز شدن ویرایشگر پیش
فرض سیستم میتوانید بدون تایپ هیچ توضیحی
از آن خارج شوید، در اینصورت subversion
بـــه
شما ۳ امکان میدهد:
وارد
کردن مجدد توضیحات، قطع عملیات و یا اجرای
عملیات بدون ثبت هیچ یادداشتی.
بیژن
هومند
PDF Version
[1]
http://subversion.tigris.org
|