Monday 26 February 2018

إستراتيجية التحكم في إصدار البرنامج


إستراتيجية التحكم في إصدار البرنامج
الحصول على فيا أب ستور قراءة هذه المشاركة في التطبيق لدينا!
الخروج باستراتيجية التحكم في الإصدار ل سفن.
على مدار الساعة أنا ذاهب لمحاولة التوصل إلى استراتيجية لمراقبة الإصدار لشركتي. ونحن حاليا استخدام سفن ولكن ليس هناك هيكل لذلك - نحن أساسا فقط جذع والالتزام فقط لذلك. في الآونة الأخيرة مدير التطوير بدأ مستودع الثاني الذي يعمل لدينا "العلامة"، ولكن لا بد من دمجها يدويا مع "الجذع" لأنها ليست جزءا من نفس مستودع ولكن منفصلة تماما. في الواقع هناك مجلد واحد فقط، ودعا "ديف" (هناك فعلا مختلف "ديف" المجلدات في تواريخ مختلفة ولكن فقط "ديف" هو الرئيسي) وتحت كل شيء آخر؛ جميع المشاريع الأخرى. انها ليست منظمة من قبل المشروع على الإطلاق، فإنه ليس لديه مفهوم فروع / العلامة / الجذع أو أي شيء. يبدو أن الشخص الذي وضعه في البداية (منذ فترة طويلة، وبطبيعة الحال) لا يعرف كيفية تعيين سفن على الإطلاق، ومنذ ذلك الحين لا أحد يزعج لمعرفة كيفية القيام بالأشياء بشكل صحيح خوفا من كسر شيء. نحن لا تستخدم أي نوع من سي (أو الآلي اختبار، للأسف).
أولا، إذا كان لدينا فصلها المشروع؟ على سبيل المثال، لدينا: اثنين من مواقع ويب أسب (وليس تطبيقات ويب ومواقع ويب)، وخدمة ويب، مجلد نشر لكافة البرامج النصية الجدول والإجراءات المخزنة، اثنين من عملاء سطر الأوامر للمشاريع الخارجية التي تحصل على استدعاء من المواقع على شبكة الإنترنت و مجلد مشترك يحتوي على عناصر أعمال مشتركة وما شابه ذلك. يجب أن يكون كل من هذه المشاريع الخاصة بهم مع فروع / علامة / الإعداد الجذع، أو ينبغي أن يكون مثل هذا:
ولها كل الفروع وكل شيء لديها نسخة من مجلد ديف بأكمله؟ قد يكون هذا النهج أسهل لابتلاع لأن لدينا غالبا الحالات التي نحن بحاجة إلى إجراء تغييرات في مكتبة التعليمات البرمجية المشتركة واحد على الأقل (عادة كلاهما) من المواقع على شبكة الإنترنت أيضا.
ثانيا، ونحن نفعل الإصدارات العادية ("يدفع" في منطقتنا) لدينا خادم ديف وملقم الحية. من ما قرأت أفضل طريقة للتعامل مع هذا سيكون أن كل التنمية يذهب إلى جذع /، وفروع هي "مؤقتة" وتستخدم لإضافة ميزة جديدة قد تؤثر على الجذع، والعلامات هي للإصدارات؟ لذلك، نحن ندفع كل شهر دعونا نقول، وأنا أعمل على وحدة نمطية العلامة التجارية الجديدة. وأود أن فرع الجذع، واستخدام هذا الفرع لبلدي التعليمات البرمجية والكتابة واختبار ذلك وأيا كان. عندما يتم وحدة نمطية، كنت دمجها مرة أخرى في الجذع (وربما حذف الفرع)، وعندما نحن على استعداد لنشر أننا سوف علامة ("May2018" دعونا نقول). إذا كان لدينا إصلاح الخلل بعد أن يذهب على الهواء مباشرة، فإنه سيتم إصلاحها في علامة May2018 ودمجها في الجذع (حتى الجذع يحصل على الإصلاح كذلك)، ثم مايو2018 سيتم دفع مرة أخرى مع الإصلاح؟ هل هذا هو القصد من وضع العلامات؟
إذا كنت تريد عملية بناء موحدة، ثم تأكد من وضع فروع / العلامات / الجذع في الجذر، مثل هذا:
إذا كنت لا تحتاج إلى عملية بناء موحدة، ثم يمكنك وضع فروع / العلامات / جذوع داخل كل مشروع إذا كنت تريد. ومع ذلك، قد يكون من الصعب الهجرة إلى بناء موحد بعد وضعها داخل كل مشروع. بناء موحد له مزايا، مثل القضاء على الحاجة إلى نشر المكونات المشتركة بين المشاريع - انهم جميعا جزء من البناء.
شخصيا، أحب عملية بناء موحدة. وعلاوة على ذلك، لا أعتقد أنه يجب أن يكون لديك مشروع "ديف". يجب أن يكون لديك مشاريع مباشرة تحت الجذع، ومن ثم فرع الجذع في فرع ديف. استخدام علامات للإصدارات. على سبيل المثال، سأفعل ذلك مثل:
بقدر بنية الرمز داخل سفن يذهب هذا هو حقا اختيار شخصي.
أود أن أقترح أنه إذا كانت المشاريع ذات الصلة أو رمز المشاركة ثم يريدون جذع مشترك. إذا كانوا مستقلين ثم يريدون جذوع منفصلة أو حتى مستودعات منفصلة. إذا احتجت من أي وقت مضى إلى تزويد طرف ثالث بنسخة من سجل سفن لمشروع ما، فإنه من الأسهل بكثير إذا كان في مستودع منفصل.
حتى في قضيتك يبدو أن التخطيط الذي رسمته أعلاه سيكون معقولا، كما لديك رمز المشتركة وكنت تريد فروع / العلامات لتشمل تلك التعليمات البرمجية المشتركة.
وصف العلامة واستخدام فرع يبدو معقولا بشكل بارز، وكيف يمكنني أن نتوقع سفن لاستخدامها. هذا هو في الواقع نية وضع علامات كما أفهمها. راجع للشغل في العلامات سفن والفروع هي في الواقع نفس الشيء، ولكن يتم تطبيق المصطلحات كما قمت بتطبيقه.
شخصيا وأود أيضا أن أضيف التحذير من أن أي شيء ملتزم الجذع يجب أن يبني، يجب أن تكون ذرية ويجب أن لا كسر أي اختبارات الوحدة. الفروع هي لأعمال غير مكتملة قيد التنفيذ. وأتوقع أن يكون الجذع مرشح إطلاق محتمل في أي لحظة.
فيما يلي أفضل طريقة لوضع مستودع تخزين سوبفيرزيون.
بهذه الطريقة يمكنك التحقق من المشاريع الفردية في حد ذاتها.
إذا كنت ترغب في التحقق من جميع المشاريع 3 والقيام بناء موحد مع بعض متجانسة بناء النصي / النظام ثم التحقيق باستخدام وحدة رئيسية مع سفن: الخارجية تعيين جميع المشاريع الأخرى في الجذع الرئيسي.
هذا هو أكثر تعقيدا للوهلة الأولى ولكن هو الطريقة الأكثر الحفاظ عليها والاصطلاحية لحل هذه المشكلة مع التخريب.

ما هو عنصر تحكم الإصدار.
أنظمة التحكم في الإصدار هي فئة من أدوات البرمجيات التي تساعد فريق البرامج على إدارة التغييرات على شفرة المصدر بمرور الوقت. برنامج مراقبة الإصدار بتتبع كل تعديل على التعليمات البرمجية في نوع خاص من قاعدة البيانات. إذا تم إجراء خطأ، يمكن للمطورين العودة مرة أخرى على مدار الساعة ومقارنة الإصدارات السابقة من التعليمات البرمجية للمساعدة في إصلاح الخطأ مع التقليل من تعطيل جميع أعضاء الفريق.
بالنسبة لكافة مشاريع البرمجيات تقريبا، فإن شفرة المصدر هي مثل المجوهرات التاجية - وهي مادة ثمينة يجب حماية قيمتها. بالنسبة لمعظم فرق البرمجيات، شفرة المصدر هو مستودع للمعرفة القيمة والفهم حول مجال المشكلة التي جمعت المطورين وصقلها من خلال جهد دقيق. ويحمي التحكم في الإصدار شفرة المصدر من كل من الكارثة والتدهور العرضي للخطأ البشري والعواقب غير المقصودة.
يعمل مطوري البرامج العاملين في فرق على كتابة شفرة مصدر جديدة باستمرار وتغيير شفرة المصدر الحالية. وعادة ما يتم تنظيم التعليمات البرمجية لمشروع أو برنامج أو مكون برنامج في بنية مجلد أو "شجرة ملف". قد يعمل أحد المطورين في الفريق على ميزة جديدة بينما يقوم مطور آخر بإصلاح خلل غير ذي صلة من خلال تغيير الشفرة، قد يقوم كل مطور بتغييراته في عدة أجزاء من شجرة الملفات.
يساعد التحكم في الإصدار الفرق على حل هذه الأنواع من المشكلات، وتتبع كل تغيير فردي من قبل كل مساهم، ويساعد على منع العمل المتزامن من التضارب. التغييرات التي تتم في جزء واحد من البرنامج يمكن أن تكون غير متوافقة مع تلك التي أدلى بها مطور آخر يعمل في نفس الوقت. وينبغي اكتشاف هذه المشكلة وحلها بطريقة منظمة دون عرقلة عمل بقية الفريق. وعلاوة على ذلك، في جميع تطوير البرمجيات، يمكن لأي تغيير إدخال أخطاء جديدة على برامجها الخاصة والبرنامج الجديد لا يمكن الوثوق بها حتى يتم اختباره. لذلك اختبار والتنمية المضي قدما معا حتى إصدار جديد جاهز.
برنامج التحكم في الإصدار الجيد يدعم سير العمل المفضل للمطور دون فرض طريقة معينة للعمل. ومن الناحية المثالية فإنه يعمل أيضا على أي منصة، بدلا من إملاء ما يجب أن يستخدمه نظام التشغيل أو مطوري سلسلة الأدوات. أنظمة التحكم الإصدار كبيرة تسهيل تدفق سلس ومستمر من التغييرات على التعليمات البرمجية بدلا من آلية محبطة والخرقاء من تأمين الملف - إعطاء الضوء الأخضر لمطور واحد على حساب عرقلة تقدم الآخرين.
فرق البرمجيات التي لا تستخدم أي شكل من أشكال التحكم في الإصدار غالبا ما تواجه مشاكل مثل عدم معرفة التغييرات التي تم إجراؤها متاحة للمستخدمين أو خلق تغييرات غير متوافقة بين قطعتين لا علاقة لها من العمل الذي يجب بعد ذلك فكها بشق الأنفس وإعادة صياغتها. إذا كنت مطور البرامج الذي لم يستخدم مطلقا التحكم في الإصدار قد تكون قد أضافت إصدارات إلى الملفات الخاصة بك، وربما مع لاحقة مثل "النهائي" أو "أحدث" ثم اضطر إلى التعامل في وقت لاحق مع النسخة النهائية الجديدة. ربما كنت قد علقت من كتل التعليمات البرمجية لأنك تريد تعطيل وظيفة معينة دون حذف التعليمات البرمجية، خوفا من أنه قد يكون هناك استخدام لذلك في وقت لاحق. التحكم في الإصدار هو وسيلة للخروج من هذه المشاكل.
برنامج مراقبة الإصدار هو جزء أساسي من كل يوم من الممارسات المهنية فريق البرمجيات الحديثة. مطوري البرمجيات الفردية الذين اعتادوا على العمل مع نظام التحكم نسخة قادرة في فرقهم عادة ما تعترف مراقبة الإصدار القيمة لا يصدق كما يعطيهم حتى على مشاريع منفردة صغيرة. مرة واحدة اعتادوا على فوائد قوية من أنظمة التحكم الإصدار، فإن العديد من المطورين لا تنظر في العمل دون ذلك حتى بالنسبة للمشاريع غير البرمجيات.
فوائد أنظمة التحكم في الإصدار.
تطوير البرمجيات دون استخدام التحكم في الإصدار هو محفوفة بالمخاطر، مثل عدم وجود النسخ الاحتياطية. التحكم في الإصدار يمكن أيضا تمكين المطورين للتحرك بشكل أسرع ويسمح فرق البرمجيات للحفاظ على الكفاءة وخفة الحركة كما فريق موازين لتشمل المزيد من المطورين.
شهدت أنظمة التحكم في الإصدار (فس) تحسينات كبيرة على مدى العقود القليلة الماضية وبعضها أفضل من غيرها. فس تعرف أحيانا باسم سم (إدارة رمز المصدر) أدوات أو رسس (نظام مراقبة مراجعة). واحدة من أدوات فس الأكثر شعبية في استخدام اليوم يسمى جيت. جيت هو فس الموزعة، وهي فئة تعرف باسم دفكس، أكثر على ذلك في وقت لاحق. مثل العديد من أنظمة فس الأكثر شعبية المتاحة اليوم، جيت هو حر ومفتوح المصدر. بغض النظر عن ما يسمى، أو النظام الذي يستخدم، الفوائد الأساسية التي يجب أن نتوقع من التحكم في الإصدار هي كما يلي.
تاريخ تغيير كامل على المدى الطويل من كل ملف. وهذا يعني كل تغيير يقوم به العديد من الأفراد على مر السنين. وتشمل التغييرات إنشاء الملفات وحذفها وكذلك التعديلات على محتوياتها. تختلف أدوات فس مختلفة عن مدى التعامل مع إعادة تسمية ونقل الملفات. وينبغي أن يشمل هذا التاريخ أيضا المؤلف والتاريخ والملاحظات المكتوبة على الغرض من كل تغيير. وجود التاريخ الكامل يتيح العودة إلى الإصدارات السابقة للمساعدة في تحليل السبب الجذري للبق، وأنه أمر بالغ الأهمية عند الحاجة إلى إصلاح المشاكل في الإصدارات القديمة من البرمجيات. إذا كان البرنامج يعمل بنشاط على، يمكن اعتبار كل شيء تقريبا & كوت؛ النسخة القديمة & كوت؛ من البرنامج.
المتفرعة ودمج. إن عمل أعضاء الفريق في الوقت نفسه ليس من العقل، ولكن حتى الأفراد الذين يعملون بمفردهم يمكنهم الاستفادة من القدرة على العمل على مسارات مستقلة للتغييرات. إنشاء & كوت؛ فرع & كوت؛ في أدوات فس يحافظ على تيارات متعددة من العمل مستقلة عن بعضها البعض في حين توفر أيضا مرفق لدمج هذا العمل معا، مما يتيح للمطورين للتحقق من أن التغييرات على كل فرع لا تتعارض. العديد من فرق البرمجيات تعتمد ممارسة المتفرعة لكل ميزة أو ربما المتفرعة لكل إصدار، أو كليهما. هناك العديد من سير العمل المختلفة التي يمكن للفرق الاختيار من بينها عندما تقرر كيفية الاستفادة من مرافق المتفرعة ودمج في فس.
التتبع. إن القدرة على تتبع كل تغيير يتم إجراؤه على البرنامج وتوصيله ببرنامج إدارة المشاريع وتتبع الأخطاء مثل جيرا، والقدرة على كتابة تعليقات توضيحية على كل تغيير مع رسالة تصف الغرض من التغيير وقصده، لا يمكن أن يساعد فقط في تحليل الأسباب الجذرية والطب الشرعي الآخر. وجود التاريخ المشروح من التعليمات البرمجية في متناول يدك عند قراءة التعليمات البرمجية، في محاولة لفهم ما تقوم به ولماذا هو مصمم بحيث يمكن للمطورين لإجراء تغييرات صحيحة ومتناغمة التي تتماشى مع التصميم المقصود على المدى الطويل النظام. وهذا يمكن أن يكون مهما بشكل خاص للعمل بفعالية مع التعليمات البرمجية القديمة، وهو أمر حاسم في تمكين المطورين لتقدير العمل في المستقبل مع أي دقة.
في حين أنه من الممكن لتطوير البرمجيات دون استخدام أي عنصر تحكم الإصدار، القيام بذلك المواضيع المشروع إلى خطر كبير أن أي فريق محترف لن ينصح لقبول. لذا فإن السؤال ليس ما إذا كان استخدام التحكم في الإصدار ولكن أي نظام التحكم الإصدار لاستخدامها.
هناك العديد من الخيارات، ولكن هنا نحن نذهب للتركيز على واحد فقط، جيت.

1.1 الشروع في العمل - حول التحكم في الإصدار.
سيكون هذا الفصل حول البدء مع جيت. سوف نبدأ من خلال شرح بعض الخلفية على أدوات التحكم في الإصدار، ثم الانتقال إلى كيفية الحصول على جيت تشغيل على النظام الخاص بك وأخيرا كيفية الحصول عليه اقامة لبدء العمل مع. في نهاية هذا الفصل يجب أن نفهم لماذا جيت حول، لماذا يجب عليك استخدامه، ويجب أن تكون جميع أنشئت للقيام بذلك.
حول التحكم في الإصدار.
ما هو "التحكم في الإصدار"، ولماذا يجب أن تهتم؟ التحكم في الإصدار هو نظام يسجل التغييرات على ملف أو مجموعة من الملفات مع مرور الوقت بحيث يمكنك استدعاء إصدارات محددة في وقت لاحق. لأمثلة في هذا الكتاب، سوف تستخدم التعليمات البرمجية المصدر البرمجيات كما الملفات التي يتم التحكم في الإصدار، على الرغم من أن في الواقع يمكنك القيام بذلك مع أي نوع تقريبا من الملفات على جهاز كمبيوتر.
إذا كنت مصمم الرسم أو الويب وتريد أن تبقي كل نسخة من صورة أو تخطيط (والتي كنت تريد بالتأكيد ل)، ونظام مراقبة الإصدار (فس) هو شيء حكيمة جدا للاستخدام. انها تسمح لك للعودة الملفات المحددة مرة أخرى إلى حالة سابقة، والعودة المشروع بأكمله مرة أخرى إلى حالة سابقة، مقارنة التغييرات مع مرور الوقت، معرفة من آخر تعديل شيء قد يسبب مشكلة، الذي قدم قضية ومتى، وأكثر من ذلك. استخدام فس أيضا يعني عموما أنه إذا كنت المسمار الأشياء أو فقدان الملفات، يمكنك استرداد بسهولة. وبالإضافة إلى ذلك، يمكنك الحصول على كل هذا ل النفقات العامة قليلا جدا.
أنظمة التحكم النسخة المحلية.
طريقة العديد من الناس نسخة التحكم في الاختيار هو نسخ الملفات إلى دليل آخر (ربما دليل مختومة الوقت، إذا كانوا ذكي). هذا النهج هو شائع جدا لأنه بسيط جدا، ولكن هو أيضا خطأ لا يصدق عرضة. فمن السهل أن ننسى الدليل الذي كنت في والكتابة عن طريق الخطأ إلى ملف خاطئ أو نسخ أكثر من الملفات التي لا تقصد.
للتعامل مع هذه المسألة، طور المبرمجون منذ فترة طويلة فس المحلية التي لديها قاعدة بيانات بسيطة التي أبقت جميع التغييرات على الملفات تحت مراقبة المراجعة.
واحدة من أدوات فس الأكثر شعبية كان نظام يسمى رسس، والتي لا تزال موزعة مع العديد من أجهزة الكمبيوتر اليوم. رسس يعمل عن طريق حفظ مجموعات التصحيح (وهذا هو، والاختلافات بين الملفات) في شكل خاص على القرص. فإنه يمكن بعد ذلك إعادة إنشاء ما بدا أي ملف مثل في أي لحظة في الوقت عن طريق إضافة ما يصل كل بقع.
أنظمة التحكم في النسخة المركزية.
المسألة الرئيسية التالية التي يواجهها الناس هي أنهم بحاجة إلى التعاون مع المطورين على أنظمة أخرى. للتعامل مع هذه المشكلة، وضعت أنظمة التحكم في النسخة المركزية (كفكس). هذه الأنظمة، مثل كفس، سوبفيرزيون، و بيرفورس، لديها ملقم واحد يحتوي على كافة الملفات التي تم إصدارها، وعدد من العملاء التي تحقق من الملفات من هذا المكان المركزي. لسنوات عديدة، وهذا هو المعيار لمراقبة الإصدار.
هذا الإعداد يوفر العديد من المزايا، وخاصة على فس المحلية. على سبيل المثال، الجميع يعرف إلى حد ما ما يفعله الجميع على المشروع. يتمتع المشرفون بالسيطرة الدقيقة على من يمكنه أن يفعل ما، وأنه من الأسهل بكثير إدارة كفكس أكثر من التعامل مع قواعد البيانات المحلية على كل عميل.
ومع ذلك، يحتوي هذا الإعداد أيضا بعض الجوانب الخطيرة. والأكثر وضوحا هو نقطة الفشل الوحيدة التي يمثلها الخادم المركزي. إذا كان هذا الخادم ينخفض ​​لمدة ساعة، ثم خلال تلك الساعة لا أحد يستطيع التعاون على الإطلاق أو حفظ التغييرات التي تم إصدارها إلى أي شيء انهم يعملون على. إذا كان القرص الثابت قاعدة البيانات المركزية على يصبح معطوبا، والنسخ الاحتياطية المناسبة لم يتم الاحتفاظ بها، تفقد كل شيء على الاطلاق - التاريخ بأكمله من المشروع ما عدا لقطات واحدة الناس يحدث أن يكون على الآلات المحلية. أنظمة فس المحلية تعاني من هذه المشكلة نفسها - كلما كان لديك تاريخ كامل للمشروع في مكان واحد، كنت خطر فقدان كل شيء.
أنظمة التحكم في الإصدار الموزع.
هذا هو المكان الذي نظم توزيع النسخة الموزعة (دفسس) في. في دفكس (مثل جيت، ميركوريال، بازار أو داركس)، والعملاء لا مجرد التحقق من أحدث لقطة من الملفات. بل إنها تعكس تماما المستودع، بما في ذلك تاريخه الكامل. وبالتالي، في حالة وفاة أي ملقم، وهذه الأنظمة تتعاون عبر هذا الملقم، يمكن نسخ أي من مستودعات العميل مرة أخرى إلى الملقم لاستعادته. كل استنساخ هو في الواقع نسخة احتياطية كاملة من جميع البيانات.
وعلاوة على ذلك، فإن العديد من هذه الأنظمة تتعامل بشكل جيد مع وجود العديد من المستودعات النائية التي يمكن أن تعمل معها، حتى تتمكن من التعاون مع مجموعات مختلفة من الناس بطرق مختلفة في وقت واحد ضمن نفس المشروع. هذا يسمح لك بإعداد عدة أنواع من سير العمل التي لا يمكن في الأنظمة المركزية، مثل النماذج الهرمية.

مفاهيم التحكم في الإصدار وأفضل الممارسات.
مايكل ارنست.
سبتمبر، 2018.
آخر تحديث: 23 آذار (مارس) 2017.
هذه الوثيقة مقدمة موجزة لمراقبة الإصدار. بعد قراءتها، سوف تكون على استعداد لأداء المهام البسيطة باستخدام نظام التحكم في الإصدار، ومعرفة المزيد من الوثائق الأخرى التي قد تفتقر إلى نظرة عامة محصورة رفيعة المستوى. معظم نصائحها تنطبق على جميع أنظمة التحكم في الإصدار، ولكن الأمثلة تستخدم جيت، الزئبق (هغ)، والتخريب (سفن) ل كونكريتينيس.
والغرض الرئيسي من هذه الوثيقة هو وضع الفلسفة والمشورة التي لم أجدها في مكان آخر في مكان واحد. وهي ليست إشارة شاملة إلى بناء جملة أوامر معينة. وتغطي هذه الوثيقة الأساسيات، ولكنها لا تدخل في موضوعات متقدمة مثل التفرع والتكرار، كما أنها لا تناقش الطرق التي تستخدم بها المشاريع الكبيرة التحكم في الإصدار بشكل مختلف عن التحكم في الإصدارات الصغيرة.
مقدمة في التحكم في الإصدار.
إذا كنت على دراية بالتحكم في الإصدار، يمكنك تخطي هذا القسم أو تخطيه.
يخدم نظام التحكم في الإصدار الأغراض التالية، من بين أمور أخرى.
التحكم في النسخة تمكن العديد من الناس للعمل في وقت واحد على مشروع واحد. يقوم كل شخص بتحرير نسخته الخاصة من الملفات ويختار متى يشارك تلك التغييرات مع بقية أعضاء الفريق. وبالتالي، فإن التعديلات المؤقتة أو الجزئية من قبل شخص واحد لا تتداخل مع عمل شخص آخر.
كما يتيح التحكم في الإصدار لشخص واحد لاستخدام أجهزة كمبيوتر متعددة للعمل على مشروع، لذلك فمن قيمة حتى لو كنت تعمل من قبل نفسك. التحكم في الإصدار يدمج العمل المنجز في وقت واحد من قبل أعضاء الفريق المختلفة. في معظم الحالات، يمكن دمج التعديلات على ملفات مختلفة أو حتى نفس الملف دون فقدان أي عمل. في حالات نادرة، عندما يقوم شخصان بإجراء تعديلات متعارضة على نفس السطر من ملف، ثم يطلب نظام التحكم في الإصدار المساعدة الإنسانية في تقرير ما يجب القيام به. يتيح التحكم في الإصدار الدخول إلى الإصدارات السابقة من المشروع. هذا هو التأمين ضد حوادث الكمبيوتر أو فقدان البيانات. إذا ارتكبت خطأ، يمكنك الرجوع إلى إصدار سابق. يمكنك إعادة إنتاج وفهم تقرير الأخطاء في إصدار سابق من البرنامج. يمكنك أيضا التراجع عن تعديلات محددة دون أن تفقد كل العمل الذي تم القيام به في الوقت نفسه. في أي جزء من ملف، يمكنك تحديد متى ولماذا ومن الذي تم تحريره من أي وقت مضى.
المستودعات ونسخ العمل.
يستخدم عنصر تحكم الإصدار مستودع تخزين (قاعدة بيانات للتغييرات) ونسخة عمل حيث تقوم بعملك.
نسخة العمل الخاصة بك (وتسمى أحيانا الخروج) هو نسختك الشخصية من جميع الملفات في المشروع. إجراء تعديلات تعسفية على هذه النسخة، دون التأثير على زملائك في الفريق. عندما تكون راضيا عن تعديلاتك، فإنك تلتزم بتغييراتك إلى مستودع تخزين.
مستودع التخزين هو قاعدة بيانات لكافة التعديلات و / أو الإصدارات السابقة (لقطات) من المشروع الخاص بك. من الممكن أن يحتوي المستودع على تعديلات لم يتم تطبيقها بعد على نسخة العمل الخاصة بك. يمكنك تحديث نسخة العمل الخاصة بك لدمج أية تعديلات أو إصدارات جديدة تمت إضافتها إلى المستودع منذ آخر مرة قمت بتحديثها. انظر الرسم البياني على اليمين.
في أبسط حالة، تحتوي قاعدة البيانات على تاريخ خطي: ​​يتم إجراء كل تغيير بعد سابقتها. وهناك احتمال آخر هو أن المستخدمين المختلفين أجروا تعديلات في وقت واحد (وهذا ما يسمى أحيانا & لدكو؛ المتفرعة & رديقو؛). في هذه الحالة، ينقسم تاريخ الإصدار ثم يندمج مرة أخرى. تعطي الصورة أدناه أمثلة.
التحكم في الإصدار الموزعة والمركزي.
هناك نوعان عامان من مراقبة الإصدار: مركزي وموزع. التحكم في الإصدار الموزعة هو أكثر حداثة، يعمل بشكل أسرع، هو أقل عرضة للأخطاء، والمزيد من الميزات، وغير إلى حد ما أكثر تعقيدا لفهم. سوف تحتاج إلى أن تقرر ما إذا كان التعقيد الزائد جدير بالاهتمام بالنسبة لك.
بعض أنظمة التحكم في النسخة الشعبية هي جيت (موزعة)، ميركوريال (موزعة)، و سوبفيرزيون (مركزية).
والفرق الرئيسي بين التحكم المركزي في الإصدار والموزع هو عدد المستودعات. في التحكم في النسخة المركزية، هناك مستودع واحد فقط، وفي التحكم في الإصدار الموزع، هناك مستودعات متعددة. وفيما يلي صور للترتيبات النموذجية:
في التحكم في النسخة المركزية، يحصل كل مستخدم على نسخة العمل الخاصة به، ولكن هناك مستودع مركزي واحد فقط. بمجرد الالتزام، فمن الممكن لزملائك في العمل لتحديث ورؤية التغييرات الخاصة بك. لكي يرى الآخرون تغييراتك، يجب أن يحدث أمران:
في السيطرة نسخة الموزعة، يحصل كل مستخدم له أو لها مستودع الخاصة ونسخة العمل. بعد ارتكاب، لا يستطيع الآخرون الوصول إلى التغييرات الخاصة بك حتى تقوم بدفع التغييرات الخاصة بك إلى مستودع التخزين المركزي. عندما تقوم بتحديث، لا تحصل على تغييرات الآخرين إلا إذا كنت قد سحبت لأول مرة تلك التغييرات في مستودع التخزين الخاص بك. لكي يرى الآخرون تغييراتك، يجب أن تحدث 4 أشياء:
لاحظ أن أوامر الالتزام وتحديث تحدث فقط التغييرات بين نسخة العمل والمستودع المحلي، دون التأثير على أي مستودع آخر. على النقيض من ذلك، أوامر دفع وسحب نقل التغييرات بين المستودع المحلي والمستودع المركزي، دون التأثير على نسخة العمل الخاصة بك.
في بعض الأحيان مريحة لأداء كل من السحب والتحديث، للحصول على جميع أحدث التغييرات من مستودع مركزي في نسخة عملك. أوامر جلب هغ و جيت سحب تفعل كل من سحب والتحديث. (وبعبارة أخرى، سحب جيت لا يتبع الوصف أعلاه، و جيت دفع و جيت سحب الأوامر ليست متماثلة دفع جيت كما هو موضح أعلاه ويؤثر فقط على المستودعات، ولكن سحب جيت هو مثل هغ جلب: فإنه يؤثر على كل من المستودعات والعمل نسخ، ينفذ الاندماجات، الخ)
يسمح نظام التحكم في الإصدار لعدة مستخدمين بتحرير نسخهم الخاصة من المشروع في وقت واحد. وعادة ما يكون نظام التحكم في الإصدار قادرا على دمج التغييرات المتزامنة من قبل مستخدمين مختلفين: بالنسبة إلى كل سطر، يكون الإصدار النهائي هو الإصدار الأصلي إذا لم يعدله أي مستخدم، أو كان الإصدار الذي تم تعديله إذا قام أحد المستخدمين بتحريره. يحدث نزاع عندما يقوم مستخدمان مختلفان بإجراء تغييرات متزامنة ومختلفة على نفس السطر من الملف. في هذه الحالة، لا يمكن لنظام التحكم في الإصدار أن يقرر تلقائيا أي من التعديلين لاستخدام (أو مجموعة منها، أو لا!). مطلوب التدخل اليدوي لحل النزاع.
ودقوو]؛ في وقت واحد وردقوو]؛ فإن التغييرات لا تحدث بالضرورة في نفس الوقت بالضبط. يعتبر التغيير 1 والتغيير 2 متزامنين إذا:
المستخدم أ يجعل التغيير 1 قبل قيام المستخدم A بتحديث يجلب التغيير 2 إلى نسخة عمل المستخدم A، ويجعل المستخدم B التغيير 2 قبل قيام المستخدم B بتحديث يجلب التغيير 1 إلى نسخة عمل المستخدم B.
في نظام التحكم في الإصدار الموزع، هناك عملية واضحة، تسمى دمج، تجمع بين التعديلات المتزامنة من قبل مستخدمين مختلفين. في بعض الأحيان دمج يكمل تلقائيا، ولكن إذا كان هناك تعارض، دمج طلبات مساعدة من المستخدم عن طريق تشغيل أداة دمج. في التحكم في النسخة المركزية، يحدث الدمج ضمنا في كل مرة تقوم بتحديث.
فمن الأفضل تجنب الصراع بدلا من حله في وقت لاحق. توفر أفضل الممارسات أدناه طرقا لتفادي النزاعات، مثل أن يتقاسم زملاؤهم تغييراتهم مع بعضهم البعض.
دمج التغييرات.
تذكر أن هذا التحديث يغير نسخة العمل بتطبيق أية تعديلات تظهر في المستودع ولكن لم يتم تطبيقها بعد على نسخة العمل.
في نظام التحكم في النسخة المركزية، يمكنك تحديث (على سبيل المثال، تحديث سفن) في أي لحظة، حتى إذا كان لديك تغييرات غير ملتزم بها محليا. يدمج نظام التحكم في الإصدار التغييرات غير المكتملة في نسخة العمل مع تلك الموجودة في المستودع. قد يجبرك هذا على حل التعارضات. فإنه يفقد أيضا مجموعة بالضبط من التعديلات التي قمت بها، منذ ذلك الحين لديك فقط النسخة مجتمعة. الاندماج الضمني الذي يقوم به نظام التحكم في النسخة المركزية عند التحديث هو مصدر شائع للارتباك والأخطاء.
في نظام التحكم في الإصدار الموزع، إذا كان لديك تغييرات غير ملتزم بها في نسخة العمل الخاصة بك، ثم لا يمكنك تشغيل التحديث (أو أوامر أخرى مثل جيت سحب أو هغ جلب أن أنفسهم استدعاء التحديث). والسبب هو أنه سيكون مربكا وعرضة للخطأ لنظام التحكم في النسخة لمحاولة تطبيق التعديلات، عندما كنت في منتصف التحرير. سوف تتلقى رسالة خطأ مثل.
قبل أن يسمح لك بتحديث، يجب عليك أولا ارتكاب أي تغييرات قمت بها (يجب أن تستمر التحرير حتى تكون كاملة منطقيا أولا، بطبيعة الحال). الآن، تحتوي قاعدة بيانات مستودع التخزين على تعديلات متزامنة & مداش؛ تلك التي قمت بها للتو، وتلك التي كانت موجودة بالفعل وكنت تحاول تطبيق على نسخة العمل الخاصة بك عن طريق تشغيل التحديث. يجب دمج هاتين المجموعتين من التعديلات، ثم تنفيذ النتيجة. (في ميركوريال، سوف عادة تشغيل فقط هغ الجلب، الذي يؤدي الدمج والالتزام بالنسبة لك.) السبب الذي تحتاج إلى ارتكاب هو أن عملية دمج يتم تسجيلها من قبل نظام التحكم في الإصدار، من أجل تسجيل أي الخيارات التي التي قمت بها أثناء الدمج. وبهذه الطريقة، يحتوي نظام التحكم في الإصدار على تاريخ كامل ويسجل بوضوح الفرق بين إجراء التعديلات الخاصة بك ودمج العمل في وقت واحد.
أفضل ممارسات التحكم في الإصدار.
تنطبق المشورة في هذا القسم على كل من التحكم المركزي والموزع في النسخة.
ولا تشمل هذه الممارسات الفضلى الحالات الغامضة أو المعقدة. بمجرد أن تتقن هذه الممارسات، يمكنك العثور على المزيد من النصائح والحيل في مكان آخر على شبكة الإنترنت.
استخدم رسالة ارتباط وصفية.
يستغرق سوى لحظة لكتابة رسالة ارتكاب جيدة. وهذا مفيد عندما يقوم شخص ما بفحص التغيير، لأنه يشير إلى الغرض من التغيير. هذا مفيد عندما يبحث شخص ما عن تغييرات تتعلق بمفهوم معين، لأنها يمكن البحث من خلال ارتكاب الرسائل.
جعل كل تلتزم وحدة منطقية.
وينبغي أن يكون لكل التزام هدف واحد وينبغي أن ينفذ هذا الغرض تنفيذا تاما. هذا يجعل من السهل تحديد موقع التغييرات المتعلقة ببعض ميزة معينة أو إصلاح الأخطاء، لنرى كل منهم في مكان واحد، للتراجع عنها، لتحديد التغييرات المسؤولة عن سلوك عربات التي تجرها الدواب، وما إلى ذلك فائدة محفوظات التحكم في الإصدار هو للخطر إذا ارتكب واحد يحتوي على التعليمات البرمجية التي تخدم أغراض متعددة، أو إذا تم نشر التعليمات البرمجية لغرض معين عبر التزامات مختلفة متعددة.
خلال مهمة واحدة، قد تلاحظ مشكلة أخرى وتريد إصلاحه أيضا. قد تحتاج إلى ارتكاب ملف واحد في كل مرة & مداش؛ الأمر كوميت من كل نظام التحكم الإصدار يدعم هذا.
جيت: جيت كوميت file1 file2 يرتكب الملفين المسماة.
بدلا من ذلك، جيت إضافة file1 file2 & لدكو؛ مراحل & رديقو؛ الملفين اسمه، مما تسبب في أن تكون ملتزمة من قبل الأمر جيت ارتكاب التالية التي يتم تشغيلها دون أي وسيطات اسم الملف. الزئبقي: هغ ارتكاب file1 file2 يرتكب الملفين اسمه، و هغ ارتكاب. يرتكب كافة الملفات التي تم تغييرها في الدليل الحالي. التخريب: سفن ارتكاب file1 file2 يرتكب الملفين اسمه، و سفن ارتكاب. يرتكب كافة الملفات التي تم تغييرها في الدليل الحالي.
إذا كان ملف واحد يحتوي على تغييرات تخدم أغراضا متعددة، فقد تحتاج إلى حفظ جميع التعديلات الخاصة بك، ثم إعادة إدخالها في قطع منطقية، والالتزام كما تذهب. هنا هو وسيلة التكنولوجيا المنخفضة للقيام بذلك. كل نظام مراقبة الإصدار لديها أيضا آليات أكثر تطورا لدعم هذه العملية المشتركة.
جيت: موف ميفيل إلى موقع مؤقت آمن، ثم قم بتشغيل جيت ميفيل لاستعادة ميفيل إلى حالته غير المعدلة (نفس ما هو موجود في المستودع).
تحتوي جيت على طرق أكثر تطورا للقيام بذلك، مثل وضع بعض التغييرات في ملف معين على الفهرس (المعروف أيضا باسم ذاكرة التخزين المؤقت)، أو عدم إجراء بعض التغييرات عليها. مرة واحدة كنت أكثر راحة مع جيت، يجب أن تتعلم عن هذه الآليات. ميركوريال: هغ عودة ميفيل نسخ ميفيل الحالي ل ميفيل. orig ويستعيد ميفيل إلى حالته غير المعدلة (نفس ما هو في مستودع). التخريب: نقل ميفيل إلى موقع مؤقت آمن، ثم قم بتشغيل تحديث ميفيل لاستعادة ميفيل إلى حالته غير المعدلة (نفس ما هو موجود في مستودع التخزين).
في بعض الأحيان يكون من الصعب جدا فصل كل تغيير في التزامه. ومع ذلك، فإن الهدف من تحقيق هذا الهدف (وتحقيقه غالبا) سيخدمك بشكل جيد على المدى الطويل.
تجنب االلتزامات العشوائية.
وكقاعدة عامة، أنا لا تشغيل جيت ارتكاب - a (أو هغ ارتكاب أو سفن ارتكاب) دون توفير ملفات محددة لارتكاب. إذا لم تزود أسماء الملفات، فإن هذه الأوامر تلزم كل ملف تم تغييره. قد تكون لديك تغييرات لم تنوي إجراءها بشكل دائم (مثل تغييرات التصحيح المؤقتة)؛ حتى إن لم يكن، وهذا يخلق واحد تلتزم أغراض متعددة.
عندما أريد أن أتعهد بتغييراتي، لتجنب ارتكابها عن طريق الخطأ أكثر مما كنت أقصده، أعمل دائما على تنفيذ الأوامر التالية:
دمج التغييرات الأخرى في كثير من الأحيان.
العمل مع أحدث ما يصل إلى تاريخ نسخة من الملفات ممكن. وهذا يعني أنه يجب تشغيل جيت سحب، جيت سحب - r، هغ جلب، أو سفن التحديث بشكل متكرر جدا. أفعل هذا كل يوم، على كل من أكثر من 100 المشاريع التي أنا مع.
عندما يقوم شخصان بإجراء تعديلات متعارضة في وقت واحد، فإن التدخل اليدوي مطلوب لحل النزاع. ولكن إذا كان شخص آخر قد أكملت بالفعل تغيير قبل أن تبدأ حتى تحريرها، هو مضيعة ضخمة من الوقت لخلق، ثم حل يدويا، والصراعات. كنت قد تجنبت الصراعات إذا كانت نسخة العمل الخاصة بك قد احتوت بالفعل تغييرات الشخص الآخر قبل أن تبدأ في تحرير.
مشاركة التغييرات بشكل متكرر.
بعد الالتزام بالتغييرات لوحدة عمل كاملة ومنطقية، يجب عليك مشاركة تلك التغييرات مع زملائك في أقرب وقت ممكن (عن طريق إجراء دفعة أو دفع هغ). وطالما أن تغييراتك لا تزعزع استقرار النظام، فلا تحتفظ بالتغييرات محليا أثناء إجراء تغييرات غير ذات صلة. والسبب هو نفس السبب في دمج تغييرات الآخرين في كثير من الأحيان.
هذه النصيحة مختلفة قليلا عن التحكم في النسخة المركزية مثل التخريب. هذه النصيحة تترجم إلى تشغيل سفن ارتكاب، وكلاهما يرتكب وتبادل التغييرات الخاصة بك، في كثير من الأحيان ممكن. ومع ذلك، كن حذرا لأنك لا يمكن أن تجعل التزامات خاصة التي لا تؤثر على زملائك في الفريق.
التنسيق مع زملاء العمل الخاص بك.
يمكن لنظام التحكم في الإصدار غالبا دمج التغييرات التي قام بها أشخاص مختلفون في وقت واحد. ومع ذلك، عندما شخصين تحرير نفس السطر، ثم وهذا هو الصراع الذي يجب على الشخص حل يدويا. لتجنب هذا العمل الشاق، وعرضة للخطأ، يجب أن نسعى جاهدين لتجنب الصراعات.
If you plan to make significant changes to (a part of) a file that others may be editing, coordinate with them so that one of you can finish work (commit and push it) before the other gets started. This is the best way to avoid conflicts. A special case of this is any change that touches many files (or parts of them), which requires you to coordinate with all your teammates.
Remember that the tools are line-based.
Version control tools record changes and determine conflicts on a line-by-line basis. The following advice applies to editing marked-up text (LaTeX, HTML, etc.). It does not apply when editing WYSIWYG text (such as a plain text file), in which the intended reader sees the original source file.
Never refill/rejustify paragraphs. Doing so changes every line of the paragraph. This makes it hard to determine, later, what part of the content changed in a given commit. It also makes it hard for others to determine which commits affected given content (as opposed to just reformatting it). If you follow this advice and do not refill/rejustify the text, then the LaTeX/HTML source might look a little bit funny, with some short lines in the middle of paragraphs. But, no one sees that except when editing the source, and the version control information is more important.
Do not write excessively long lines; as a general rule, keep each line to 80 characters. The more characters are on a line, the larger the chance that multiple edits will fall on the same line and thus will conflict. Also, the more characters, the harder it is to determine the exact changes when viewing the version control history. As another benefit to authors of the document, 80-character lines are also easier to read when viewing/editing the source file.
Don't commit generated files.
Version control is intended for files that people edit. Generated files should not be committed to version control. For example, do not commit binary files that result from compilation, such as. o files or. class files. Also do not commit. pdf files that are generated from a text formatting application; as a rule, you should only commit the source files from which the. pdf files are generated.
Generated files are not necessary in version control; each user can re-generate them (typically by running a build program such as make or ant ). Generated files are prone to conflicts. They may contain a timestamp or in some other way depend on the system configuration. It is a waste of human time to resolve such uninteresting conflicts. Generated files can bloat the version control history (the size of the database that is stored in the repository). A small change to a source file may result in a rather different generated file. Eventually, this affects performance of the version control system.
This is a particular problem when the generated file is binary. Version control systems can concisely record the differences between two versions of a textual file (usually the differences are much smaller than the file itself). However, version control systems have to store each version of a binary file in its entirety.
To tell your version control system to ignore given files, create a top-level. gitignore or. hgignore file, or set the svn:ignore property.
Understand your merge tool.
The least pleasant part of working with version control is resolving conflicts. If you follow best practices, you will have to resolve conflicts relatively rarely.
You are most likely to create conflicts at a time you are stressed out, such as near a deadline. You do not have time, and are not in a good mental state, to learn a merge tool. So, you should make sure that you understand your merge tool ahead of time. When an actual conflict comes up, you don't want to be thrown into an unfamiliar UI and make mistakes. Practice on a temporary repository to give yourself confidence.
A version control system lets you choose from a variety of merge programs (example: Mercurial merge programs). Select the one you like best. If you don't want an interactive program to be run, you can configure Mercurial to attempt the merge and write a file with conflict markers if the merge is not successful.
Obtaining your copy.
Obtaining your own working copy of the project is called "cloning" or "checking out":
Use your version control's documentation to learn how to create a new repository ( hg init , git init , or svnadmin create ).
Distributed version control best practices.
Typical workflow.
The typical workflow when using Git (or Mercurial) is:
git pull (or hg fetch ) As many times as desired (but usually very few times): Make local edits Examine the local edits: git status and git diff (or hg status and hg diff git commit (or hg commit ) git pull or git pull - r (or hg commit ) git pull or git pull - r (or hg commit ) git push (or hg push )
Note that an invocation of git pull or hg fetch may force you to resolve a conflict.
That's pretty much all you need to know, besides how to clone an existing repository.
In Mercurial, use hg fetch , not hg pull.
(This tip is specific to Mercurial. In Git, just use git pull . Git's pull acts similarly to Mercurial's fetch .)
I never run hg pull . Instead, I use hg fetch . It is the most effective way to get everyone else's changes into my working copy. The hg fetch command is like hg pull then hg update , but it is even more useful. The actual effect of hg fetch is:
To enable the hg fetch command, add the following to your $HOME/.hgrc file or equivalent:
There is nothing after the = in fetch = .
Don't force it.
Git or Mercurial occasionally refuses to do a particular action, such as pushing to a remote repository when you have not yet pulled all its changes. For example, Mercurial indicates this problem by outputting:
Mercurial suggests that you merge the changes — the best way to do this is with hg fetch (not hg merge , then you can try again to push. Mercurial also notes that you can perform the operation (even though it is not recommended) by using the - f or --force command-line option. Never use - f or --force : doing so is likely to cause extra work for your team, such as making multiple people perform a merge.
Merging when you have uncommitted changes.
As explained above, you cannot update until you commit and merge . You will see an error message like.
But, sometimes you really want to incorporate others' changes even though your changes are not yet in a logically consistent state and ready to commit to your local repository.
A low-tech solution is to revert your changes with hg revert or the analogous command for other version control systems, as described above. Now, you can git pull or hg fetch , but you will have to manually re-do the changes that you moved aside. There are other, more sophisticated ways to do this as well (for Mecurial, see the Mercurial FAQ; for Git, use git stash ).
Caching your password.
SVN (Subversion) automatically caches your password. You have to type the password only the first time.
Here are two ways to have Mercurial remember/cache your password so you don't have to type it every time.
In your global. hgrc file, add this section:
Email notification.
It's a good idea to set up email notification. Then, every time someone pushes (in distributed version control) or commits (in centralized version control) all the relevant parties get an email about the changes to the central server.
The diffs in Mercurial's email notifications can be confusing. When sending one message per push (that is, when using the changegroup. notify setting), the diff in the email shows all the differences in all the changesets that you pushed. However, some of these changesets might be merge changesets resulting from hg merge or hg fetch . The changes in a merge changeset were already seen by the mailing list when the original author pushed his/her changes, and combining them all together obscures the new changes that appear for the first time in this push (which is, to a first approximation, everything but merges).
To solve this problem, configure the repository's hgrc file as follows:

Version Management.
Version Management also called Version Control or Revision Control, is a means to effectively track and control changes to a collection of related entities. The term "Versioning" is also sometimes used but the difference is that "Versioning" typically refers to when someone manually applies a version number or label to something for easier communication or simplification such as "draft", "beta", or "1.0". In the context of an information solution version control is most often used to track and control changes to source code. It is a very important tool within an overall life cycle management strategy for information solutions.
Even though it is most often used for source code, in reality, there are many other entities within an information solution to which version control can and where practical be applied. This is especially true if those entities are stored within text-based files or if they can be exported to and imported from text-based files (e. g., configuration settings stored in a database). These additional entities include but are not necessarily limited to the following:
configuration settings (.conf,.cfg,.ini, etc.) templates (e. g., web page layouts, forms, etc.) rules (e. g., access, permissions, processing, filtering, scheduling, etc.) shared inclusions (e. g., headers, footers, menus, etc.) documentation (e. g., technical specs, user guides, operations guides, etc.) web sites.
Over the years many different version control systems have been developed, especially in the areas of source code management and document management. These systems may be commercial or open-source and often run as stand-alone applications; however, some software applications/suites have version control embedded as an essential feature (e. g., SAP).
Traditionally version control systems have relied upon a central repository for storing and tracking changes to managed entities (e. g., CVS, SVN, etc.). For these systems individual users check out portions of the central repository into their own local workspaces where they make the desired changes. Once the changes are ready they commit those changes back into the central repository.
In recent years distributed version control systems have been developed wherein there are multiple peer repositories, any one of which could potentially act as the central repository (e. g., Git). For these systems individual users get a complete copy of a repository (i. e., clone it) and store it locally. When making changes they check out entities from their local repository into a local workspace where they make the desired changes. Once the changes are ready they commit those changes back into their local repository. Those changes are then pushed/pulled into the original repository to be available to other team members.
Collaborative environments have also been developed (e. g., GForge, GitHub, GitLab, etc.) around version control systems to facilitate a team-based approach to the life cycle management of applications. These environments generally provide the means to establish collaborative projects which include central repositories, issue tracking/management, and threaded discussions/forums. UNL IS currently uses GitLab for its collaborative development environment.
Key benefits of version control, especially in the area of source code, include:
organized, coordinated management of changes to software assets by one or many individuals, some of whom may be geographically dispersed organized, coordinated management of changes to software assets for emergency hot-fixes, routine maintenance, upgrades, and new features with potentially overlapping development timeframes (e. g., work on new features occurs simultaneously with work on routine maintenance and/or hot-fixes) an auditable change history (e. g., what changed, when, and by whom) a reliable master copy of what assets are currently in production a reliable master copy of assets from which to build and/or configure the production environment reliable copies of previous production versions of assets ability to see the specific differences between distinct versions of a given asset.
Version control systems are essentially tools and tools by themselves are not sufficient for effective version management; you also need a well-defined version management process. To see a very good example of a version management process for source code that utilizes Git click here.
Best Practice : All source code maintained by ITS personnel must be managed within an authorized version management system.
Best Practice : Where practical other versionable entities within an information solution besides source code should be managed within an authorized version management system.

No comments:

Post a Comment