من (و شاید خود شما) همیشه در برنامه نویسی اینطور عمل میکنم که زمانی که تصمیم دارم تغییرات کلی در فایل ایجاد کنم که مطمئن نیستم نتیجه مطلوب خواهد داشت یا خیر، از فایل مورد نظر یک کپی به عنوان backup در همان مسیر قرار میدم و ابتدای نام فایل یک علامت under line (_) قرار میدم. سپس تغییرات را شروع میکنم. اگر تغییرات به نتیجه نرسید مجدداً آن فایل پشتیبان را جایگزین میکنم. اما همیشه داستان به همین سادگی نیست. گاهی فایلها زنجیروار به یکدیگر مرتبط هستند و تغییر کلی در یک فایل مستلزم تغییرات در فایلهای دیگر نیز هست. در این صورت اگر بعد از چند روز کار متوجه بشم که ایده اولیه و کلی من غلط بوده و کار از اصل اشکال داشته و تصمیم بگیرم که به همان سبک و روش قدیمی کار را ادامه دهم. اینجاست که پیدا کردن و اصلاح تغییرات و بازگرداندن تغییرات فایلها مثلا به چند روز قبل تقریباً غیر ممکن خواهد بود. همچنین همیشه با این قضیه مشکل داشتم که از کجا بدونم کدوم فایل رو مجدد ویرایش کردم و نیاز به آپ لود مجدد بر روی سایت داره و کدوم فایلها تغییری نکرده اند و نیاز به آپ لود مجدد ندارند. از طرف دیگه همیشه به این مسئله اعتقاد داشتم که انجام پروژه های برنامه نویسی به صورت گروهی تقریباً ناممکنه چون اعتقاد داشتم هماهنگی و گردآوری افراد درکنار یکدیگر کار مشکلیست. اما باز هم از اینکه پروژه های زیادی روی وب میدیدم که افراد زیادی در انجام اونها مشارکت دارند و جالب اینکه هر کدوم از این افراد در یک نقطه کره زمین زندگی میکنند، بیشتر متعجب میشدم.
پاسخ به سوالات و مشکلات مطرح شده در بالا مبحثی است که در ادامه به آن خواهیم پرداخت.
از وقتی که با مفهومی به نام "سیستم کنترل نسخه" و نرم افزار Subversion آشنا شدم به تمام سوالاتم پاسخ داده شد. و به قول آقای بیژن هومند در [این مقاله] : "بعد از یکبار نصب subversion و کار کردن با آن و عادت کردن به این محیط، مطمئن باشید که این سوال را بارها از خود خواهید پرسید که من تا بحال چگونه بدون آن کار میکردم؟!"
سیستم کنترل نسخه (Version Control System یا همون VCS) سیستمیه که بر روی فایلهای پروژه مدیریت میکنه و هرگونه تغییراتی در فایلهای پروژه اعم از ایجاد، حذف و یا تغییر رو به طور دقیق ثبت میکنه .
برنامه های زیادی در این زمینه وجود دارند که از معروف ترین اونها میشه به Subversion یا اختصاراً SVN محصول شرکت CollabNet اشاره کرد که از سایتش به صورت رایگان قابل دریافت و نصب است. subversion قابلیت نصب بر روی هر سیستمی که Apache بر روی آن نصب میگردد را داراست. در [اینجا] یک لیست کامل از اینگونه نرم افزارها رو میتونید مشاهده کنید.
این برنامه امکان مدیریت کامل بر روی فایلهای پروژه رو همراه با ثبت نام ویرایش کننده و تاریخ ویرایش رو فراهم می آوره و کلیه تغییرات رو یک بانک اطلاعاتی قوی ذخیره میکنه به طوری که در هر لحظه میشه پروژه رو به حالتی که مثلا چندین روز و یا سال پیش به اون شکل بوده درآورد و این خیلی فوق العادست! سایت wikipedia هم در مورد مقالات درست همین عمل رو انجام میده، یعنی درسته که مقالات به صورت آزاد قرار گرفته اند و هر شخصی میتونه اونها رو ویرایش کنه اما کلیه تغییرات ثبت میشه و لازم نیست نگران از بین رفتن اطلاعات بود. ضمناً اینکه از واژه "پروژه" استفاده میکنم ببه این دلیله که هیچ محدودیتی در نوع پروژه وجود نداره و حتی در مورد پروژه های صوتی، تصویری و... هم میشه از این سیستم استفاده کرد که احتمالاً تنها نرم افزارهای مروبطه فرق دارند.
بد نیست کمی در مورد روش کار اینگونه سیستمها صحبت کنم. در اغلب این سیستم ها که نرم افزار subversion هم از اون استفاده میکنه، بدین ترتیب عمل میشه که یک مخزن جهت نگهداری فایلهای پروژه درنظر گرفته میشه. این مخزن بر روی سرور اصلی قرار گرفته که در پروژه های گروهی هر شخص اطلاعات مخزن رو میخونه اصطلاحاً checkout میکنه. با اینکار یک نسخه از کلیه اطلاعات مخزن به سیستمش منتقل میشن و هر تغییری که دلش بخواد بر روی اون اطلاعات میده و سپس اونها رو به مخزن برمیگردونه اصطلاحاً commit میکنه. در صورتی که در این فاصله فایل توسط شخص دیگری تغییر کرده باشه به کاربر هشدار میده و کلاً درمورد تغییرات فایلها بسیار هوشمند عمل میکنه، مثلا میتونه متوجه بشه کاربران کدوم خطوط رو ویرایش کردند و تا حد امکان خودش فایلها رو ادغام میکنه ...
یکی از نرم افزارهایی که جهت کار با subversion محیط گرافیکی GUI بسیار خوب و قوی در اختیار کاربر قرار میده TortoiseSVN است که به صورت رایگان قابل دریافت و نصب است. این نرم افزار تنها تحت ویندوزه و برای لینوکس میشه از RapidSVN استفاده کرد. احتمالاً موقع نصب Visual Studio با گزینه Source Safe برخورد کردید، این نرم افزار هم جزو همین دسته است.
در پایان توجهتون رو به مقاله فارسی 9 قسمتی آقای "بیژن هومند" تحت عنوان "آشنایی با
Subversion" جلب میکنم:
[بخش نخست:
pdf
html] [بخش دوم:
pdf
html] [بخش سوم:
pdf
html] [بخش چهارم:
pdf
html] [بخش پنجم:
pdf
html] [بخش ششم:
pdf
html] [بخش هفتم:
pdf
html] [بخش هشتم:
pdf
html] [بخش پایانی:
pdf
html]
اگر فقط دو بخش اول این مقاله رو بخونید با پی بردن به قابلیت ها و مزایای subversion ، شک ندارم تا انتهای مقاله رو دنبال میکنید و با من هم عقیده میشید که وجود اون برای ما برنامه نویسا و الاخصوص PHP کاران مخصوصاً اگر کار گروهی باشه یک ضرورته.
+ پي نوشت: از اونجا که مطالب این مقاله نتایج جستجو و تحقیقات این بنده آماتور بوده، طبیعیه که اشکالاتی داشته باشه، از شما پیشکسوت عزیز خواهشمندم آنها را گوشزد بفرمائید.