آشنایی با Subversion بخش چهارم(1199 مجموع کلمات موجود در متن) (7316 بار مطالعه شده است) آشنایی
با 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
|