السبت، 17 مارس 2012

SVN server الجزء 1 : طريقة استخدام الـ


فى البوست السابق تحدثت بشكل عام عن ما يسمى بـ version control systems وتكلمت عن هذه الانظمة ومميزاتها واعطيت مجموعة امثلة ووعدت بانني سأكتب عن احدهم فى بوست مستقل ، اليوم سوف اتحدث عن كيفية استخدام ال SVN سيرفر على جهازك الشخصي وهو احد اهم ال Version Control systems واسهلهم ايضا كما سنرى بعد قليل.
ملحوظة : سيكون هذا المقال عبارة عن مجموعة الأسئلة والأجوبة فهذه الطريقة مريحة اكثر للفهم
اذا لقد عرفنا مميزات الـ RCS فى السابق وانه مفيد جدا فى حالات المشاريع الجماعية والشركات ..
فهل مفيد لشخص يعمل بمفرده ؟
الاجابة وبكل ثقة نعم ، كثير منا يعمل منفردا سواء كان يعمل كـ freelancer او يجرب مشاريع  وهو يتعلم tools جديدة او له startup ويقوم بالعمل منفردا مؤقتا ، فكثير منا قابلته المشكل التي ذكرتها فى المقال السابق
ما هي مميزات الـ SVN server ؟
سهل الاستخدم ، عملي ، مجاني ، يسهل عمل المبرمج او المطور دون الحاجة الى قت لفهمه فهو مفهوم جدا كما سنشرحه الأن ، لا يطبق مبدأ الكل او لا شئ All or nothing :)
كيف يتم عمل setup للـ SVN عندك على جهازك؟
نبدأ بالجزء العملي الأن ، اولى الخطوات قم بتنزيل نسخة OneClick وهي نسخة قديمة بعض الشئ ولكنها سهلة ومرنة كبداية وسوف نستعملها اليوم بفرض أن معظم الناس تستخدم نظام ويندوز اما عن اللينكس سوف يتم تغطيته ايضا فى مقالات قادمة باذن الله ، بعد ان يكتمل التنزيل قم بالتثبيت كأي برنامج ولكن اتبع التعليمات التالية:
  1. في أول شاشة من برنامج التثبيت اختر أين سيتم تصبيت ملفات الخادم server .
  2. مكان تثبيت المخزن (repository)، مثلاً (d:\svn) وهو المكان الذي سيستقر به ملفات مشاريعك و ايضا الـ versions الخاصة بها.
  3. اسم المستخدم وكلمة السر لاستخدام  svn وهي افتراضيا ان لم تضعهم تستخدم اسم المستخدم وكلمة السر الخاصة بالويندوز.
  4. مشروع افتراضي (Project)، اختر تجاوز هذه الخطوة (skip this step) ، ثم next
  5. مكان تثبيت TortoiseSVN وهي مجموعة الأدوات للتعامل مع SVN من خلال واجهة الويندوز أو سطر الأوامر ، اختر اي مكان مناسب وليكن فى C://svn
  6. أخيراً Restart عشان تقدر تستعمله .. وده انت هتنفذه وترجع تاني هنا عشن نجرب مع بعض  باقي التعليمات عمليا وفي وقتهاعلى طول .. منتظرك ;)
بعد أن انتهيت من التسطيب على الويندوز لاحظ معي جيدا ان ال shortcut menu أصبحت كالتالى (عند الضغط بالزر الايمن للماوس فى أي مكان) .. إذا كانت لديك أصبحت تحتوي على العنصرين الجديدين .. مبروك لقد تم التثبيت بنجاح :)
بعض الكلمات المستخدمة فى التعامل مع الـ SVN لابد من التعامل معها :
  • Import : وهي تعني اضافة الى المخزن repository .
  • Trunk : هو جزع المشروع او النسخة الاساسية من المشروع
  • Repository : المخزن او امكن الذي يكون به ال versions المختلفة من المشروع ويمكن التحكم بها عن طريق ال SVN سيرفر .
  • Check-out : هذا يعنى أخذ نسخة من المشروع او جزء منه خارج من النسخة الاصلية المخزمة فى ال repository .
  • merge : عملية الدمج بين نسختين من المشروع .
  • patch : وهي ميزة غير عادية تقدمها هذه الانظمة اي ان احد افراد فريقك قد يواجه مشكلة فى نسخة المشروع التي معه ويخبرك تستطيع انت عمل patch فيه حل المشكلة وارسال ال patch file فيقوم هو بعمل apply patch فيتم حل المشكلة بدون نقل الكود بينكم :)
  • branches : وهي تعتبر بمثابة ال versions ولكن بتعبير الشجر فهي فرع من الجزع الرئيسي Trunk .
كيفية التعامل مع السيرفر وارسال نسخة المشروع الرئيسية Trunk ؟؟
سوف افترض اننا نتعامل مع مشروع ويب بلغة php وانا بالطبع اضع المشروع بالكامل فى مجلد Folder يحتوي كل ملفاته واما عن مكان المخزن او الـ repository والذي سوف يحتوي على النسخة الرئيسية من المشروع لاحظ انه بامكانك انت تغيير هذه الاماكن طبقها انت على حسب العناوين عندك وفي الحقيقة المفترض فى هذا المكان يتم وضع العنوان عموما والذي من الممكن ان يكون web server.
سوف نرجع لنقطة الصفر ، الان ال repository فارغ تماما وتريد اضافة مشروع اليه لكي يكون هذا الجزء المضاف هو النسخة الرئيسية من المشروع trunk .. إذا نذهب الى الفولدر الخاص بالمشروع فى مكانه ونضغط عليه right click كما هو ظاهر بالصورة :
سوف يظهر لنا قائمة كما هو موضح نختار منها Import الموضحة باللون الازرق لاخذ نسخة منها الى مكان المخزن وسوف تظهر لنا النافذة التالية :
لاحظ جيدا استخدام file:/// وذلك لانه على جهازك الشخصي انما حين استخدام web server سيتم استبدالها ب http:// ولابد مع اي عملية يتم تنفيذها ارفاق رسالة تدل عما فعلته انت بها كما انا موضح first import ثم نضغط ok فيتم عملية نقل الملفات الى مكان المخزن ولكنها لم تتم كليا وفى انتظار أمر هام لاتمام المهمة سنراه بعد الخطوة التالية :
الان وصل الامر بإضافة هذا الفولدر وما يحتويه من ملفات لسيرفر  الـ SVN ولكن الامر قيد التنفيذ فنرى الملفات والفولدرات تحول ايقوناتها الى الشكل التالي :
مما يستدعي اتمام الامر بعمل commit للتغييرات وهي اضافة مشروع للمخزن ويتم عمله بالضغط على الفولدر الذي يحتوي على المشروع الذي حدث له import ثم SVN commit لتظهر لنا النافذة التالية ، يعرض بها الملفات التي سيتم عمل commit لها وهي ملفات المشروع بالكامل مع اعطاء ايضا رسالة بما فعلت :
لاحظ انه بامكانك اختيار بعض الملفات وترك الأخر كما تحب :) والان نفتح فولدر المشروع فى ال repository ونراه كل فولدر او ملف فيه يحمل علامة صح خضراء كما نرى دليل على انتماء هذا لمجلد لى revision control system وهو SVN server او ال Supversion server :
مبروك لقد أنشأت Trunk لمشروعك ويمكنك الان استخدامه وعمل Checkout كما تحب فى اي مكان :)
إن شاء الله فى الجزء القادم نتناقش حول كيفية سحب نسخة لعمل version من المشروع checkout وكيفية التعديل في المشروع وتطبيق التعديل على النسخة الرئيسية وعمل merge وكيفية استرجاع اخر فيرجن بسهولة وعملية الاسترجاع لكل ال history الخاص بالمشروع كاملا وايضا سيكون هناك بعض التلميحات على حالات اخرى فى الاستخدام وانتظر أرائكم واستفساراتكم حول الموضوع .. أراكم فى الجزء الثاني من الموضوع ان شاء الله :)
المصدر:http://www.medhatdawoud.com/svn-server-%D8%A7%D9%84%D8%AC%D8%B2%D8%A1-1-%D8%B7%D8%B1%D9%8A%D9%82%D8%A9-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D9%80/

Revision Control Systems مدخل إلى


انهاردة هاتكلم باختصار عن حاجة مهمة جدا قد يغفل عنها البعض ولكنها فى غاية الاهمية ، كتير مننا بيحاول انه يقوم بعمل مشروع مع اصحابه سواء فى الكلية او بره وبيكون فيه مشاكل كتير موجودة غالبا بسبب ان واحد فلاشته عليها فيروسات مثلا او انه نسي يجيب الجزء اللى كان بيكود فيه او ان المشروع كله بالكامل كان عند واحد وهارده اتفرمط قبل المناقشة بيوم :D كل دي مشاكل حقيقية واعرف ناس كتير حصل معاهم اخر موقف ده ، طيب تعالوا نتخيل موضوعين ..الأول ان فيه فريق عمل شغال فى مشروع والفريق بيتكون من 100 developers ويوميا طبعا المشروع بيتوزع اجزائه كل واحد فى اللى شغل فيه وفى نهاية اليوم بيتجمع المشروع كله تاني .. اعتقد ان الفريق ده محتاج فريق تاني معاه كل شغله تجميع المشروع وتركيبه يوميا … اما الثاني انه كتير مننا developers بيحبوا يجربوا يعدلوا جزئية معينة فى مشروع معين او يعنى يعمل new version وممكن لو عمل حاجة غلط يبوظ المشروع كله فبيضطر انه ياخد نسخة من المشروع ويسميها اسم تاني ويشتغل عليها واحيانا بتحصل لغبطة فى الطريقة دي بين الفيرجنز الكتير لانه مش دايما بيطابق كل تعديل فى اخر فيرجن بالفيرجن الرئيسي … طيب كل دي مشاكل حلها انهاردة هاطرحه بشكل عام فى استخدام Revision Control Systems اللى بيستخدمها شركات كتير جدا لتنظيم العملية الى طرحتها دلوقت بسهولة ، تعالوا بقى نتعرف عليه اكتر :)
ما هي انظمة التحكم فى الاصدارات (Revision Control Systems) ؟
أولا بيطلق عليها ايضا version control systems وهي ببساطة أنظمة صُممت خصيصا لحل المشاكل التى تم طرحها سالفا بسهولة وتمكين المطور من عمل اكثر من version لمشاريعه وامكانية دمجها او التراجع لفيرجن اقدم ومن الاهداف الاساسية تمكين التيم ليدر من مراجعة الكود كله والتعديل عليه او حتى مسحه وسهولة ضم كل الملفات الخاصة بالمشروع من كل مكان بسهولة حتى لو كل شخص فى المشروع من قارة مختلفة فالجميع يتعامل مع server عليه الملفات وسوف نرى كيف يتم التعامل مع هذا ال server ان شاء الله.
كيف تتم العملية :
فى البداية يتم عمل سحب لل source code الخاص بالمشروع عندك عن طريق اوامر تختلف من RCS الى اخر وتسمى هذه العملية بعمل check out ثم بعد ذلك تقوم بتعديل الاجزاء اللتي تعمل بها وفى النهاية يتم عمل commit للتغيرات التي حدثت فيكون اخر تعديل له version تختلف عن التي تسبقه وهناك فى ال server امكانية لعرض ال history واسترجاع اي فيرجن تريده مهما كان ومعرفه من اضاف التعديل ويمكن معرفة ما تم اضافته عن طريق عمل compare changes ثم يتم تخزين اخر فيرجن.
لاحظ معي انه يمكن ان يكون هناك اثنين يعدلان فى نفس الملف وفي هذه الحالة يحدث collision ولكن ال RCS ينبهك انه هنك نسخة تم تعديلها بخلاف التي تمتلكها الان ، فيمكنك من رؤية ما عدله زميلك وعمل merge لتغييراتك وتغييراته ثم عمل commit فى النهاية.
امثلة على ال RCS ومتي يتم استخدامها:
لاحظ ان كل RCS يدعم مجموعة من اللغات معينة تمكنك من استخدامه بكفاءة فكل شخص يستطيع اختيار الانسب له حسب عمله ولاحظ ايضا ان منها ما هو مجاني ومنها ما هو غير مجاني وسوف اعرض بعضها الان واضع بعض الروابط لتتمكن من البحث فيها اكثر كما تحب :)
وهي خاصة بمحبي السي شارب
وهي مخصصة لكل من مطوري البايثون والسي
وهي لمطوري السي و كتبها linus Travalds :)
وغالبية المشاريع ال open source تفضل العمل به وهو سهل الاستخدام ومجاني
وغيرهم الكثير والكثير تستطيع البحث بنفسك وسوف تعرف الكتير جدا عن هذه الانظمة الممتازة ، ان شاء الله فى البوست القادم سوف اتناول احدهم بالشرح كيفية استخدامه لو كتب الله لنا عُمر :)
مصادر و روابط مساعدة لتقرأ أكثر: