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


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

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

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

   ورود کاربران




 


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

آشنایی با Subversion بخش سوم

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

آشنایی با 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 /home/hoomand/Calender file:///path/to/repository -m “Initial import”


همانــطور کـه می‌بینید پس از دستور svn import ابتدا آدرس شــاخه‌ای کــه فایـــلــهای Calender ما در آن قـــرار دارد را میاوریم، سپس آدرس مخزن فایل را. لطفا دقت کنید که هر وقت، تکرار می‌کنم هر وقت خواستید آدرس مخزن فایل را در هر دستوری ذکر کنید، حتما آنرا با پروتکل و بصــورت URL بنویسید. فراموش نکنید که مخزن فایل در واقع درون سِرور قرار دارد، در اینجا که من از پروتوکل file:/// استفاده کردم به این دلیــل بــود کــه دستــور import را از درون خــود سِرور اجرا می‌کردم. اگر این محیط یک محیط واقعی بود و ما در حال نوشتن یــک مقاله آموزشی نبودیم، به احتمال قوی من از روی دستگاه کلاینت خود همچین کاری را انجام میدادم، در اینصورت اگر بر فـــرض اســـم سِـرور من svn.hoomand.com بود، آنگاه دستور بالا بصورت زیر نوشته می‌شد:


$ svn import /home/hoomand/Calender http://svn.hoomand.com -m “Initial import”


خوب، پس از اجرای این دستور، خروجی مشابه زیر مشاهده خواهید کرد:


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 مختص شما طراحی شده است:


$ svn list file:///path/to/repository

firstFile.php

someOtherFile.php

someGraphic.png

README

template/gui.tpl

template/body.html



می‌بینید که فایلهای شما در مخزن ذخیره شده‌اند. یک مطلب که فراموش کردم توضیح دهم همانا استفاده از سوئیچ m بود به هنگام import کردن فایلها. هر موقع که تغییرات شما به گونه‌ای باشد که بخــواهد چیزی را در مخزن فایل تغییر دهد (در واقع چیز جدیدی به آن اضافه کند، چون هیچگاه هیچــی پــاک نخــواهد شد، تنها ورژن جدیدتر اضافه می‌شود)، شما می‌توانید یک پیغام را برای ذخیره سازی مشخص کنید. ایـــن پیـــغام log شده و در آینده می‌توان دوباره آنرا مطالعه کرد تا دلیل تغییرات را متوجه شد. اگـــر از این سوئیچ استفاده نکنید، ویرایشــگــر پیش فرض سیستم عامل شما قبل از اجرای عملیات باز می‌شود تا یادداشتتان را آنجا وارد کنید. بنابر این اگر متن طولانی برای نوشتن دارید، لزومی‌ندارد که از این سوئیچ استفاده کنید. لازم به ذکر است که اجباری برای وارد کردن پیغام وجود ندارد، پس از باز شدن ویرایشگر پیش فرض سیستم می‌توانید بدون تایپ هیچ توضیحی از آن خارج شوید، در اینصورت subversion بـــه شما ۳ امکان می‌دهد: وارد کردن مجدد توضیحات، قطع عملیات و یا اجرای عملیات بدون ثبت هیچ یادداشتی.




بیژن هومند

PDF Version

[1] http://subversion.tigris.org

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