في ذلك اليوم كانت هناك مقالة جميلة ، وإن كانت مثيرة للجدل - من فضلك ، توقف عن استخدام GitFlow! (وعشرات آخرين حول نفس الموضوع بعده).
كانت نقاطها الرئيسية:
- يتعارض GitFlow مع أطروحة "يجب أن تكون الفروع قصيرة الأجل".
هذا أمر مهم ، لأنه كلما قل عمر الفرع ، قل احتمال حدوث النزاعات (ليس فقط البوابة ، ولكن أيضًا منطقية) - يثني GitFlow عمليات إعادة التوطين لحفظ عمليات الدمج.
نعم ، يمكن حفظها من خلال تجديد الاشتراك ، لكن فرق Git Flow لا تفعل ذلك. - ينكر GitFlow نهج التسليم المتواصل ، معتقدًا أن كل إجراء تسليم يجب أن يتم من قبل مهندس تحرير ، وبشكل عام يمكنك أن ترى أنه يركز فقط على دورة إطلاق طويلة.
- GitFlow ليس صديقًا للخدمات الصغيرة على رأس المستودعات المتعددة (ومع ذلك ، ليس هناك الكثير للقيام به هنا ، إنها فكرة تنتهي دائمًا بشكل سيء)
لكن المشكلة مع GitFlow هي أنها ليست صديقة للمستودعات الأحادية أيضًا.
تعثرت بنفسي على هذا في عملية تصميم خطوط أنابيب CI: يتداخل GitFlow بشكل كبير عندما يتم تشغيله فوق مستودع واحد مع العديد من المخرجات ، على سبيل المثال ، عندما تكون كل من الواجهة الخلفية والواجهة الأمامية منفصلة في مستودع واحد - نظرًا لأنها تسمح لك بالالتزام بإطلاق الفروع ، يمكن أن تحدث التعارضات مع الدمج العكسي في حالة وجود أكثر من فرع إصدار واحد في كل مرة. نعم ، حتى لو كان واحدًا ، فإن الأمر سيء تمامًا - في مثل هذه الظروف ، من الضروري تصحيح آليات إصدار GitFlow من حيث المبدأ ، بحيث تعمل الإصدارات المنفصلة بطريقة أو بأخرى من الكيانات.
اذا مالعمل؟
ساعد كاتب المقالة الأصلية في تطوير علامات + ميزات تستند إلى الجذع - تقريبًا google google trunk ، ولكن ليس في الحقيقة. ولكن هذا لا يعني على الإطلاق أنك بحاجة إلى هذا النهج.
أولاً ، تحتاج إلى فهم الأولويات.
كيف تبدو إصداراتك؟
- ? , , , , ?
- ? , , WebSockets, . .
- ? LTS-, backport- ( , , 2016 ) ? canary beta-?
- Continuous Delivery?
?
- ( ) , ? design review merge/pull-request-, PR — 5 100 ?
- , ?
? , ?
, — . , flow , . Apache Kafka SQS — , , -, - , .
— . ( ) , , , , , , , .
, , — - . , JSON YAML, — , , .
, , , — , , — . , , . — , — .
flow
-, . , , ( ). , , , , , , , , v1 v2 .
, , . , , , CI, : .
— Continuous Delivery.
— , deliverables. - , , Google. — 10% - — -, .
. , :
CI-
deliverables:
- prestable/staging-
- alert- ( -)
- ( )
— flow, ,
, backport- — , . , (master/develop/trunk), , . git — cherry-picking. "" — , .
- ,
- , . JS — eslint-. Prettier ( ).
, 5-6 , — trunk-based development ( , ). — , , git - . Google , , , , . Facebook , , .
, Trunk-based — " ", , , . , CI/CD, :
feature flags — .
, .
. 2-3 , , ( , )
— merge queue, — , .
, , .
, - :
- github-flow
- CI,
- git-flow ( + )
- CD
- git-flow , CD, staging-,
- trunk-based
- trunk-based-
— . github-flow ( GitOps- — , ). , "". , , — .
, , , , .
Git — , , . , , .
إذا شعرت أن جهاز Git الخاص بك يؤلمك - فاكتب إلي ، سيسعدني تقديم المساعدة.