الشبكة العربية لمطوري الألعاب

خبير مدير وسام البهنسي مشاركة 11

شكراً يا شباب. يبدو أن هناك إجماع على SVN. تذكروا أن أناساً غير تقنيين سيتعاملون معه أيضاً (الرسامين) لذلك يجب أن يكون التعامل معه سهل وبسيط. لذا فإن كانت هناك بدائل أخرى بسيطة فلا مانع منها.
 
بالنسبة للاستضافة، فموقع unfuddle.com مجاني لشخصين فقط، وهو أقل بكثير من عدد الأعضاء الذين نتمنى مشاركتهم 😄
 
أنا أطلع الآن على موقع assembla.com ويبدو أنه جذاب وقوي كما ذكر أخونا حسن. لكن هل يقدم إمكانية أرشفة تاريخ الملفات؟ يعني في أي لحظة أستطيع الرجوع بملف ما إلى نسخة سابقة من نسخه؟
 
بقي موقع كود بليكس لمايكروسوفت، وأتوقع (أنا فقط أتوقع) أنه أيضاً مصاب بمرض الامتناع عن تخديم سوريا. هل يستطيع أحد الشباب من سوريا تجريبه لنا؟

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

خبير  أحمد عزالدين مشاركة 12

السلام عليكم

لقد سمعت من أحد أصدقائي أن موقع sourceforge وبالرغم من أنه بصفة عامة يقوم بمنع بعض الدول من الخدمة
الا أنه قد تراجع عن ذلك وعلى كل مدير مشروع أن يحدد الدول التي يريد السماح لها لرؤية المشروع
واعتقد أنه يقوم بشكل تلقائي بمنع الدول وبالتالي فيجب على مدير المشروع ان يعدل ذلك
وهذا رابط أرسله أحد أصدقائي
http://sourceforge.net/blog/some-good-news-sourceforge-removes-blanket-blocking/

والسلام عليكم

أحمد عزالدين
طالب دراسات عليا
جامعة كالجري

موهوب  عبدالله الشمّري مشاركة 13

لم أعلم أن sourceforge محجوب أيضاً ..

نسيت شيء في ردي السابق ،

 لو كان لديكم الوقت لتجربة نظام git ، فهذا شرح :
http://tech.hasenj.org/post/262742431/intro-to-git-arabic

وهذه الاستضافة المستخدمة :
http://github.com/

فقد يكون الأسهل ، والاستضافة قد تكون غير محجوبة

--
طالب - تخصص نظم معلومات .
--

خبير  Mohammad Khashashneh مشاركة 14

كما قلت, يمكنك وضع هذه الخدمة على خادمكم الخاص (إذا كان كذلك طبعا). حينئذ سيتسنى للجميع الدخول إليه.

أما بالنسبة لgit, فهو فعلا يتمتع بصفات غير موجودة في غيره, لكن الهدف الأساسي منه استخدامه في الحالات اللتي يكون هتالك فيها تفرعات كثيرة في المشروع و دائما يوجد عملية branching & merging.  برأيي وجوود برنامج بسيط مثل Tortoisesvn سبب كافي حاليا لاستخدام svn بدلا من git.

محمد خشاشنة

من سار على الدرب وصل, من جد وجد...
بس عتبك على اللي بيسمع

خبير مدير وسام البهنسي مشاركة 15

في 02/جمادى الأولى/1431 06:24 ص، غمغم Mohammad Khashashneh باستغراب قائلاً:

كما قلت, يمكنك وضع هذه الخدمة على خادمكم الخاص (إذا كان كذلك طبعا). حينئذ سيتسنى للجميع الدخول إليه.

الموقع يعمل على مخدم مشترك (Shared Webhost)، لذلك لستُ متأكداً إن كنا نستطيع تنصيب SVN على المخدم، فشركة الاستضافة لا تقدم SVN كأحد التطبيقات المتاحة. لكني سأحاول البحث في هذه النقطة والتفاوض معهم، فهذا الخيار هو طبعاً الأمثل حيث لن نكون تحت رحمة أحد.

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

موهوب  حسن أيوب مشاركة 16

نعم ass3mbla يقدم هذه الخدمة.
بالنسبة للاستضافة, انا عندي سيرفيران linux&windows, وأتشرف بتقديمهم لكم ان احببتم مجانا.
والسلام

لا شيء مستحيل. الشي الوحيد المستحيل هو قول مستحيل. لذا لا تقلها.

مبتدئ  حسن عارف عبد الرحمن مشاركة 17

السلام عليكم

شخصيا انصح بـ git، الاخ عبد الله الشمري وضع رابط لمقال كنت قد كتبته منذ فترة عن هذا النظام، اللذي للاسف لا استطيع ان اوفيه حقه في مقال واحد.

لا تقارنه اصلا بـ svn

git مصمم من اجل التعاون بين عدة مبرمجين و هو مبني على فكرة ان كل شخص يقوم بعمل ما يريد على جهازه الخاص و بين فترة و فترة يقوم الفريق بدمج ما قاموا بعمله مع بعض (بين فترة و فترة قد تعني كل يوم، او عندما ينتهي شخص من العمل على مهمة ما .. ).

svn مصمم بحيث يعمل الجميع في نفس المكان، اي ان هناك مستودع رئيسي (مركزي) يحتوي الكود، و الكل يجب ان يكتب و يقرأ منه.

كما تعرفون لا احد يكتب كود جيد من اول محاولة، خصوصا اذا كان يحاول اضافة خاصية جديدة مثلا، قد يستغرق الامر اسبوعين، و خلال هذه الفترة يكون البرنامج في وضع حرج unstable

في git مثلا يمكنني ان اعمل على خاصية جديدة لمدة اسبوعين من دون ان اسبب اي مشاكل لنفسي او لغيري، لاني استطيع دائما ان ادمج ما قمت بعمله لحد الان مع ما قام بعمله بقية الفريق على جهازي الخاص من دون ان الوث المستودع الرئيسي بما اعمل عليه. و بعد ان انهي العمل اقوم بنشر ما قمت به على المستودع الرئيسي و سيمكن للجميع ان يدمجوا عملي مع عملهم.

بينما في svn اذا كنت اعمل على خاصية لمدة اسبوعين فمن الصعب علي ان اقوم بدمج تغييراتي مع محتويات المستودع الرئيسي باستمرار. حيث ان فكرة svn انك يجب ان تكون دائما in sync مع المستودع الرئيسي، و اذا ابقيت التغييرات على جهازك لفترة طويلة فستواجه العديد من المشاكل.

فهكذا، في git تضمن دائما ان المستودع الرئيسي يحتوي على كود جيد، بينما في svn لا يوجد ضمان، لان كل شخص سيقوم بايداع تغييراته الى المستودع الرئيسي حتى لو لم تكن صالحة تماما (لكي يتفادى الوقوع في المشاكل).

و من ناحية السهولة فـ git اسهل من svn من وجهة نظري، خصوصا اذا كان عندك اناس غير تقنيين في الفريق، لان git يقوم بتولي مهمة الدمج نيابة عنهم. اما في svn فإن الاشخاص من غير المبرمجين قد لا يعرفون كيف يدمجون تغييراتهم مع المستودع الرئيسي بشكل سليم.

ملاحظة فقط، ربما معلوماتي عن svn قديمة بعض الشيء حيث تناهى الى علمي انهم قامو بتحسين بعض الاشياء لكي يحاولوا اللحاق بـ git، و لكن يبقى git متفوق بمراحل.

--
حسن
hasenj

خبير مدير وسام البهنسي مشاركة 18

شكراً حسن على الشرح. لقد قرأتُ مقالتك، وأود أن أستفسر أكثر عن git. فنمط العمل الذي ذكرته يشبه إلى حد بعيد ما اعتدت عليه شخصياً، فأنا أستخدم Perforce، والمبدأ قائم على أن تسحب لنفسك نسخة من المشروع وتسجل فتح الملفات التي ترغب بها وتعمل عليها. عندما تنتهي من العمل بشكل كامل فأنت تقوم بتسليم الملفات إلى المستودع المركزي. لو كان غيرك قد غيّر في الملفات نفسها التي أنت عملت بها فستضطر إلى دمج التغييرات، والتي قد تكون عملية مؤتمتة أو تحتاج إلى تدخل بشري لو وجدت تضاربات في التغييرات.
 
أما بالنسبة لملفات الثري دي والصور مثلاً، فلا يسمح لها أن تفتح إلا من قبل شخص واحد، وذلك لعدم إمكانية دمج التغييرات فيها.
 
سؤالي هو: كيف يختلف كل من SVN و git عن هذا النموذج من العمل؟

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

مبتدئ  حسن عارف عبد الرحمن مشاركة 19

اهلا وسام

طريقة svn مشابهة لما شرحته عن p4 و لكن لا اعرف شيئا عن الملفات الـ binary لأني لم اتعامل معها.

طريقة git هي ان تاريخ المشروع كله يذهب مع الـ repository اينما حلت، و التاريخ مكون من commits لها id (عبارة عن hash من نوعا ما (بالحقيقة sha1 لكن لن ادخل في التفاصيل))

كل شخص يعمل على المشروع عنده نسخة من تاريخ المشروع، و عندما يقوم بالعمل، يقوم بعمل commits على جهازه، يعني local offline commits

يعني لو هناك شخصين يعملون على نفس المشروع، يمكن ان نمثل تاريخ المشروع بهذا الشكل:

              o-o-o-o-o A
             /
o-o-o-o-o-o-o
                           o-o-o-o-o B

هنا لدينا شخصين, A و B و عند نقطة معينة كان لديهما نفس النسخة من المشروع, ثم مضى كل منهم يعمل على الجزء الخاص به من المشروع و يقوم بعمل commits على جهازه.

و الان يمكن لاي منهم ان يدمج التغييرات اللتي قام بها مع التغييرات اللتي قام بها الاخر، و الدمج عمليه سهلة تتم عادة في لمح البصر:



              o-o-o-o-o 
             /         o-o-o-o-o-o-o           o M
             \         /
              o-o-o-o-o 

و بعد ذلك يمكن لكل منهما ان يواصل العمل على جهازه الخاص.

يعني ما يحدث عادة: هناك نسخة من المشروع، و هناك شخص جديد ينضم الى الفريق على سبيل المثال. يقوم بسحب المشروع من المستودع الرئيسي الى جهازه الخاص و يعمل ما يشاء، حين يكمل العمل احتمال ان يكون هناك اناس قاموا باضافة تغييرات الى المستودع الرئيسي، فيقوم بسحب التغييرات من المركز الرئيسي مرة اخرى ليدمجها مع تغييراته (بشكل اوتوماتيكي) ثم يقوم باضافة تغييراته هو الى المستودع الرئيسي (لان git لا يسمح له باضافة تغييرات اذا كان هناك شخص آخر اضاف تغييرات قبله، و بدقة اكثر لا يسمح بعمل push الا اذا كان الدمج عبارة عن fast forward)

او، اذا لم تكن لديه صلاحية الاضافة الى المستودع الرئيسي، يطلب من شخص آخر يملك الصلاحية ان يقوم بسحب تغييراته و مراجعتها تمهيدا لاضافتها الى المستودع الرئيسي، و في هذه الحالة يمكن ان يكون هناك شخص (او اكثر) يتولون ادارة المستودع الرئيسي و التأكد من كل التغييرات قبل اضافتها.

هناك عدة طرق للعمل مع git
http://whygitisbetterthanx.com/#any-workflow

طبعا هناك دائما احتمال حدوث merge conflict، و لكن الدمج في git افضل من غيره لانك تستطيع تسجيل تغييراتك دون التحدث مع سرفر مركزي، مما يعني ان git لا ينظر الى التغييرات على انها كتلة هائلة من الكود الجديد، بل يستطيع رؤية الخطوات اللتي قادتك من نقطة أ الى نقطة ب.

--
حسن
hasenj

خبير  Mohammad Khashashneh مشاركة 20

شرح ممتاز أخ حسن. فهو السبب الرأيسي لاختراع git من قبل Linus, و ذلك ليقوم بمهمة
أفضل في دمج التغييرات الهائلة في linux kernel code. لكني ما زلت أعتقد أن طريقة
عمل svn هي الأكثر مناسبة للمشاريع الصغيرة, وحتى أنك تستطيع استخدام عدة branches
لعمل شيئ ما و من ثم دمجها مع الtrunk لاحقا مع مراعاة ما قلته أنت و هو إبقاء
الفرع محدث دائما مع الtrunk. إلا أن git يقوم بذلك ضمنيا من دون عناء (وعلا جهازك
الشخصي)
لكن المهم هنا البساطة على ويندوز. فأنا أستخدم git و svn على لينوكس من
الcommand line من غير مشاكل. هل هناك أداة مشابهة ل tortoisesvn على ويندوز لgit؟
فtortoisesvn عبارة عن plugin للويندوز explorer, وذلك يبسط التعامل مع
الrepository و خاصة لغير المبرمجين.

بالنسبة لمشكلة عدم إمكانية الدخول من سوريا, هنالك مقارنة لدى wikipedia و الواضح
أن sourceforge و googlecode هما من يطبفان ذلك فقط. أقترح berlios كبديل, لكني لم
أستخدمهم قط. فهم يدعمون  git و svn H أيضا.

http://en.wikipedia.org/wiki/Comparison_of_free_software_hosting_facilities#Features

من سار على الدرب وصل, من جد وجد...
بس عتبك على اللي بيسمع