هل يجب أن أقوم بتخزين كافة المشاريع في مستودع واحد أم في عدة مستودعات؟

StackOverflow https://stackoverflow.com/questions/130447

سؤال

أستخدم حاليًا TortoiseSVN لإدارة بعض المشاريع التي أقوم بها حاليًا.عندما قمت بنقل كل شيء لأول مرة إلى التحكم بالمصادر، لم أكن متأكدًا حقًا من كيفية وضع كل شيء، لذا انتهى بي الأمر بوضع كل مشروع في مستودعه الخاص.

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

في الوقت الحالي، لا يشترك أي منهم في رمز مشترك، لكن قد يحدث ذلك في المستقبل.هل سيكون من الأسهل إدارتها إذا اجتمعوا جميعًا معًا.

شكرًا.

هل كانت مفيدة؟

المحلول

يعتمد إلى حد ما على ما تعنيه بكلمة "مشروع".

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

إذا كان "المشروع" يعني "مهمة من الفصل الدراسي"، أو "النصوص البرمجية التي أستخدمها لتشغيل جهاز TiVo الخاص بي"، أو "التقدم الذي أحرزته في تعلم لغة جديدة"، فإن إنشاء مستودعات لكل مشروع يبدو غير ضروري بعض الشيء بالنسبة لي.ثم مرة أخرى، لا يكلف أي شيء أيضًا.لذا أعتقد أنني سأقول لا تغير ما تفعله.إلا إذا كنت تريد حقًا تجربة إعادة تنظيم المستودعات، ففي هذه الحالة يفعل غير ما تفعله :-)

ومع ذلك، إذا كنت تقصد بكلمة "مشروع" مشروعًا برمجيًا "حقيقيًا"، مع وصول عام إلى المستودع، فأعتقد أن عمليات إعادة الشراء المنفصلة لكل مشروع هي المنطقية:ويرجع ذلك جزئيًا إلى أنه يقسم الأشياء بشكل نظيف ويتوسع كل مشروع بشكل مستقل، ولكن أيضًا لأنه ما يتوقع الناس رؤيته.

تعد مشاركة التعليمات البرمجية بين مستودعات منفصلة مشكلة أقل مما قد تعتقد، نظرًا لأن svn لديه ميزة "svn:externals" الرائعة إلى حد ما.يتيح لك ذلك توجيه دليل مستودعك إلى دليل في مستودع آخر، والتحقق من تلك الأشياء تلقائيًا مع الأشياء الخاصة بك.راجع، كما هو الحال دائمًا، كتاب SVN للحصول على التفاصيل.

نصائح أخرى

سأقوم بتخزينها في نفس المستودع.إنه نوع من الإتقان.بالإضافة إلى سبب أهمية التكامل المستمر وما إلى ذلك - يمكنك دائمًا سحب مجلد معين من المستودع.

كما أنها أسهل في الإدارة - حسابات لمستودع واحد، والوصول إلى سجلات مستودع واحد وما إلى ذلك.

قاعدتي الأساسية هي دمج الأشياء التي يتم تسليمها معًا.بمعنى آخر، إذا كان بإمكانك تسليم المشروع X والمشروع Y بشكل منفصل، فقم بوضعهما في اتفاقيات منفصلة.

نعم، يعني هذا في بعض الأحيان أن لديك ريبو ضخم لمشروع يحتوي على عدد كبير من المكونات، ولكن يمكن للأشخاص العمل على أشجار فرعية من الريبو وهذا يجبرهم على التفكير في "المشروع بأكمله" عندما يرتكبون تغييرات على الريبو.

سأحتفظ بكل مشروع في مستودعه الخاص، منفصلًا عن جميع المشاريع الأخرى.سيعطي هذا لكل مشروع تاريخه الخاص من الالتزامات.لن يؤثر التراجع عن مشروع واحد على المشاريع الأخرى.

أنا شخصياً أفضّل كل مشروع في مستودعه الخاص

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

إذا كنت تريد استخدام مستودع منفصل لكل مشروع، فيمكنك استخدام العلامة الخارجية للإشارة إلى مستودعات أخرى - وبالتالي مشاركة الكود.

طالما أن كل مشروع يحتوي على/جذع/علامات و/فروع فأنت جيد.التكامل المستمر السليم هو المعيار هنا.

نعم، ضع كل شيء في التحكم بالمصادر.

إذا كنت تستخدم SVN، فاحتفظ بالمشاريع في مستودعها الخاص - svn بطيء، ويصبح أبطأ.

إذا كانت مشاريعك مستقلة، فمن الجيد الاحتفاظ بها في مستودعات منفصلة.إذا كانوا يشتركون في المكونات، فقم بتجميعها معًا.

بالنسبة إلى Subversion، أقترح وضع كل شيء في نفس المستودع؛إن العبء الإداري لإعداد مستودع جديد مرتفع للغاية بحيث لا يحتاج إلى تفكير، لذلك من المرجح ألا تقوم بإصدار شيء ما وتندم عليه لاحقًا.يوفر Subversion الكثير من عناصر التحكم في الوصول الدقيقة إذا كنت بحاجة إلى تقييد الوصول إلى جزء من مستودعك.

عندما أبدأ في ترحيل مشاريعي إلى Mercurial، قمت بالتبديل إلى إنشاء مستودع لكل مشروع، لأن الأمر يتطلب فقط "hg init" لإنشاء مستودع جديد في مكانه، ويمكنني استخدام غابة زئبق ملحق لتنفيذ العمليات بسهولة على المستودعات المتداخلة.يحتوي Subversion على svn:externals، وهي متشابهة إلى حد ما، ولكنها تتطلب المزيد من النفقات الإدارية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top