یکی از بزرگترین دغدغههای هر مدیر تیم توسعه نرمافزاری مدیریت کدهای پروژه است تا خطاها و یا خرابکاریهای یک برنامهنویس منجر به از دست رفتن اطلاعات و کدها در پروژه نشود، تا تغییرات همزمان برنامهنویسان روی کدهای پروژه عملکرد منطقی برنامه را با مشکل مواجه نکند و در هر لحظه بتوان به هر نسخه قدیمی از برنامه بازگشت. برنامههای کنترل پروژه برای کمک به مدیران پروژه ساخته شدهاند تا این دغدغه مدیران را مرتفع کنند.
از بین برنامههای کنترل پروژه برنامه SVN پر استفادهترین و مجبوبترین برنامه است. درصد بالایی از برنامههای تجاری با کمک این برنامه توسعه داده میشوند. SVN مخفف Subversion Version Control یک ابزار کنترل پروژه است که توسط بنیاد آپاچی و با مجوز آپاچی توسعه پیدا میکند. شرکت و سازمانهایی مانند مانند بنیاد نرمافزار آپاچی، سورسفورج، و گوگلکد از اسویان به عنوان زیرساخت برنامههای کنترل پروژه و نسخهبندیشان استفاده میکنند.
SVN وظایف زیر را در فرایند توسعه پروژه به عهده دارد:
- ذخیره همه نسخههای فایل و دایرکتوری در طول دوره انجام پروژه
- ارائه آمار و گزارش عملکرد
- برگشت هر فایل یا کل پروژه به نسخههای پیشین
- مقایسه و دیف بین نسخههای قبلی و فعلی فایلها و در بازههای زمانی متفاوت
- چنانچه کاربران بصورت همزمان یک فایل را ویرایش کنند تغییرات را هماهنگ میکند که تغییرات یک کاربر باعث حذف تغییرات کاربر دیگر نشود.
راهنمای نصب و استفاده از subversion در سنتاواس:
ابتدا بستههای مورد نیاز را نصب میکنیم.
yum install mod_dav_svn subversion
فایل تنظیمات subversion را به شکل زیر ویرایش میکنیم.
nano /etc/httpd/conf.d/subversion.conf LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so <Location /test> DAV svn SVNParentPath /var/www/test AuthType Basic AuthName "Test Subversion repositories" AuthUserFile /etc/svnpassword Require valid-user </Location>
یک مخزن با نام test میسازیم مسیر مخزن را /var/www/test قرار میدهیم و نام مخزن را تعریف میکنیم و در نهایت نوع اعتبار سنجی محل ذخیره شدن اطلاعات و پسورد کاربران را مشخص میکنیم.
htpasswd -cm /etc/svnpassword svnuser1 htpasswd -m /etc/svnpassword svnuser2
دستور بالا کاربر svnuser1 را ایجاد میکند و پسورد کاربر را در فایل مشخص شده ذخیره میکند.
پوشهای که فایلهای مخزن در آن ذخیره خواهد شد را میسازیم.
mkdir /var/www/test
سپس در دایرکتوری مخزن را میسازیم.
cd /var/www/test svnadmin create repo
این دستور تعدادی فایل و دایرکتوری در مخزن ایجاد میکند که لیست این فایلها به این شرح است. دایرکتوری conf شامل فایلهای پیکربندی دایرکتوری db شامل فایلهای بانک اطلاعاتی BDB دایرکتوری hooks شامل اسکریپتهایی که قبل یا بعد از ارسال توسط کاربر اجرا میشوند.
مجوز کاربر آپاچی را به مخزن میدهیم.
chown -R apache.apache repo
و در نهایت آپاچی را ریاستارت میکنیم.
service httpd restart
در مرورگر آدرس زیر را باز کنید.
http://localhost/test/repo
بعد از وارد کردن نام کاربری و کلمه عبوری که در هنگام ساخت کاربر وارد کردهاید عبارت repo – Revision 0: / را مشاهده خواهید کرد که نشان دهنده این است که مخزن به درستی تنظیم شده است ولی هنوز کامیت نداریم.
راهنمای subversion پیشنهاد میکند بهتر است مخزن شامل دایرکتوریهای trunk و branches و tags باشد. بنابراین این دایرکتوریها را در مخزن ایجاد میکنیم. ابتدا یک تمپلیت میسازیم وسپس این تمپلیت را به مخزن ایمپورت میکنیم.
mkdir -p /home/user/svn-structure-template/{trunk,branches,tags} svn import -m 'comment' /home/user/svn-structure-template/ http://localhost/test/repo/
مجددا آدرس زیر را باز کنید و تغییرات را مشاهده کنید. شما اولین فایلها را به مخزن کامیت کردید.
http://localhost/test/repo
کلاینتها: کلاینتها با دستورات زیر میتوانند با مخزن کار کنند.
مشاهده فایلها در مخزن سرور
svn list http://localhost/test/repo/trunk
checkout کردن مخزن با دستور زیر انجام میشود. (دریافت یک نسخه از مخزن روی سیستم محلی)
svn checkout http://localhost/test/repo
افزودن فایل به مخزن
svn add file
وضعیت فایلهای مخزن را نشان میدهد.
svn status
تغییرات اعمال شده بروی یک فایل بوسیله کاربر را نشان میهد.
svn diff file
تغییرات را به یک نسخه قبل برمیگرداند.
svn revert file
و اما برای commit و یا checkin کردن از دستور زیر استفاده میکنیم.
svn commit -m 'changes!'