منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : كيفية استخدام نظام ال Subversion من الفيجوال ستوديو مباشرة لتنسيق العمل الجماعي
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
كاتب الموضوع : Boutemine Oualid

السلام عليكم و رحمة الله و بركاته
في هذه الجولة السريعة ، سنتعلم إن شاء الله تعالى استعمال نظام الSubversion لتنسيق العمل الجماعي من الفيجوال ستوديو مباشرة و سيكون العمل على هذا النظام إلزامي للجميع لتعم الفائدة و لنكتسب خبرة في العمل الجماعي على المشاريع المفتوحة المصدر لاحقا.
تعريف الSubversion:
هو نظام لمتابعة و تنسيق العمل الجماعي على المشاريع البرمجية و غيرها
هذا النظام مبني على هندسة الخادم و العميل
الخادم يقوم بعمل دورين:
1. استضافة ملفات المشروع و التحديثات الدورية التي يقوم أعضاء الفريق برفعها إلى السرفر مع التعليقات و التواريخ و جميع المعلومات اللازمة (يمكنك حتى أن تعرف من قام بكتابة سطر معين في ملف و متى)، المكان الذي تخزن فيه على السرفر يسمى Repository
ال Repository يملك مدير و مجموعة من الأعضاء مع صلاحيات مختلفة (قراءة، تعديل، تنزيل الملفات، رفع التحديثات، ....) و المدير هو الذي يقوم بتحديد أعضاء الفريق و صلاحياتهم.
ان كنت تريد أن تملك Repository خاص بك و مجانا يمكنك أن تحصل على مساحة 1.5 جيجا مجانا على الخادم http://xp-dev.com/ كما يمكنك البحث عن خوادم مجانية أخرى لل Repositories
اذن بالمختصر المفيد، ال Repository هو المساحة المشتركة التي تقوم باستظافة جميع ملفات المشروع مع جميع المعطيات الخاصة بالفريق.
2. التنسيق بين أعضاء الفريق بتحرير تقارير و اضافة نظام لتعقب الشوائب و لائحة بريدية اضافة إلى الخدمات القاعدية الأخرى مثل معلومات التعديلات الأخيرة و متى و من طرف من و كيف...
العميل:
العميل عبارة عن برنامج يدعم نظام ال Subversion يقوم بالدخول إلى ال Repository و يقرأ محتوياته.
مهام العميل:
يقوم العميل ب:
- تنزيل ملفات المشروع كلها (ان استلزم الأمر) و حسب صلاحيات المستعمل في ال Repository . عادة ما يتم تنزيل هذه الملفات إلى مجلد ثابت عند المستعمل يسمى بال Working Copy Space حيث يحتوي هذا المجلد على ملفات المشروع و الملفات الأخرى الخاصة بالمعطيات التي يقوم العميل بعرضها.
- البحث عن نسخ الملفات الجديدة التي قام الأعضاء برفعها إلى الRepository و تنزيلها إلى ال Working Copy Space .
- عرض لائحة الملفات (الخاصة بالمشروع فقط مثل ملفات الفئات و غيرها دون الملفات التي يستعملها نظام ال SVN لتخزين الصلاحيات و المعطيات الأخرى) إضافة إلى معطيات عنها مثل آخر عضو قام بتحديثها و متى تم ذلك إضافة إلى التعليق الذي أضافه و أيضا التنقل بين جميع الVersions الخاصة بملف معين و عرضه (عادة في ال IDE).
عادة ما يسمى الجزء من البرنامج العميل الذي يقوم بهذا العمل بال Repository Explorer
يقوم ال Repository Explorer بعرض جميع المجلدات و ملفات المشروع و المعلومات التي تحدثنا عنها كما و يمكن لمدير ال Repository من القيام بعمليات التعديل اليدوية مثل ال الحذف و غيرها من العمليات التي تتطلب صلاحيات المدير.
- تعيين الملفات التي قمت بتعديلها في ال Working Copy Space و اعطائك الصلاحية لرفعها إلى ال Repository مع تعليق بسيط على عملية التعديل (اختياري).
الجزئ الذي يقوم بهذا العمل يسمى عادة بال Working Space Explorer.
- عرض لائحة بالملفات التي قام الأعضاء بتحديثها و التعليقات المرسلة إضافة إلى التواريخ.
لننتقل الآن إلى التطبيق
عادة ما تمتلك بيئة التطوير جميع خصائص ال Client التي تحدثنا عنها سابقا للعمل على ال Repository لكن الفيجوال ستوديو لا يملك نظام لاستعمال ال Subversion مباشرة و لذلك علينا أولا تنزيل إضافة add-in له لكي نستفيد من قدرات هذا النظام.
ملاحظة: يوجد العديد من البرامج التي يمكن استخدامها و لعل أشهرها على نظام التشغيل Windows هو ال Tortoise إلا أنني هنا اخترت اضافة للفيجوال ستوديو لجعل بيئة التطوير الأساس لعمل كل شيء
- أولا نقوم بتنزيل الاضافة ankhSVN و هي اضافة مجانية و مفتوحة المصدر قامت بتطويرها شركة ال COLLABNET -التي يعمل عندها مؤلف الكتاب الأول الذي سنقوم بترجمته ان شاء الله-
http://ankhsvn.open.collab.net/servl...ss?pageID=3794
و اختر النسخة 2 التي تدعم الفيجوال ستوديو 2005 و 2008
- بعد استكمال التنزيل قم بفتح الملف و ابدأ عملية التنصيب و لكن عليك أولا أن تغلق جميع نوافذ ال Visual Studio المفتوحة حتى يتمكن ملف التسطيب من العمل بشكل طبيعي.
- الآن نبدأ استكشاف الاضافة، عند فتحك لل Visual Studio للمرة الأولى يعلمك بأن الاضافة مثبة بصورة صحيحة بعرضها في لائحة الاضافة في ال Splash Screen

استكشاف الاضافة ankhSVN الخاصة بالفيجوال ستوديو
1. ال Repository Explorer
يمكن الوصول إلى ال Repository Explorer باختيار القائمة View ثم ال Repository Explorer (لاحظ الصورة)


الآن سيقوم الفيجوال ستوديو بعرض نافذة ال Repository Explorer (لاحظ الصورة أدناه)

أولا سنضيف إلى قائمة ال Repositories عنوان ال Repository الذي نريد استكشافه من زر الاضافة في شريط الأدوات الخاص بال Repository Explorer

سيطلب منك الفيجوال ستوديو عنوان ال URL الخاص بال Repository عليك بكتابته مثل أي عنوان URL يعني (البروتوكول و العنوان) كما يمكنك الفيجوال ستوديو أيضا من اختيار عنوان قمت بكتابته سابقا حيث يتذكر كل العناوين التي كتبتها
اذا أردت التجريب، فيمكنك الحصول على حساب مجاني على أحد المواقع التالية
http://xp-dev.com/ المفضل لدي
http://www.codespaces.com/
https://opensvn.csie.org/
http://unfuddle.com/
http://www.assembla.com/
http://www.bitbucket.org/
http://sshcontrol.com/
http://www.origo.ethz.ch/

اذا كان ال Repository غير متاح للجمهور (non public) فسيطلب منك الفيجوال ستوديو معلومات الدخول إلى ال Repository (لاحظ الصورة)


و اذا كان عكس ذلك فيمكنك التجول داخل ال Repository و عمل ما تشاء حسب الصلاحيات التي قام المدير باعطائها للزوار
بعدها يمكننا التجول بين ثنايا المشروع (أو المشاريع) التي يحتويها ال Repository و تنزيل ما تشاء (حسب الصلاحيات المتاحة لك) كما يمكنك مشاهدة خصائص الملفات و تنزيلها إلى ال Working Copy Space كما و يمكنك فتحها مباشرة داخل الفيجوال ستوديو ان كان يدعم نوع الملف أو مع برنامج خارجي، كل ذالك بواسطة القائمة المنسدلة التي تظهر بالضغط بالزر الأيمن للماويس على الملف المعروض في الجهة اليسرى من نافذة ال Repository Explorer


نبقى دائما مع ال Repository Explorer و هذه المرة مع شريط الأدوات الخاص به
في أعلى النافذة
شريط الأدوات يتغير حسب العنصر المحدد (ملف أو مجلد)
في حالة الجلد ستظهر لك هذا الشريط

اذا كان العنصر المحدد في ال Repository Explorer عبارة عن ملف سيظهر لك هذا الشريط
(نفس الشريط السابق لكن مع اختلاف بسيط)
كاتب المشاركة : Boutemine Oualid

الآن ننتقل إلى القوائم المنسدلة
القائمة الأولى هي التي تظهر عند اختيار مجلد


العنصر Copy To Working Space يمكنك من تنزيل جميع محتويات المجلد الموجود في ال Repository إلى مجلد على جهازك يسمى Working Copy و هو المكان الذي تعمل عليه عندما لا تكون متصلا بالخادم.
أما فيما يخص العنصر View History فيقوم بعرض نافذة ال History الخاصة بالعنصر المحدد (سواء كان مجلد أو ملف) التي تتولى عرض التحديثات على ملفات المجلد (أو الملف) مثل النسخ الجديدة، التعليقات التي كتبها بقية الأعضاء و بعض المشكال الأخرى


يمكنك تحديث المعلومات المعروضة في هذه النافذة بالضغط على الزر Fetch All

في حالة اختيارك لملف فستظهر لك هذه النافذة المنسدلة

الشيء الجديد الوحيد فيها هو العنصر Annotate، هذا الزر يقوم بتنزيل أحدث نسخة من الملف المحدد و يقوم بعرضه مع كل التعليقات الخاصة بالتعديلات التي قام بها الأعضاء (مثلا السطر الفلاني قام بكتابته العضو الفلاني في الساعة الفلانية و هاهو التعليق الذي كتبه!)
انظر إلى الصورة


في النافذة السابقة، تم تنزيل جميع نسخ الملف الأقدم فالأحدث
سيفتح الملف في ال code editor

في الحاشية التي تظهر على اليسار، تجد اسم العضو المسؤول عن كتابة السطر و وقت كتابته و عند نقل مؤشر الفأرة على أي اسم، سيظهر لك Tool tip فيه التعليق الذي قام بكتابته العضو .
عند الضغط بالزر الأيسر للفأرة على أي عنصر، فستحدد جميع الأسطر التي تم تعديلها في نفس الوقت من طرف العضو
هناك أيضا قائمة منسدلة هامة جدا تمكنك من مقارنة التغييرات بين مختلف النسخ و الانتقال إلى نسخة أقدم
اضغط بزر الفأرة الأيمن على أي عنصر لتنبثق القائمة

العنصر الأول تكلمنا عنه سابقا و قلنا بأنه يقوم بعرض ال History الخاصة بهذا الملف.
الزر Show Changes يقوم بعرض أحدث نسختين و يمكنك من مقارنتهما عبر نافذة المقارنة

أما الزر الأخير Annotate فيعرض لك النسخة الأصلية عند قيام الكاتب (المحدد في الهامش) برفعها إلى السرفر أو بالأحرى تمكنك من التنقل بين النسخ.
أنهينا ال Repository Explorer، ننتقل إلى شيء آخر
كاتب المشاركة : Boutemine Oualid

نافذة ال Working Copy Explorer
هذه النافذة تمكنك من عرض المجلدات التي قمت بتحديدها على أنها Working Copy و محتوياتها
لنلق نظرة على هذه الصورة



كما تلاحظ، هناك علامة صح أمام المجلد المستعمل ك Woking Copy
في الجهة المقابلة، يمكنك رؤية علامة صح التي تظهر على الملفات ، و تعني ببساطة أن الملفات لا تحتوي على تعديلات قمت باضافتها أما المربع الأحمر فيمكنك من معرفة الملفات التي تحتوي على تعديلات و التي يجب رفعها إلى ال Repository في التحديث القادم.
لنعرج على شريط الأدوات الخاص بهذه النافذة


ننتقل الآن إلى القوائم المنسدلة الخاصة بهذه النافذة
القائمة الأولى هي الخاصة بالمجلد

عناصر هذه القائمة:
Open: تقوم بعرض محتويات المجلد في الجهة اليمنى
Export: القيام بعملية نسخ للملفات الموجودة في الWorking Copy إلى مجلد آخر
View History: تمكنك من مشاهدة الHistory الخاصة بهذا المجلد
Subversion: هذه القائمة هي الأهم لأنها تمكنك من نقل التعديلات التي قمت بها إلى ال Repository و هي تتكون من
- Update To Specific Version: يمكنك هذا ال زر من تحديث ال Working Copy إلى ال Version التي تريدها.
- Unified Diff: لا أعرف دورها!!
- Subversion Properties: خصائص ال Wokring Copy
- Switch: تمكنك من تحديث محتويات ال Working Copy إلى النسخة التي تريد (الأحدث، حسب التاريخ، حسب ال VERSION...)

- Merge: دمج التحديثات مع النسخ الأقدم
- CleanUp: لا أدري أيضا ما دورها
- Refresh Status: واضحة!!
- Open Folder in Working Copy Explorer: تقوم بعرض محتويات المجلد في ال Working Copy Explorer
- Open Folder in Repository Explorer: تقوم بفتح ال Repository Explorer و تنقلك مباشرة إلى المجلد الموجود على الخادم الذي تستعمله لتحديث ال Wokring Copy
properties: عرض خصائص ال Working Space في نافذة الخصائص
بالنسبة للملفات
يجب التنبيه إلى أن عناصر القائمة تختلف حسب حالة الملف، فان كان الملف يحتوي على تعديلات فسترى في القائمة خيارات لرفع التحديثات إلى السرفر

open: فتح الملف في الفيجوال ستوديو.
export: نسخ الملف إلى مكان آخر على القرص الصلب.
Update to Latest Version: تمكنك من تحديث الملف بأحدث نسخة موجودة في الخادم.
Commit: تمكنك من رفع الملف الذي قمت بتعديله إلى السيرفر
View History: عرض الHistory الخاصة بالملف
Revert: تراجع إلى النسخة الأصلية
Subversion: و تحتوي على :

معظم العناصر قمنا بشرحها في القائمة المنسدلة الخاصة بالمجلدات
أما الجديد فهو:
Lock: تمكنك من تجميد التحديثات على ملف معين بحيث لا يستطيع أي عضو أن يقوم برفع التحديثات التي أضافها على الملف إلى ال Repository
Compare: تمكنك من المقارنة بين النسخة الأصلية و النسخة الجديدة التي عدلت فيها
Create Patch: تمكنك من تخزين Patch و هو عبارة عن ملف يحتوي على التعليمات التي على البرنامج أن يقوم بها عند القيام بعملية تحديث الملف من ال Repository أو رفعه إلى الRepository
Remove From Change List: أما هذه فتقوم بحذف الملف من لائحة الملفات المعنية بعمليات التحديث (سواءا برفع الملف إلى ال Repository أو تنزيله منه)
كاتب المشاركة : Boutemine Oualid

الآن إلى النافذة الأخيرة و هي نافذة التغييرات التي قمت بها
Pending Changes
لعرضها عليك بالذهاب إلى القائمة View ثم Pending Changes

هذه النافذة تعرض الملفات التي تحتوي على تعديلات قمت بها لتمكنك من رفعها إلى الRepository دفعة واحدة كما و تنبهك في حالة حصول خلط Conflicts بين ملفين يمثلان نفس الملف على Repository و لكن كل منهما له محتوى مختلف عن الآخر.
كما و تمكنك أيضا من عرض التعليقات و غيرها من المعلومات المفيدة التي تعرفنا عليها سابقا

أشرطة الأدوات التي توفرها الاضافة ankhSVN
هناك شريطين أساسيين يمكن عرضهما بالذهاب إلى القائمة View ثم Toolbars
الشريطين هما
Source Control و Source Control-Subversion

فتح مشاريع مباشرة من ال Repository أو اضافتها إلى Solution مفتوح مسبقا
يمكنك فتح مشاريع في الفيجوال ستوديو مباشرة من ال Repository أو اضافتها إلى Solution مفتوحة في الفيجوال ستوديو
اذهب إلى القائمة File ثم Subversion ثم تجد القائمة المنبثقة التالية

بعد اختيار العنصر Open أو Add، ستظهر لك النافذة التالية و التي من خلالها يمكنك أن تبحث عن ملف ال sln أو الcsproject أو ال vbproject لفتح المشروع أو ال Solution


بعد فتحها، سيطلب منك الفيجوال ستوديو المجلد الذي تريد أن توضع فيه ملفات المشروع بعد تنزيلها بحيث سيكون هذا المجلد Working Copy
بعدها يمكنك مشاهدة الملفات في ال Solution Explorer كما لو كنت تشاهدها في ال Working Copy Explorer و يمكنك أيضا استعمال القوائم المنسدلة للقيام بالمهام التي تعرفنا عليها سابقا

يبقى شيء وحيد و هو التحكم في خصائص ال Subversion في الفيجوال ستوديو
لعلك استعملت من قبل نافذة الخيارات Tools->Options

يمكنك منها أن تعدل بعض الخيارات :
- اختيار الاضافة التي تريد ان تستعملها في حالة وجود أكثر من واحدة
- ضبط خيارات ال Proxy ان أردت التخفي وراء Proxy
- حذف ال Cache التي يتسخدمها النظام لتذكر معلومات الدخول (الاسم و كلمة السر)
- اختيار البرنامج الخارجي للتعامل مع ال Subversion (خارج الفيجوال ستوديو مثل ال TortoiseSVN)


و في الختام تقبلوا تحيات الوليد و ان شاء الله عقبال ما نشوف أول مشروع جماعي برمجي باسم المنتدى و باستعمال هذه الطريقة الاحترافية المستعملة بكثرة في الشركات و المشاريع المفتوحة المصدر