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


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

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

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

   ورود کاربران




 


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

آشنایی با Subversion بخش چهارم

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

آشنایی با Subversion بخش چهارم

تعامل کاربران با مخزن فایل و ساخت نسخه کاری

هم اکنون که سرور آمــاده است دیـــگر کاربران مختلف می‌توانند به آن متصل شده، فایلها را دریافت کرده و کار خود را بر روی پروژه آغاز نمایند. اجازه دهید خود را یک کاربر عادی فرض کنیم کــه توسط مدیر سیستم به پروژه دعوت شده و قرار است که بر روی آن کار کند. ما ابتدا باید نسخه ای از فایلهای پروژه را بر روی سیستم خود دانلود کنیم تا بتوانیم کار خود را آغاز نماییم. به عمل برداشت فایلها از مخزن فایل و تشکیل نسخه کاری شخصی اصطلاحا checkout مـی‌گویند. فرض کنید این جناب مدیری که مــا را بــه شرکت در پروژه دعوت کرده است، آدرس سرور subversion خود را به ما داده و از ما توقع دارد که در اسرع وقت کار خود را بر روی پروژه آغاز نماییــم. خوب، کار خیلی ساده است، در واقع بــاید فـــایلها را از سرور مــرکــزی بـــر روی دستــگاه خود منتقل کرده و کار خود را آغاز نماییم. خوب، قطعا ما می‌خواهیم که فایلها را درون شاخه ای از دستگاه خود، مثلا Calender ذخیره نمایــیــم و آدرسی کـه مدیر پروژه به ما داده است svn.hoomand.com می‌باشد. ما با اجرای دستور زیر اولین برداشت خود را از مخزن فایل انجام می‌دهیم:


$ svn checkout http://svn.hoomand.com Calender

A firstFile.php

A someOtherFile.php

A someGraphic.png

A README

A template/gui.tpl

A template/body.html

...

Checked out revision 15



همانطور که می‌بینید بـــا دستور svn checkout و مشخص کــردن مکان سِرور و شاخه‌ای از دستگاه خود که می‌خواهیم نسخه کاری (Working copy) خود را در آنجا ذخیره کنیم، تمـــام کــارها براحتی انجام می‌شود. کاراکتر‌های A بدین معنا هستند که فایلها/شاخه‌ها در حال Add شدن می‌باشند. در انتها نیــز پیغامی‌ داده می‌شـــود مبنــی بر اینکه نسخه ۱۵ مخزن فایل توسط شما دانلود شده است. با مفهوم نسخه و این شماره به زودی آشنا می‌شنویم.

اگر بصورت عادی و با دستور ls محــتـوای شاخه Calender را نگاه کنید قطعا فایلهای خودتان را در آنجا می‌بینید. ولی اگر با دقت بیشتری نگاه کنید و از دستور ls -a استــفاده کنید، می‌بینید کـــه در شاخه Calender و تمام زیر شاخه‌های این شاخه، شاخه مخفی ای به نام svn. وجــود دارد. فکـــر می‌کنید محتوای این شاخه چه باشد؟ ببینید هنگامی‌که شما فایلهای خود را از مخزن فایل اصلی واقع در سرور بر می‌دارید، می‌خواهید کــه بـر روی آنها کار کنید و یک سری تغییراتی در آنها انجام دهید. فرض کنید شما فایل someOtherFile.php را ویرایش کرده و چــنــد خــط بـه آن اضافه کنید. همینطور فرض کنید که فایل someGraphic.png را باز کرده و چندین شــکل جدید به آن اضافه کنید. ممکن است احساس کنید به فایل index.php نیز نیاز دارید و آنرا از صفر ایجاد نمایید. خــوب، اجازه دهید در همین میان شما را با دستور svn status آشنا کنم. وظیفه این دستور چیست؟ این دستور فایلهای فعلی شما را که در نسخه کاریتان وجود دارد با نسخه اصلی بدون تغییر که ابتدا دانلود کردید مقایسه کرده و فایلهای تغییر یافته را به شما نشان می‌دهد. در مورد مثال خودمان اگر این دستور را اجرا کنیم، نتایج زیر را مشاهده خواهیم کرد:


$ svn status

M someOtherFile.php

M someGraphic.png

? index.php


همانطور که می‌بینید M بدین معناست که فایلهای someGraphic.png و someOtherFile.php تغییر (Modify) یافته‌اند. ? هم به این معناست که subversion فایل index.php را نمی‌شناسد، خوب، حق هــم دارد، چون این فایل را جدید اضافه کـرده‌اید و اصلا در ورژنی کــه از مخزن فایل گرفته‌اید وجـود نداشته است. فــکــر می‌کنید subversion از کـجــا متــوجــه می‌شود کـــه چه فایلهایی نسبت به نسخه‌ای ‌کــه در ابتدا دانلود کرده‌اید‌ تغییر یافته‌اند‌ و یا اضافه شده‌اند؟ جواب ساده است: subversion همیشه یک نسخه از فایلهای اصلی دانلود شده را در جــایی ذخــیــره مـی‌کـند تا بعدا بتواند تغییرات شما را نسبت به آن مقایسه کند و بدین صورت این نتایج را ارائه کنـد. بنابرایــن svn status بـــه هیــچ عـنــوان برای فهم تغییرات انجام گرفته و داشتن ملاکی برای مقایسه دوباره به مخزن فایل سرور مراجعه نمی‌کند. به بیـــان دیــگـــر شــما می‌توانید هیچ ارتباطی با اینترنت نداشته باشید و این اطلاعات را دریافت کنید. حال فکر می‌کنید subversion این نسخه اولیه را کجا نگاهداری می‌کند؟ اگر هنوز ســـوال اول ما به خاطرتان هست کــه پــرسیدیم داخل شاخه‌های مخفی svn. واقع در هـــر شاخه‌ای چـــه چیزی قرار دارد، این پاسخ همان سوال است، در داخـــل ایـــن شــاخه‌ها نسخه‌های اصلی فایلهایی که در آن شاخه وجود دارند قرار دارد، نسخه‌هایی که هیچگاه تغییر پیدا نمی‌کنند. البته در این شاخه یک سری فایلهای کنترلی مربوط به subversion نیز قرار دارند که subversion برای کار به آنها نیاز دارد.

تغییرات قابل انجام در نسخه کاری

پس همانطور که دیدید شما می‌توانید روی نسخه کاری خــود کـــار کرده و تغییراتی را در فــایلها ایجاد نمایید. حال اجازه دهید ببینیم شما چه تغییراتی را و چگونه می‌توانید ایجاد نمایید:


تغییر فایلهای موجود
شما می‌توانید فایلهای موجود در نسخه کاری خود را ویرایش کرده و هر بلایی که خواستید به هنگام ویرایش بر سر آنها بیاورید! بعد از انجام ویرایش خود، هیــچ نیازی نیست که به subversion بگوییــد فــایــل شـما تغییر پیدا کرده است. خود subversion متوجه این قضیه می‌شود، برای اثبات این مدعا هم می‌توانید دستور svn status را اجــرا کنـــید و ببینید که فایل ویرایش شده شما را به همراه یک M نشان می‌دهد‌ که همانطور که گفته شد ایــن ‌M نشان مــی‌دهــد فـایل تغییر یافته است.


اضافه سازی فایل/شاخه جدید
شما می‌توانـــید هــر فایل و یـــا شاخه‌ای را کـــه خواستید به نسخه کاری خود اضافه کنید، ولــی دیـگر subversion آنرا بصورت خودکار برای اضافه شدن به مخزن فایل اصلی علامت گذاری نمی‌کند. اگـــر خــاطـرتان باشد در مثال بالا، ما فایل index.php را به نسخه کاری خود اضافه کردیم. قطعا پس از اجـــرای دستور svn status می‌تــوانید فــایــل اضــافه شده خود را با یک علامت سوال (؟) مشاهده کنید، کـه این بدان معناست که subversion نمی‌داند با این فایل چکار باید بکند. اگر خواستار این باشید که این فایل در آینده پس از ارسـال نسخه کاریتان به سِرور به مخزن فایل اصلی اضافه شود، باید آنرا برای اضافه شدن انتخاب نمایید. این کار را با دستور svn add انجام می‌دهیم:


$ svn add index.php

A index.php

عینا همین کار را برای یک شـــاخه هم باید انجام داد. فـــرض کنید شاخه‌ای بــه اسم includes می‌سازید و چندین فایل درون آن اضافه می‌کنید، اگر بیرون از این شاخه دستور svn status را اجــرا کنــید، می‌بیـنید کــه نـام آن شاخه به همراه تمام فایلهای درون آن با ؟ آمده است. برای اضافه کردن آن شاخــه و تمــام فــایــلهای درون آن تنـها کافیست که همانند دستور بالا آن شـاخـه را add نمایید. در subversion بصــورت پیــش فـــرض عــمـل اضافه سازی بصورت پیمایش عمقی (Recursive) انجام می‌شود، یعنی با اضافه کردن یک شاخه تمام زیر شاخه‌ها و فایلهای آنها نیز اضافه می‌شود. البته با اضافه سازی سوئیچ N- می‌توان این رفتار پیش فرض را تغییر داد.

خــوب، حال که فایل index.php را بوسیله دستــور svn add بـــه نسخــه کاری خود اضافه کردیم، اگر مجددا دستور svn status را اجرا کنیم خواهیم داشت:


$ svn status

M someOtherFile.php

M someGraphic.png

A index.php


همانطور که می‌بینید جای علامت سوال با یک کاراکتر A عوض شده است کــه ایــن بــدان معنــاست کـــه تـمـام کـارها بدرستی پیش رفته است. اگر دقت کنید می‌بینید که فایلهای someOtherFile.php نیز دارای عـلامت M است و همانطور که قبلا گفتیم این علامت بدین معناست که این فایل نسبت به دفعه آخــری کـــه از مـخـزن فــایل اصلی موجود بر سرور دانلود شده است، توسط ما تغییر یافته است. حال فرض کنید بخواهیم بفهمــیم کــه مـا چه تغییراتی را بر روی این فایل انجام داده‌ایم، چاره چیست؟!




بیژن هومند

PDF Version

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

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