Avvalo, @AndrewFinnell va @KenLiu ta'kidlaganidek, SVN-da katalog nomlarining o'zi hech narsani anglatmaydi -- "magistral, filiallar va teglar" ko'pchilik omborlar tomonidan qo'llaniladigan oddiy konventsiyadir. Hamma loyihalar ham barcha kataloglardan foydalanmaydi ("teglar" dan umuman foydalanmaslik odatiy holdir) va aslida ularni o'zingiz xohlagan narsani chaqirishingizga hech narsa to'sqinlik qilmaydi, garchi konventsiyani buzish ko'pincha chalkashliklarga olib keladi.
Men filiallar va teglardan foydalanishning eng keng tarqalgan stsenariysini tasvirlab beraman va ulardan qanday foydalanishga misol stsenariysini keltiraman.
Magistral: Asosiy rivojlanish sohasi. Kodning navbatdagi asosiy nashri aynan shu yerda yashaydi va odatda eng yangi funksiyalarga ega.
Filiallar: Har safar asosiy versiyani chiqarganingizda, u filial yaratiladi. Bu sizga eng yangi - ehtimol tugallanmagan yoki sinovdan o'tmagan xususiyatlarni chiqarmasdan, xatolarni tuzatish va yangi versiyani yaratish imkonini beradi.
Teglar: Har safar versiya chiqarganingizda (oxirgi versiya, chiqish nomzodlari (RC) va beta versiyalar) siz unga teg yaratasiz. Bu sizga kodning o'sha paytdagi nusxasini beradi, agar kerak bo'lsa, o'tgan versiyadagi har qanday xatoliklarni orqaga qaytarish va qayta ishlab chiqarish yoki oldingi versiyani avvalgidek qayta chiqarish imkonini beradi. SVN-dagi filiallar va teglar engildir - serverda u fayllarning to'liq nusxasini yaratmaydi, faqat bir necha baytni egallagan "bu fayllar ushbu tahrirda ko'chirilgan" degan marker. Shuni yodda tutgan holda, siz hech qachon chiqarilgan kod uchun teg yaratish haqida tashvishlanmasligingiz kerak. Yuqorida aytib o'tganimdek, teglar ko'pincha o'tkazib yuboriladi va buning o'rniga o'zgartirish jurnali yoki boshqa hujjat nashr etilganda tahrir raqamini aniqlaydi.
Masalan, siz yangi loyihani boshlaysiz deylik. Siz oxir-oqibat 1.0 versiyasi sifatida chiqariladigan "trunk" da ishlay boshlaysiz.
- trunk/ - ishlab chiqish versiyasi, tez orada 1.0
- filiallari/ - bo'sh
1.0.0 tugagach, siz magistralni yangi "1.0" filialiga ajratasiz va "1.0.0" tegini yaratasiz. Endi 1.1 bo'lishi mumkin bo'lgan ishlar yukxonada davom etmoqda.
- trunk/ - ishlab chiqish versiyasi, tez orada 1.1
- filiallar/1.0 - 1.0.0 versiyalari
- tags/1.0.0 - 1.0.0 versiyalari
Siz koddagi ba'zi xatolarga duch kelasiz va ularni magistralda tuzatasiz va keyin tuzatishlarni 1.0 filialiga birlashtirasiz. Siz teskarisini ham qilishingiz mumkin va 1.0 filialidagi xatolarni tuzatib, keyin ularni magistralga birlashtira olasiz, lekin odatda loyihalar biror narsani yo'qotish ehtimolini kamaytirish uchun bir tomonlama birlashtirishga yopishadi. Ba'zida xato faqat 1.0 da tuzatilishi mumkin, chunki u 1.1 da eskirgan. Bu juda muhim emas: siz faqat 1.0 da tuzatilgan xatolar bilan 1.1 ni chiqarmasligingizga ishonch hosil qilishni xohlaysiz.
- trunk/ - ishlab chiqish versiyasi, tez orada 1.1
- filiallari/1.0 - kelayotgan 1.0.1 versiyasi
- teglar/1.0.0 - 1.0.0 chiqarish versiyasi
Etarlicha xatoliklarni topsangiz (yoki bitta muhim xato), siz 1.0.1 versiyasini chiqarishga qaror qilasiz. Shunday qilib, siz 1.0 filialidan "1.0.1" tegini yaratasiz va kodni chiqarasiz. Ushbu nuqtada magistralda 1.1 bo'lishi kerak, va "1.0" filiali 1.0.1 kodini o'z ichiga oladi. Keyingi safar 1.0 ga yangilanishni chiqarganingizda, u 1.0.2 bo'ladi.
- trunk/ - ishlab chiqish versiyasi, tez orada 1.1
- filiallari/1.0 - kelayotgan 1.0.2 versiyasi
- teglar/1.0.0 - 1.0.0 chiqarish versiyasi
- tags/1.0.1 - 1.0.1 versiyalari
Oxir-oqibat, siz 1.1-ni chiqarishga deyarli tayyorsiz, lekin avval beta-versiyani amalga oshirishni xohlaysiz. Bunday holda, siz "1.1" filialini va "1.1beta1" tegini qilishingiz mumkin. Endi 1,2 (yoki 2,0 bo'lishi mumkin) bo'lishi ustida ishlash magistralda davom etadi, ammo 1,1 bo'yicha ish "1,1" filialida davom etadi.
- trunk/ - ishlab chiqish versiyasi, tez orada 1.2
- filiallar/1.0 - kelgusi 1.0.2 versiyasi
- filiallar/1.1 - kelgusi 1.1.0 versiyasi
- teglar/1.0.0 - 1.0.0 chiqarish versiyasi
- teglar/1.0.1 - 1.0.1 versiyalari
- tegs/1.1beta1 - 1.1 beta 1 versiya
1.1 finalini chiqarganingizdan so'ng siz "1.1" filialidan "1.1" tegini qilasiz.
Agar xohlasangiz, xatolarni tuzatishni uchta filial (1.0, 1.1 va magistral) oʻrtasida oʻtkazishni davom ettirishingiz mumkin. Muhim nuqta shundaki, siz qo'llab-quvvatlayotgan dasturiy ta'minotning har bir asosiy versiyasi uchun sizda ushbu versiya uchun kodning so'nggi versiyasini o'z ichiga olgan filial mavjud.
Filiallardan yana bir foydalanish xususiyatlar uchundir. Bu yerda siz magistralni (yoki chiqarish filiallaringizdan birini) ajratasiz va alohida holda yangi xususiyat ustida ishlaysiz. Xususiyat tugallangandan so'ng, siz uni yana birlashtirasiz va filialni olib tashlang.
- trunk/ - ishlab chiqish versiyasi, tez orada 1.2
- filiallari/1.1 - kelgusi 1.1.0 versiyasi
- branches/ui-rewrite - eksperimental xususiyat bo'limi
Buning g'oyasi siz biror narsa ustida ishlayotganingizda (bu boshqa odamlarga o'z ishlarini bajarishiga to'sqinlik qiladigan yoki xalaqit beradigan), eksperimental (hatto bunga erisha olmasligi mumkin) yoki shunchaki uzoq vaqt talab qiladigan narsa ustida ishlayotganingizda. (va siz magistraldan 1.2 ni ajratishga tayyor bo'lganingizda, u 1.2 relizni ushlab turishidan qo'rqasiz), siz uni filialda izolyatsiya qilishingiz mumkin. Umuman olganda, siz har doim o'zgarishlarni birlashtirib, uni magistral bilan yangilab turasiz, bu esa tugatgandan so'ng qayta integratsiyani (magistralga birlashishni) osonlashtiradi.
Shuni ham yodda tutingki, men bu erda ishlatgan versiya sxemasi ko'p narsalardan biridir. Ba'zi jamoalar 1.1, 1.2, va hokazo kabi xatolarni tuzatish/xizmat ko'rsatish relizlarini va 1.x, 2.x va boshqalar kabi katta o'zgarishlarni amalga oshiradilar. Bu erda foydalanish bir xil, lekin siz filialni "1" yoki "1" deb nomlashingiz mumkin. "1.0" yoki "1.0.x" o'rniga .x". (Bundan tashqari, semantik versiya - versiya raqamlarini qanday qilish bo'yicha yaxshi qo'llanma).
person
gregmac
schedule
20.09.2008