آشنایی با Subversion بخش ششم(703 مجموع کلمات موجود در متن) (7230 بار مطالعه شده است) آشنایی
با Subversion
بخش
ششم
شماره
تغییرات چیست؟
خوب،
تا جایی که میشد این بحث را پیش نکشیدم،
چون میخواستم که حداقل یک مثال عملی را
با هم کار کرده باشیم و آنقدر راجع به
تئوری بحث نکنیم.
در
واقع من بایـد revision
number را
خیـلی زودتر مطرح میکردم، ولی خوب، الان
هم چندان دیر نشده اسـت!
ببیـنید،
فرض کنید که پروژه شما تنها یک کاربر دارد،
بله، خیلی ساده تنها یک کاربر و فقط یک
کاربر که آنهم شما باشید قرار است بر روی
ایــن پـروژه کار کند.
به
عبارت دیگر یک ســرور subversion
را
تنها برای شخص شخیــص شــمـا تخصیص
دادهاند.
هنگامی
که مخزن فایل سرور را میساختند (بـا
دستور svn
create و
بعد هم طبعا یک سری فایل را درونش import
کردهاند
با دستــور svn
import)،
شمـاره ۱ به آن مجموعه فایلهای موجود در
آن تخصیص مییابد.
هر
بار که کاربران فایلهای خود را روی مخــزن
فـایل commit
میکنند،
یکی به این شماره اضــافـه میشود.
خــوب،
اینــطوری کـار خیــلی ســاده میشــود.
روز
اولـی که میخواهید با سرور کار کنید،
همــانطور که توضیح داده شد یک نسخه از
فایلها را درون نسخه کاری کامپیوتر خود
اصطلاحا checkout
نمــوده
و کـار خود را شروع میکنید.
چون
شما تنها کسی هستید که بر روی پروژه کار
میکند، قطعا نسخه شماره ۱ را checkout
میکنیــد.
فـرض
کنید پس از انجام تغییرات بر روی یک و یا
چندین فایل، بخواهید همانطور که در
پاراگراف قـبــل تـوضیـح دادم فایلها را
بر روی سِرور commit
نمایید.
پس
از commit
کــردن،
نسخــه ســرور و یــا همــان شـمـاره
تغییرات اگر بخواهیم درست ترجمه کنیم به
۲ ارتقاء مییابد.
پس
از چند ساعت کار دیگر بر روی فایلهایتان
و یک commit
دیگر
از طرف شما، این نسخه به ۳ ارتقاء مییابد
و ...
بنابر
این ساختار مخزن فایل بصورت زیر است:
شکل
۱-۳
نمایی از ساختار مخزن فایل و نحوه تخصیص
شماره revision
همانطور
که میبینید در هر شماره تغییراتی در
مخـزن فایل مشاهده میشود.
در
حالت صفر هیچ فایلی بر روی مخزن فایل وجود
نداشته، بعد از import
اولیه
(و
یـا شـاید حتی نوشتن چندین فایل از صفر و
commit
آنها)
شمـاره
تغییرات بـه ۱ ارتقاء مییابد و ...
بنـابر
این هرگاه خواستید از یک سـرور subversion
نام
ببرید و مثلا بگویید فایلهای من بر روی
این سرور قرار دارند، حتما باید شماره
نسخه را نیز ذکر کنید.
حال
فــرض کنید بعد از اینکه شـما ۱۰ نسـخه
را commit
کـردهاید،
کاربــر دیــگری نیز به پروژه اضافه شود.
هنگامی
که او میخواهد برای بار اول نسخه کاری
خــود را تشکیل دهد، نسخه شماره ۱۰ را از
مخزن فایل دریافت میکند، و این کاملا
منطقی است، چون او بصورت پیـش فرض باید
جدیدترین و بهروزتــرین نسخه کاری را
دریافت کنــد.
حــال
فــرض کنـید هنگامی که این کاربر جدید
وارد سیستم میشود و کار خود را آغاز
میکند، شما چند روز به مسافرت بروید.
اگر
طی مسافرت شما او مثلا ۵ بار commit
کند،
هنگامی که شما باز میگردید، ورژن نسخه
کاریتان ۱۰ اســت، در صورتی که ورژن بهروز
واقع در مخــزن فایل اصلی ۱۵ میباشد و
ایــن یعنی اینکـه شما ۵ نسخه عقب هستید.
برای
اینکه ورژن نسخه کاری خود را بروز نمایید،
و در واقع آخرین تغییرات را دریــافـت
کنید، تنها لازم است که از دستور svn
update استفاده
کنید:
$
svn update
U
someGraphic.png U someOtherFile.php A index.php
Updated
to revision 15.
|
همــانـطور
که میبیـنـید در طی چـند روزی که مســافرت
بــودهاید فـایــلــهای someGraphic.png
و
someOtherFile.php
تغییر (Update)
یافتهاند و فایل
index.php به مخزن
فایل اضافه شده است، پس از اجرای این دستور
شما نیز دارای این فایلها شده و ورژن
نســخه کاریتان به ۱۵ ارتقاء مییابد.
ولی همیشه کار به این
خوبیها پیش نمیرود! ابتدا
اجازه دهــیـد مفـهوم چند اصطلاح را توضیح
دهم تا به جنبههای نه چندان دلچسب ماجرا
نیز برسیم!
نسخه
HEAD و
نسخه BASE
آخرین
نسخهای که در هر لحظه بر روی مخزن فــایل
اصلی قرار دارد نسخه HEAD
نامیده
میشود.
در
مثال قبل نسخه HEAD
بــرابـر
با ۱۵ بود.
در
مقابل به آخرین نسخهای که شما روی نسخه
کاری خود دارید نسخه BASE
میگوییم،
در مثال قـبل نسخه BASE
برابر
با ۱۰ بود.
بنابر
این هرگاه نسخه HEAD
با
BASE برابر
نبود یعنی اینکه از آخرین update
کـاربـر
تا بحال نسخه یا نسخ دیگری رو سرور قرار
گرفته و همین باعث قدیمی شدن نسخه BASE
شده
است.
نکتهای
که نباید فراموش کنید این است که commit
کردن
تغییرات خود به ســرور بــه ایــن معنا
نیست که شماره تغییرات نسخه کاری شما نیز
به شماره HEAD
تغییر
پیدا میکند!
بـعـد
از هــربار commit
تنها
آخرین تغییرات شما بر روی ســرور قرار
میگیرند، برای اینکه تغییــرات بقیه
را نیز دریافت کنید حتما باید دستور svn
update را
نیز اجراء کنید.
بیژن
هومند
PDF Version
[1]
http://subversion.tigris.org
|