18

ما هي افضل برامج ادارة الاصدارات version control التي تفضلها؟

  • uid0

السلام عليكم

اليوم اود طرح موضوع برامج ادارة الاصدارات version control حتى نزيد معلوماتنا اكثر في هذا المجال.

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

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

ولدي مجموعة اسئلة لنبدا نقاشنا حول هذا الامر.

  1. هل سبق وان استخدمت نظاما لادارة الاصدارات في احد مشاريعك؟

  2. ما هي افضل برامج ادارة الاصدارات التي تفضلها؟ SVN , GIT , CVS ، او اي نوع اخر ولماذا تفضل هذا النوع؟

  3. هل تعتمد على مزودين خدمة على الانترنت للحصول على المخازن ؟ اي المزودين تفضل ولماذا؟ ام انك تستخدم مستودعات محلية على جهازك؟

  4. ما هي افضل البرامج التي تفضلها للوصول الى ملفات المخازن الخاصة بك مثلا TortoiseSVN؟ هل هناك برنامج معين؟ ولماذا تفضله؟

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

16

شكرا لفتحك هذا النقاش،

1 - هل سبق وان استخدمت نظاما لإدارة الإصدارات في أحد مشاريعك؟

نعم، أستخدم حاليا Git وفقط لمشاريعي. بل وأطلقت موقع arabicgit.com لما رأيت أهمية الموضوع ووجوب التخصص في أداة واحدة ناجعة تفي بالغرض، جربت bazaar سابقا تجربة سريعة، SVN و CVS أيضا لكني فقط لعمل checkout، كذلك واجهة TortoiseSVN، ما لاحظته أنهم جميعا بطيئون مقارنة بـ Git.

2 - ما هي افضل برامج ادارة الاصدارات التي تفضلها؟

Git ثم hg أو mercurial ولو أني لم أستخدم الأخير فعليا إلا أن به نفس ميزات Git حسب ما قرأت عنه وهو المنافس - إن صح التعبير- الوحيد له من ناحية الميزات والخفة، يكفي أن فيس بوك تستخدمه[1] في إدارة شفرة مصدرية أضعاف حجم نواة لنكس، لكنه في رأيي لا يرتقي لـ git في شيء واحد: المجتمع، فمع github والمصادر الموجودة حول git وميزات هذا الأخير وسهولته، يجعله الخيار البديهي تقريبا في تبنّيه.

3 - هل تعتمد على مزودين خدمة على الانترنت للحصول على المخازن ؟ اي المزودين تفضل ولماذا؟ ام انك تستخدم مستودعات محلية على جهازك؟

أعتمد على 3، bitbucket، github و جهازي المحلي، فقط لا غير.

4 - لازلت لا أفضل أي من الواجهات الرسومية بعد، إلا في حالة معاينة الـ diffs أو logs ، جل وقتي أستخدم سطر الأوامر zsh مع oh-my-zsh مع إضافة git. وأحيانا أستعمل gitk.

زيادة على هذا، ما يعجبني في Git أنه موزع وغير مركزي، أذكر أن مشروع KDE كاد يضيع [2] العام الفارط أو الذي قبله بسبب عطل في قرص صلب الخادم المستضيف، ولحسن الحظ وجدوا mirror في مكان آخر، هنا يظهر أهمية الأنظمة غير المركزية

تقريبا هذا ما جعلني أركز فقط على Git حين أطلقت موقع arabicgit، فالمحتوى العربي فقير جدا في هذا المجال، ورأيت أنه لا يُجدي مع هذا الفقر تشتيت المبتدئ بكثرة الأدوات.

مقال ماهو git؟

على arabicgit على بساطته فهو يحوي معلومات جيدة حول git وبقية الأنظمة.

أنصحك أيضا بهذا المقال:

ملاحظة: أحبذ مصطلح "نظام التحكم بالنُّسخ" على "إدارة الإصدارات"، فالـ version لا تعني إصدار، حتى لا يلتبس الأمر مع release. وcontrol لا تعني إدارة -Manage- إنما الأقرب إليها هي 'تحكم'.

بالمناسبة، فتحنا مجتمع Git على Arabia i/o تجده من هنا:

التذييل:

[1]

[2]

3 - هل تعتمد على مزودين خدمة على الانترنت للحصول على المخازن ؟ اي المزودين تفضل ولماذا؟ ام انك تستخدم مستودعات محلية على جهازك؟

أعتمد على 3، bitbucket، github و جهازي المحلي، فقط لا غير.

لا تفرق كيثر لأن كل نسخة تحتوي كامل معلومات المشروع (بعكس svn) بمعنى يمكنك تغير الاستضافة في أي وقت.

هناك github و bitbucket و gitorious.org أنا أستخدم github.

عندما نستضيف على خادم خاص بنا نستخدم gitolite عبر ssh keys..

أهلا أستاذ مؤيد،

أجل، لكن ما قصدته أني أستخدم احدى هذه الاستضافات على حدى، حسب نوعية المشروع، فإن كان مفتوح المصدر أضعه على github، وإن كان شخصي أو مغلق أضعه على bitbucket أو أكتفي بجهازي المحلي إن لم يكن بالغ الأهمية أو لم يصل لمرحلة النشر العام.

لا أخفي أني فكرت في خادم خاص، لكن تكاليفه لا أستطيعها حاليا، خاصة من ناحية الـ Backup و ضمان الـ uptime. وقد اقتُرح علي أن أجعل Arabicgit بوتقة للمشاريع العربية أيضا (تخيل ذلك، مع Markdown يدعم العربية وويكي للمشاريع)، لكن هذا كما قلت خارج عن نطاقي الآن ولا أستطيعه لوحدي.

شكرا لك. بالطبع أنت لا تستملها جميعها لنفس المشروع. أنا قصدت أن أبين لغيرك أن قرار استخدام استضافة دون غيرها في git ليس قرار مصيري بعكس svn لأن هذا الأخير سيكون أشبه ب vendor lock-in لأنك عندما ترحل إلى مزود آخر لن تأخذ معك تأريخ الكود.

15

1- استخدم git دائما. جربت svn قليلا.

2- افضل git للعديد من الاسباب. منها:

  • أن ال History الكامل للمشروع متواجد في جهاز كل من يساهم فيه وبالتالي لا خوف من احتمالية حدوث مشكلة في السيرفر وضياع الملفات. (وقد حدثت معنا سابقا مع svn).

  • للسبب السابق، يمكنك العمل دون الإتصال مع خادم git في أي مكان. ولاحقا يتم دمج التعديلات. على عكس svn.

  • سهولة عمل Branch وسهولة الدمج وإزالة ال conflicts وإمكانية إنشاء أي development workflow model.

  • سهولة التعامل مع git عبر ال commands الخاصة به.

3- نعم، أعتمد على عدة remotes منها خادم محلي ،ومستودعات محمية على الإنترنت online private repos.

4- Terminal + git + gitk

15

دون شك أو جدال git.

سأعطيك حقيقة وهي أن مجتمع نواة لينكس (وهو يزيد عن 30 مليون سطر من الكود) كان يفضل حفظ وتداول عدد فلكي الكود كاملا ورقاعه على استعمال CVS. وعندما ظهر SVN ليقدم حلول للمشاكل الجوهرية في CVS جاء لينوس تورفالدز وسفه أحلامهم في فيديو مشهور: