سؤال

ما هو أفضل؟

أ:

server:1080/repo/projectA/trunk/...
                          branches/branch1
                          branches/branch2
                          branches/branch3
                          tags/tag1/...
                          tags/tag2/...
server:1080/repo/projectB/trunk/...
                          branches/branch1
                          branches/branch2
                          branches/branch3
                          tags/tag1/...
                          tags/tag2/...

ب:

server:1080/repo/trunk/projectA/...
                 branches/projectA/branch1
                 branches/projectA/branch2
                 branches/projectA/branch3
                 tags/projectA/tag1/...
                 tags/projectA/tag2/...
server:1080/repo/trunk/projectB/trunk/...
                 branches/projectB/branch1
                 branches/projectB/branch2
                 branches/projectB/branch3
                 tags/projectB/tag1/...
                 tags/projectB/tag2/...

ما هي بنية المستودع التي تستخدمها ولماذا؟

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

المحلول

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

نصائح أخرى

نحن نستخدم A، لأن الآخر لم يكن له معنى بالنسبة لنا.لاحظ أن "المشروع" فيما يتعلق بـ SVN ليس بالضرورة مشروعًا واحدًا، ولكن قد يكون عدة مشاريع تنتمي معًا (أي.ما الذي ستضعه في الحل في Visual Studio).بهذه الطريقة، يكون لديك أي شيء ذي صلة مجمعًا معًا.جميع الفروع والعلامات وجذع مشروع معين.يجعل الشعور بالكمال بالنسبة لي.

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

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

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

أود أن أقترح الخيار ج:

server:1080/projectA/trunk/...
                     branches/branch1
                     branches/branch2
                     branches/branch3
                     tags/tag1/...
                     tags/tag2/...
server:1080/projectB/trunk/...
                     branches/branch1
                     branches/branch2
                     branches/branch3
                     tags/tag1/...
                     tags/tag2/...

أفضل الاحتفاظ بمشاريع منفصلة في مستودعات منفصلة.استخدام svn:الخارجية يجعل من السهل إدارة مشاريع مكتبة التعليمات البرمجية المشتركة بين مشروعين تطبيقيين أو أكثر.

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

نحن نستخدم

/repos/projectA/component1/trunk - branches - tags
/repos/projectA/component2/trunk - branches - tags
/repos/projectB/component3/trunk - branches - tags
/repos/projectB/component4/trunk - branches - tags

الذي بدأت أشعر بالأسف عليه.ينبغي أن يكون أكثر تملقا.هذا سيكون أفضل.

/repos/projectA/trunk - branches - tags
/repos/projectB/trunk - branches - tags
/repos/component1/trunk - branches - tags
/repos/component2/trunk - branches - tags
/repos/component3/trunk - branches - tags
/repos/component4/trunk - branches - tags

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

بالنظر إلى هذا الجدول الزمني، هل يجب أن تظهر QUUX في ثلاثة مستودعات للمشروع؟لا، QUUX مستقلة عن أي مشروع معين.صحيح أن المشاريع تحتوي على منتجات عمل (مستندات، وأعمال متراكمة، وما إلى ذلك) تشكل جزءًا من إنجاز العمل، ولكنها ليست الهدف الفعلي للعمل.ومن هنا جاءت مستودعات "projectX" لتلك المواد - وهي أشياء لن يهتم بها أحد بعد انتهاء المشروع.

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

أنا شخصياً أستخدم بنية المستودع التالية:

/project
    /trunk
    /tags
        /builds
            /PA
            /A
            /B
        /releases
            /AR
            /BR
            /RC
            /ST
    /branches
        /experimental
        /maintenance
            /versions
            /platforms
        /releases

هنالك أيضا رسم بياني توضيح كيفية استخدام تلك الدلائل.هناك أيضًا طريقة محددة لترقيم الإصدارات أستخدمها.يلعب دورًا مهمًا في هيكلة المستودع.لقد قمت مؤخرًا بتطوير تدريب مخصص لإدارة تكوين البرامج حيث أصف نهج ترقيم الإصدارات ولماذا يعتبر هيكل المستودع هذا هو الأفضل.هنا شرائح العرض.

هناك أيضا بلدي إجابة على ال سؤال حول "مستودعات SVN المتعددة مقابل مستودع شركة واحدة".قد يكون من المفيد طالما أنك تتناول هذا الجانب من هيكلة المستودع في سؤالك.

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