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


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

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

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

   ورود کاربران




 


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

آشنایی با Subversion بخش پنجم

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

آشنایی با Subversion بخش پنجم

دستور SVN DIFF

اینهم از چاره کار! یکی از امکاناتی که این دستور به ما می‌دهد این است که تغییراتی را که در فایل خود داده‌ایم نسبت به آخرین نسخه‌ای که از مخــزن فــایـل دریافت کردیم، بــه مـا نشان دهد. فرض کنید محتوای فایل someOtherFile.php هنگامی که ما آنرا از سرور گرفتیم این بوده باشد:

<?PHP
print "hello hello hello";
?>


حال فرض کنید بعد از چند روز کار بر روی پروژه، ما این فایل را به چیزی شبیه زیر تغییر داده باشیم:

<?PHP
if ( $ILikeYou )
print "hello hello hello";
else
print "go to hell!";

for ($i=0; $i<2000; $i++)
echo "I should go to military service...";
?>


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

$ svn diff someOtherFile.php

Index: someOtherFile.php

=================================================================

--- someOtherFile.php (revision 11)
+++ someOtherFile.php (working copy)

;@@ -1,3 +1,9 @@
<?PHP

-print "hello hello hello";
+if ( $ILikeYou )
+ print "hello hello hello";
+else
+ print "go to hell!";
+

+for ($i=0; $i<2000; $i++)
+ echo "I should go to military service...";
?>


خروجی این دستور به قشنگی می‌تواند بیانـگــر تغییراتی کـه فـایــل someOtherFile.php نسبت به آخرین نسخه دانلود شده خود از مخزن فایل اصلی داشته اســت باشــد. خـــروجی این دستور تنــها خطوطی از فایل را که نسبت به نسخه اولیه تغییر یافته‌اند، بـه ما نمایش می‌دهد. علامت + در اول خطوط به معنای این است که آن خطوط نسبت به نسخه اولیه جــدیــد هستند و تازه اضافه شده‌اند و خطوط منفی ( - ) به این معنا می‌باشند که آن خطــها از آن مکان در فایــل حذف شده‌اند. به این ترتیب شما می‌توانید به راحتی تغییراتی را که انجام داده‌اید ببینید. لازم به ذکــر است که خروجی این دستور از استاندارد جهانی unified diff format پیروی می‌کند، خبـــر خوشحال کننده تر آنکه شما می‌توانید خروجی این دستور را به هر فرمت استانداردی که دوست دارید تبــدیل کنید. نـحـوه انجام اینکار از حوصله این مقال خارج است، ولیکن با مطالعه لینکهای داده شده در قسمت مراجع براحتی می‌توانید اینکار را انجام دهید.

دستور SVN REVERT

فرض کنید بعد از آنکه از دستور svn diff استفاده کردید، متـــوجه شدید کـــه از تغییرات انــجــام شده راضی نیستید و می‌خواهید که وضعیت فایل را به همان حالت گذشته برگردانید. برای اینکار تنها کافیست که از دستور زیر استفاده کنید:

$ svn revert someOtherFile.php
Reverted 'someOtherFile.php'


اکنون اگر حتی دستور svn status را نیز اجرا کنید، می‌بینید کــه دیگــر از آن علامت M در جلـــوی نــام فـایل شما خبری نیست، یعنی اینکه این فایل هیچ تغییری نسبت به آخرین نسخه دریافت شده از مخزن فایل نداشته است!


ذخیره تغییرات در سرور

هدف من در این مقاله کوتاه این است که تا جایی که می‌شود از تکرار تعاریف و تئوری گویی جلوگیری کنم و هر چیزی را درست در جای خود بگویم، البته قبول کنید کار بسیار سختیست و ۱۰۰٪ قابل انــجــام نیست. به همین خاطر از آوردن اسم اصطلاحات تا لحظه‌ای که به آنها برخورد نکــردیم جلوگیری کردم. یکی از این اصطلاحات همین ذخیره تغییرات انجام شده در نسخه کاری بر روی مخزن فایل می‌باشد، به این عمل commit کردن و یا checkin می‌نامند(در مقابل checkout که اگر خاطرتان باشد نسخه کاری را برای ما درست کرد). شمــا هنـــگامی کــه تغییرات خــــود را در فایلــها دادید، حال می‌خواهید آنها را در مخزن فایل اصلی قرار دهید تا بقیه از نتیجه تغییرات شما آگاه شوند. بـرای این کــار تنها کافیست که از دستور svn commit استفاده کنید. پس از اجرای این دستور ادیتور پیش فـــرض شما بــاز شــده و شما پس از وارد کردن توضیحات log خود، می‌توانید عملا ببینید که تغییرات در مخزن فایل اصلـــی ذخیره می‌شود. قطعا اگر توضیحاتتان طولانی نبود و می‌خواستید که آنرا به همراه دستور بنویسید، میشد مـانـند گــذشته از سوئیچ m- استفاده کرد. همینجا این نکته آویزه گوش کنید که هرگاه بخواهید تغییری در مخزن فـــایـــل اصلی بدهید، از شـما پیغام log پرسیده می‌شود. تغییراتی را که در نسخه کاری خود می‌دهید تا قبل از اینکه آن را commit کنید، توسط هیچ شخصی قــابــل مشــاهــده نیست، آنها فقط درون دستگاه شما هستند و هیچ ربطی به هیچ احدالناسی ندارند. ولی هنگامی که بخواهید آنها را checkin کنید دیگر قضیه فرق می‌کند.


$ svn commit -m 'I made some very important changes!'
Adding trunk/index.php
Sending trunk/someGraphic.png
Sending trunk/someOtherFile.php
Transmitting file data ...

Committed revision 11.


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


بیژن هومند

PDF Version

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

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