الكثير من المشاريع المفتوحة المصدر توفر لك إمكانية الإطلاع على الشفرة وتنزيلها ولكن سؤالي هو عن كيفية رفع التغييرات؟
لنفترض أنني قمت بتعديل على شفرة لينكس مثلاً؟ كيف أرفع التعديلات وأعرف أنه تم الموافقة عليها؟ هل من برامج معينة أستخدمها؟
هناك ما يُسمي بـ"أنظمة إدارة الأكواد المصدرية source code management systems" أو "أنظمة إدارة المُراجَعات revision control systems"، و التي هي عبارة عن برامج مخصوصة للتحكم في عملية اشتراك أكثر من مبرمج في التعديل علي كود مشروع واحد، و هناك الكثير من هذه البرامج و أشهرهن CVS , SVN, git, mercurial, bitkeeper و غيرهن.
و هناك نوعان منهما: أنظمة مركزية centralized مثل CVS، و أنظمة مُوزَّعة distributed مثل git، و لكل منهما ميزاته و عيوبه، و أنا شخصياً أُفضِّل النوع الأخير (مع الإقرار بأنه لا خبرة عملية لي في هذه الأنظمة، لأني لم أضطر للتعامل معها من قبل).
مثلاً في حالة مشروع "نواة اللينكس linux kernel" فإنهم يستخدمون نظام git، و بالتالي فحينما تود الاشتراك معهم في المشروع ستقوم بعمل الخطوات التالية:
عمل نسخة خاصة بك من أكواد المشروع باستخدام git (تُسمَّي هذه العملية cloning)،
التعديل علي الأكواد كيفما تشاء،
حفظ التعديلات في أرشيف git الخاص بنسختك من الأكواد، و هو ما يُسمي commit،
إرسال التعديلات التي صنعتَها إلي المشرف علي الجزء الذي عدَّلت فيه، مثلاً لو قمتَ بالتعديل في شفرة التعامل مع الـusb فيجب أن تقوم بإرسال التعديلات لفلان الفلاني، أما لو قمتَ بالتعديل في الـscheduler فستقوم بإرسالها لعلان العلاني، و في كل الأحوال يجب أن تقوم بشرح التعديلات التي ترسلها له حتي يستوعب ما تريد عمله و يستطيع مراجعته جيداً، و هذه العملية تُسمَّي push،
سيقوم المشرف الذي أرسلتَ إليه التعديلات بمراجعتها، فإن تم قبولها فسيقوم بمزج التعديلات بالنسخة الخاصة به، أي merge،
بعد المزج قد يظهر بعض التضارب بين نسخ الأكواد (مثلاً تصير هناك أكثر من دالة function لها ذات الاسم)، و يجب ساعتها أن يتم حل هذه التضاربات إما بمعرفة المشرف أو بمعرفتك أنت.
هاك بعض الروابط المفيدة:
التعليقات