Develop Branch — bu Git Flow-dagi asosiy integratsiya tarmog'i bo'lib, unga release tayyorlashdan oldin barcha tugallangan feature tarmoqlari birlashtiriladi. Main-dan farqli o'laroq, develop eng yangi, ammo hali chiqarilmagan o'zgarishlarni o'z ichiga oladi — bu yerda jamoadagi barcha dasturchilarning kodi kunlik integratsiyasi amalga oshiriladi. Atlassian, 2024 ma'lumotlariga ko'ra, develop Git Flow-da majburiy tarmoqdir va jamoa uchun barqaror integratsiya muhitini ta'minlaydi.
Asosiy fikrlar
Develop Branch (rivojlanish tarmog'i) — Git Flow-dagi uzoq muddatli tarmoq bo'lib, barcha dasturchilarning kodini integratsiya qilish uchun markaziy tugun vazifasini bajaradi. Rivojlanish tugagandan va code review-dan o'tgandan so'ng, feature tarmoqlari unga birlashtiriladi.
Developdagi kod har doim release yaratishga tayyor holatda bo'ladi, garchi hali ishlab chiqarishga chiqarilmagan bo'lsa ham. Bu developdagi barcha funksiyalar review, test va integratsiya tekshiruvlaridan o'tgan, ammo hali o'z release siklini kutayotganini anglatadi.
Main-dan farqli o'laroq, har bir kod versiyasi release bo'lgan joyda, develop doimiy o'zgarishlar oqimini o'z ichiga oladi. Developdagi commitlar feature tarmoqlari birlashtirilishi bilan paydo bo'ladi, bu kuniga bir necha marta sodir bo'lishi mumkin.
Vincent Driessen, 2010 ma'lumotlariga ko'ra, develop muvaffaqiyatli branching modelining asosiy elementi hisoblanadi, chunki u qoralama ishni chiqarishga tayyor versiyalardan ajratadi.
Develop va main o'rtasidagi farqlarni tushunish Git Flow-da to'g'ri ishlash uchun juda muhimdir. Bu tarmoqlar turli funktsiyalarni bajaradi va barqarorlik uchun turli talablarga ega.
| Xususiyat | Develop | Main / Master |
|---|---|---|
| Maqsad | Yangi funksiyalarni integratsiya qilish | Barqaror release kodi |
| Barqarorlik | Yuqori (testlardan so'ng) | Maksimal (ishlab chiqarish) |
| Commit chastotasi | Kunlik (feature birlashtirish) | Release bo'yicha (har 1-4 hafta) |
| Tarmoq manbai | Undan feature yaratiladi | Undan hotfix yaratiladi |
| Birlashtirish | Feature-dan PR orqali | Release-dan merge orqali |
Develop va main ga bo'linish jamoaga doimiy ravishda yangi kodni integratsiya qilish imkonini beradi, ishlab chiqarish versiyasining barqarorligini xavf ostiga qo'ymasdan. Dasturchilar o'z kodlarini developda PR tasdiqlangandan so'ng darhol, hatto rasmiy releasedan oldin ham ko'rishlari mumkin.
Git Flow modelida develop feature tarmoqlari (o'zgarishlar manbai) va release tarmoqlari (chiqarishga tayyorgarlik) o'rtasida markaziy o'rinni egallaydi. Bu ierarxiyani tushunish samarali tarmoqlanishning asosidir.
Bunday struktura develop har doim barcha yangi funksiyalar bilan eng so'nggi kod versiyasini, main esa faqat tekshirilgan ishlab chiqarish kodini o'z ichiga olishini kafolatlaydi. Bu, ayniqsa, App Store va Google Play-da uzoq review siklga ega mobil loyihalar uchun muhimdir.
Develop feature, release va hotfix tarmoqlari o'rtasidagi markaziy bo'g'in sifatida ishlaydi. Birlashtirish yo'nalishlarini tushunish mojarolar va commitlarni yo'qotishning oldini olish uchun asosdir.
Kod sifati developda yuqori bo'lishi kerak, ammo mutlaq emas. Main-dan farqli o'laroq, har bir xato shoshilinch hotfixni anglatadigan joyda, develop releasedan oldin tuzatiladigan kichik kamchiliklarga yo'l qo'yadi.
Developga birlashtirishdan oldin kod uchun minimal talablar:
CI/CD pipeline-dagi avtomatik tekshiruvlar developga har bir pushda ishga tushishi kerak. Agar kompilyatsiya buzilsa, mas'ul dasturchi muammoni bir soat ichida tuzatishi yoki o'z commitini qaytarishi kerak.
GitHub Actions ning develop uchun sozlamasi har bir PR birlashtirishdan oldin avtomatik tekshiruvdan o'tishini kafolatlaydi. Oddiy pipeline kompilyatsiya, testlar va lintingni o'z ichiga oladi.
# GitHub Actions — birlashtirishdan so'ng developni tekshirish
name: Develop CI
on:
pull_request:
branches: [develop]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Unit tests
run: ./gradlew testDebug
- name: Lint
run: ./gradlew lint
- name: Build
run: ./gradlew assembleDebug
Developga birlashtirish integratsiya tarmog'ining barqarorligini saqlash uchun qat'iy qoidalarga bo'ysunishi kerak. Ushbu qoidalarning buzilishi mojarolarga, buzilgan kompilyatsiyalarga va jamoa vaqtining yo'qotilishiga olib keladi.
PR ning dolzarbligi qoidasi ayniqsa muhimdir. Agar feature tarmog'i bir hafta oldin yaratilgan bo'lsa va develop 50 commit oldinda bo'lsa, to'g'ridan-to'g'ri birlashtirish developda emas, balki PR kontekstida hal qilish yaxshiroq bo'lgan mojarolarga olib kelishi mumkin.
Branch protection rules (tarmoqni himoya qilish qoidalari) — GitHub, GitLab yoki Bitbucket darajasidagi sozlamalar bo'lib, developda noto'g'ri o'zgarishlarning oldini oladi. Ular hatto tasodifiy push ham integratsiya tarmog'ini buzmasligini kafolatlaydi.
Develop uchun tavsiya etilgan himoya qoidalari:
Develop himoyasini sozlash 10 daqiqa davom etadi, ammo buzilgan integratsiya tarmog'i bilan bog'liq haftalarca to'xtab qolishlarning oldini oladi. Ko'p platformali jamoalarga ega mobil loyihalar uchun bu ayniqsa dolzarbdir.
Oddiy dasturchi kunini ko'rib chiqaylik: ertalab developni yangilaydi, yangi feature tarmog'ini yaratadi va topshiriqni tugatgandan so'ng o'zgarishlarni developga qaytarib birlashtiradi.
# Ertalabki develop sinxronizatsiyasi
git checkout develop
git pull origin develop
# Developdan yangi feature tarmog'ini yaratish
git checkout -b feature/add-push-notifications
# Funksiya ustida ishlash...
git add . && git commit -m "Add FCM integration"
# Rivojlanish vaqtida developni yangilash
git fetch origin develop
git rebase origin/develop
# PR tasdiqlangandan so'ng — mahalliy developni yangilash
git checkout develop
git pull origin develop
git branch -d feature/add-push-notifications
Developda git pull buyrug'i bir vaqtning o'zida ikkita operatsiyani bajaradi: git fetch (serverdan yangi commitlarni oladi) va git merge (ularni mahalliy tarmoq bilan birlashtiradi). Develop uchun bu sinxronizatsiyaning standart usulidir.
Agar developga kompilyatsiyani buzgan kod tushgan bo'lsa, tez harakat qilish kerak. Developning har bir soat to'xtab qolishi butun dasturchilar jamoasining bloklangan ishini anglatadi.
Agar developga kompilyatsiyani buzgan kod tushgan bo'lsa, muammoli o'zgarishlarni bekor qiluvchi yangi commit yaratish uchun git revert dan foydalaning. Developda git reset dan foydalanmang — bu boshqa ishtirokchilarda mavjud bo'lgan tarixni qayta yozadi.
# Muammoli commitni qidirish
git log --oneline develop
# Commitni revert orqali bekor qilish (xavfsiz)
git revert a1b2c3d
# Tuzatishni uzoqdagi developga jo'natish
git push origin develop
# Muayyan commitdagi o'zgarishlarni ko'rish
git show a1b2c3d --stat
Tez-tez so'raladigan savollar
Bir-ikki dasturchisi bo'lgan loyihalar uchun develop ko'pincha ortiqcha — main va feature tarmoqlari etarli. Jamoa 3+ kishiga o'sgandan so'ng, develop tugallanmagan funksiyalarni barqaror ishlab chiqarish kodidan ajratish uchun zarur bo'ladi.
Yo'q, har qanday professional loyihada developga to'g'ridan-to'g'ri yozish taqiqlanadi. Barcha o'zgarishlar Pull Request va code review bilan avtomatik tekshiruvlardan o'tadi. Istisno — README yoki CI konfiguratsiyasining ma'muriy tuzatishlari, ammo ularni ham PR orqali qilish yaxshiroqdir.
Trunk-based development da alohida develop tarmog'i yo'q — barcha dasturchilar juda qisqa feature tarmoqlari (1-2 kun) bilan main da ishlaydi. Bu yuqori darajadagi test avtomatlashtirishga ega DevOps madaniyatida mashhur bo'lgan Git Flow ga alternativdir.
Har bir releasedan so'ng, release tarmog'i developga qaytarib birlashtiriladi, shunda release tayyorlash jarayonida qilingan barcha tuzatishlar developga kiritiladi. Agar bu bajarilmasa, develop release kodidan farq qiladi, bu keyingi release vaqtida mojarolarga olib keladi.
Agar develop buzilgan bo'lsa, katta dasturchi oxirgi barqaror commitdan hotfix tarmog'ini yaratadi, muammoni tuzatadi va tuzatishni maxsus statusli PR orqali to'g'ridan-to'g'ri developga birlashtiradi. Tiklashdan so'ng, buzilish sababining tahlili o'tkaziladi.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.