Subversion omborlarida filial, teg va magistral nimani anglatadi?

Men bu so‘zlarni Subversion (va o‘ylaymanki, umumiy ombor) muhokamalarida ko‘p ko‘rganman.
Men so‘nggi bir necha yil davomida o‘z loyihalarim uchun SVN dan foydalanaman, lekin hech qachon tushunmaganman. ushbu kataloglarning to'liq tushunchasi.

Ular nimani anglatadi?


person grapefrukt    schedule 19.08.2008    source manba
comment
Mana, magistral, filial va teglardan qanday/qachon foydalanishni tushuntirib beradigan yaxshi maqola. Men ilgari manba nazoratidan foydalanmagan edim, lekin bu maqola men kabi noob uchun tushunishni juda oson qildi. Kundan-kunga Subversion   -  person badmoon    schedule 19.08.2008


Javoblar (16)


Hmm, men Nik re yorlig'i filialga o'xshashligiga rozi emasman. Teg shunchaki markerdir

  • Magistral> loyiha boshidan to hozirgi kungacha rivojlanishning asosiy qismi bo'ladi.

  • filial bo'ladi Magistralning ma'lum bir nuqtasidan olingan kod nusxasi, u magistraldagi kodning yaxlitligini saqlagan holda kodga katta o'zgarishlar kiritish uchun ishlatiladi. Agar asosiy o'zgarishlar rejaga muvofiq ishlayotgan bo'lsa, ular odatda magistralga qayta birlashtiriladi.

  • Teg bo'ladi Siz saqlamoqchi bo'lgan magistral yoki filialda vaqtni belgilang. Saqlashning ikkita asosiy sababi shundaki, bu alfa, beta, RC yoki RTM bo'ladimi, dasturiy ta'minotning asosiy versiyasi bo'ladimi yoki bu magistralda katta tahrirlar qo'llanilishidan oldin dasturiy ta'minotning eng barqaror nuqtasidir.

Ochiq kodli loyihalarda, loyiha manfaatdor tomonlari tomonidan magistralga qabul qilinmagan asosiy filiallar vilkalar uchun asos bo'lishi mumkin, masalan, boshqa manba kodlari bilan umumiy kelib chiqishi bo'lgan butunlay alohida loyihalar.

Filial va teg pastki daraxtlar magistraldan quyidagi yo'llar bilan ajralib turadi:

Subversion tizim boshqaruvchilariga ma'lum hodisalar sodir bo'lganda bajarish uchun ishga tushiriladigan hook skriptlarini yaratish imkonini beradi; masalan, omborga o'zgartirish kiritish. Odatda Subversion repository ilovasi uchun "/teg/" ni o'z ichiga olgan har qanday yo'l yaratilgandan keyin yozishdan himoyalangan bo'lishi juda keng tarqalgan; aniq natija - bir marta yaratilgan teglar o'zgarmasdir (hech bo'lmaganda "oddiy" foydalanuvchilar uchun). Bu, agarteg o'zgartirilgan ob'ektning asosiy tuguni bo'lsa, keyingi o'zgarishlarni oldini olish orqali o'zgarmaslikni ta'minlaydigan kanca skriptlari orqali amalga oshiriladi.

Subversion shuningdek, 1.5-versiyasidan boshlab "filiallarni birlashtirishni kuzatish" bilan bog'liq qo'shimcha funktsiyalarga ega, shuning uchunfilialga kiritilgan o'zgarishlar asta-sekin, "aqlli" birlashishni qo'llab-quvvatlagan holda magistralga qayta birlashtirilishi mumkin.

person Jon Limjap    schedule 19.08.2008
comment
Teglar va novdalar bilan chalkashlik shundan iboratki, svn da ular o'rtasida katalog nomidan tashqari hech qanday farq yo'q. Svn-da siz tegga o'zgartirishlar kiritishingiz mumkin va aslida buni oldini olish qiyin. Ko'pgina boshqa VCS'lar teglarni o'zgarmas suratlar (vaqt nuqtalari) sifatida ko'rib chiqadi. - person Ken Liu; 09.10.2009
comment
Tags katalogi oddiy foydalanuvchi tomonidan muhim bosqichlarni tekshirish va tekshirish uchun ham ishlatiladi. Bu prototipni qo'yish uchun yaxshi joy bo'lardi (faqat boshimdagi ba'zi fikrlar). - person Jeff Noel; 26.10.2012
comment
@KenLiu Teglarni o'zgarmas qilish mumkin bo'lgan ilgaklar mavjud. Ya'ni, siz teg yaratishingiz va tekshirishingiz mumkin, lekin hech qanday o'zgartirish kirita olmaysiz. Albatta, teg omborning faqat bir qismi bo'lishi to'liq tarix mavjudligini anglatadi. Agar kimdir tegni o'zgartirsa, buni va nima uchun kuzatishingiz mumkin. Ko'pgina VCSda tegni o'zgartirsangiz, bilishning hech qanday usuli bo'lmasligi mumkin. - person David W.; 01.03.2015
comment
Balki barqaror novdalarni eslatib o'tish kerak: u erda kiritilgan o'zgarishlar odatda qayta magistralga birlashtirilmaydi. - person Wolf; 06.05.2015
comment
Unda barqaror filial va teg o'rtasidagi farq nima bo'lar edi? - person James Wierzba; 29.06.2015
comment
Mening tushunishimcha, mukammal dunyoda hech qachon yuk bagajida hech qanday rivojlanish bo'lmasligi kerak, magistral har doim jonli bo'lgan aniq kod yoki jonli ravishda chiqarilishi kerak bo'lgan kod bo'lishi kerak. shuning uchun filiallarni rivojlanishning asosiy organiga aylantiradi. - person MikeT; 03.08.2015
comment
Bundan tashqari, teg nimani anglatishini tushunganim shundaki, teg ko'proq ikkilamchi trunksga o'xshaydi, ya'ni siz bozorda faol foydalanuvchi bazasiga ega mahsulotingiz bor. siz 2-versiyani yangilash emas, balki alohida mahsulot sifatida chiqarishga qaror qildingiz, biroq mahsulotingizning 1-versiyasida xatolik bo‘lsa, mavjud foydalanuvchi bazasini ular 2-versiyaga yangilanmagan bo‘lsa ham qo‘llab-quvvatlashingiz kerak. v2 ga o'tishdan oldin teg yaratadi va keyin v1 da talab qilinadigan xatolarni tuzatish v1 tegidan kelib chiqadigan filiallarda bajarilishi mumkin - person MikeT; 03.08.2015
comment
Magistraldagi (yoki filialdagi) kod har safar chiqarilganda teg yaratilishi kerak deb o'ylayman. Chiqarilgan deganda men sinov yoki ishlab chiqarishda qo'llanilishi mumkin bo'lgan x.y.z versiyasini nazarda tutyapman. Agar x.y.z versiyasida xatolik paydo boʻlsa, lekin yangi ishlanma tufayli magistral oʻzgargan boʻlsa, x.y.z tegi x.y.z filialiga koʻchirilishi mumkin va xato shu yerda tuzatiladi. Chiqarish paytida SVN-versiya raqamiga e'tibor berish va ishlab chiqarishdagi xatolikni tuzatishda ushbu tahrirni tekshirish orqali ham xuddi shunday natijaga erishish mumkin deb o'ylayman. Ammo teg yanada aniqroq. - person Vering; 03.03.2016
comment
Bu asl savolga javob bermaydi. Buning o'rniga javob umumiy foydalanishdagi Trunk, Branch va Tag tushunchalariga (to'g'ri) umumiy kirishni beradi. LEKIN: SVN bu ishlarni shunday qilmaydi. Ya'ni: Tag tushunchasi o'zgarmas vaqt belgisi sifatida SVN-da qo'llab-quvvatlanmaydi. Agar siz o'zingiz o'zgarmaslikni oldindan topshirilgan ilgak orqali qo'shmasangiz, SVN-dagi TAG shunchaki Tag nomini tanlagan katalogga qo'yish uchun tanlagan FILIAL. Va keyin uni o'zgartirishga to'sqinlik qiladigan narsa - bu bajarilmagan konventsiya. - person StackzOfZtuff; 06.06.2018
comment
Trunk uchun ba'zi bir narsa bor: Umumiy tushunchaning tushuntirishi to'g'ri. Biroq, SVN Trunk-da maxsus ishlov berilmaydi. Bu filiallar uchun boshqa papka nomi. Konventsiyadan boshqa hech narsa tomonidan amalga oshirilmaydi. Batafsil ma'lumot uchun Erikning javobiga qarang. - person StackzOfZtuff; 06.06.2018
comment
Vikipediya trunkni qayta koʻrib chiqish nazorati ostidagi fayl daraxtining nomsiz novdasi (versiyasi) sifatida belgilaydi. . Trunk - bu asosan SVNda qo'llaniladigan tushuncha. Gitdagi standart filial asosiy filial deb ataladi. Gitda noma'lum filial yo'q, shuning uchun magistral yo'q. - person Chris Voon; 04.09.2018
comment
@ChrisVoon @ StackzOftuff aytganidek, trunk SVNda nomsiz filial emas, bu trunk nomli filial*. (* batafsil ma'lumot uchun @ EricZBeardning javobiga qarashni tavsiya qilaman.) - person apple apple; 03.12.2019
comment
@ChrisVoon Vikipediya ta'rifi juda cheklangan. U CVS kabi eski versiyalarni boshqarish tizimlariga asoslangan bo'lib, ular haqiqatan ham o'zgarishlarni amalga oshirish uchun nomsiz joyga ega. Bu nomsiz joy suhbatda magistral deb ataladi. Bu to'g'ri nom edi, chunki ombor magistraldan boshqa hech narsa bilan boshlangan va hamma narsa u erdan chiqib ketgan. Magistralga qandaydir tarzda o'tmaydigan filialni yaratish mumkin emas edi. Git ham, svn ham trunk bilan bir xil maqsadga xizmat qiluvchi konventsiyalarga ega. Garchi ular oddiy konventsiyalar bo'lsa-da, magistral hali ham tegishli atamadir. - person Darryl; 28.04.2020

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
comment
SVN-da teglar engil ekanligi to'g'ri emas. SVN-da teglar to'liq kod eksporti bo'lib, manba daraxtining qayerdan kelganligi haqidagi ma'lumotni yo'qotadi. - person Baruch; 27.09.2011
comment
@baruch - Bu mutlaqo noto'g'ri. Teglar engil va (Subversionning o'zi uchun) filiallar bilan bir xil. - person Josh Kelley; 14.07.2014
comment
Foydalanish tafsilotlarini yaxshi ko'ring. Rahmat @gregmac. - person Jeromy French; 02.12.2014
comment
Teglar/filiallar engil ekanligi ko'rsatilgan joy haqida taklif olsam bo'ladimi? Bu shunday emasga o'xshaydi.. - person Cardin; 08.05.2015
comment
Bu qabul qilingan javob bo'lishi kerak, bu juda yaxshi ^^ - person Nam G VU; 17.12.2015
comment
@Cardin Hozir menda ma'lumot yo'q, lekin shuni ta'kidlash kerakki, teglar serverda engil, lekin mijoz emas. Agar siz barcha teglarni tekshirib ko'rsangiz, shuncha to'liq nusxa olasiz. Biroq, agar siz serverdagi ombor hajmiga qarasangiz, u teg uchun bir necha baytga ko'payadi. Shuning uchun, umuman olganda, ildiz katalogini tekshirmasligingiz kerak. - person gregmac; 03.02.2016
comment
@Cardin Malumot so'raganingiz uchun ushbu sahifadagi Arzon nusxalar blokiga qarang: svnbook.red-bean.com/en/1.7/. - person Darryl; 28.04.2020

Nik aytgan so'zlarga qo'shimcha ravishda siz Oqimli chiziqlar: Parallel dasturiy ta'minotni ishlab chiqish uchun tarmoqlanish naqshlari orqali ko'proq ma'lumot olishingiz mumkin.

rasm tavsifini shu yerga kiriting

Bu rasmda main - magistral, rel1-maint - filial va 1.0 - teg.

person grom    schedule 19.08.2008
comment
@Wolf u bo'lishi mumkin - bu diagramma asboblardan qat'i nazar, juda umumiydir. Barcha SCMlar turli so'zlardan foydalanadi, lekin bir xil tushunchalar, magistral va Main o'rtasida hech qanday farq yo'q; yoki magistral va magistral. Ushbu diagramma mening hozirgi kompaniyam SVNdan qanday foydalanishini ko'rsatadi. - person gbjbaanb; 27.05.2015
comment
@gbjbaanb Baham ko'rganingiz uchun tashakkur. ...va teglarga savol javob bermaydi. Hech qanday birlashma asosiy filialdan qo'llab-quvvatlanadigan filiallarga o'tmasligi (hozirgi kompaniyangizda ham) tasodifmi? - person Wolf; 27.05.2015
comment
@Wolf Tasodifiy emas - faqat magistraldan filial, ishni bajaring, yana magistralga birlashing. Keyin magistralni teg shoxiga aylantiring. Biz Integratsiya deb nomlangan yana bir “magistral”ni ko‘rib chiqmoqdamiz, uning tugallangan filiallari sinov uchun unga birlashtirildi, bu nashrni tashkil etmaydi, magistral hali ham keyingi nashrga qo‘yishga qaror qilgan filiallar uchun ishlatiladi. Magistraldan filialga birlashadigan yagona vaqt - uzoq vaqtdan beri ishlaydigan filialni yangilash, lekin agar kerak bo'lsa, magistraldan yangi filial yaratish va eski filialingizdagi o'zgarishlarni unga birlashtirish yaxshiroq (va osonroq). - person gbjbaanb; 27.05.2015

Umuman olganda (asbobning agnostik ko'rinishi), filial parallel rivojlanish uchun ishlatiladigan mexanizmdir. SCM 0 dan n gacha shoxlarga ega bo'lishi mumkin. Subversiya 0 ga ega.

  • Magistral - asosiy filial tavsiya qilinganSubversion, lekin siz uni yaratishga majbur emassiz. Siz uni "asosiy" yoki "relizlar" deb atashingiz mumkin yoki umuman yo'q!

  • Filial rivojlanish harakatini ifodalaydi. U hech qachon resurs nomi bilan nomlanmasligi kerak (“vonc_branch” kabi), lekin keyin:

    • a purpose 'myProject_dev' or 'myProject_Merge'
    • nashr perimetri "myProjetc1.0_dev'or myProject2.3_Merge" yoki "myProject6..2_Patch1"...
  • #P4#
    #P5#

Teg yakuniy hisoblanadi. Uning mazmuni hech qachon o'zgarmasligi kerak. HECH QACHON. Har doim. Chiqarilgan yozuvdagi qatorni unutdingizmi? Yangi teg yarating. Eskirgan yoki eskisini olib tashlang.

Endi men “falon shoxlarda, keyin falon shoxchada yana birlashish” haqida ko‘p o‘qidim. Bu birlashtirish ish oqimi deb ataladi va bu yerda hech narsa majburiy emas. Magistral filialingiz borligi uchun qayta birlashishingiz kerak emas.

An'anaga ko'ra, magistral filial sizning rivojlanishingizning hozirgi holatini ko'rsatishi mumkin, ammo bu oddiy ketma-ket loyiha uchun, ya'ni quyidagilarga ega bo'lgan loyiha:

  • "oldindan" ishlab chiqilmagan (keyingi versiyani tayyorlash uchun ular hozirgi "magistral" ishlanmaga mos kelmaydigan o'zgarishlarni nazarda tutadi)
  • katta refaktoring yo'q (yangi texnik tanlovni sinab ko'rish uchun)
  • oldingi versiyaga uzoq muddatli texnik xizmat ko'rsatilmaydi

Chunki bu stsenariylardan biri (yoki barchasi) bilan siz o'zingizga to'rtta "magistral", to'rtta "joriy ishlanmalar" ni olasiz va bu parallel rivojlanishda qilayotgan barcha ishlaringiz "magistral"da birlashtirilishi shart emas.

person Community    schedule 22.09.2008

SVN-da teg va filial haqiqatan ham o'xshash.

Teg = vaqt bo'yicha belgilangan bo'lak, odatda nashrlar uchun ishlatiladi

Filial = shuningdek, rivojlanish davom etishi mumkin bo'lgan aniqlangan vaqt oralig'i, odatda 1.0, 1.5, 2.0 va hokazolar kabi asosiy versiyalar uchun ishlatiladi, keyin siz bo'shatganingizda filialni belgilaysiz. Bu magistraldagi o'zgarishlarni buzish bilan oldinga siljish paytida ishlab chiqarishni qo'llab-quvvatlashni davom ettirish imkonini beradi

Magistral = ish joyini ishlab chiqish, bu erda barcha rivojlanish sodir bo'lishi kerak, keyin esa o'zgarishlar filial relizlaridan birlashtiriladi.

person Nick Berardi    schedule 19.08.2008

Ular, albatta, hech qanday rasmiy ma'noga ega emas. Jild SVN uchun jilddir. Ular loyihangizni tashkil qilishning umumiy qabul qilingan usulidir.

  • Magistral bu sizning asosiy rivojlanish yo'nalishini saqlaydigan joy. Filial papkasida siz qisqa postda tushuntirish qiyin bo'lgan filiallarni yaratishingiz mumkin.

  • Filial - bu magistraldan alohida ishlaydigan loyihangizning kichik to'plamining nusxasi. Ehtimol, bu hech qayoqqa ketmasligi mumkin bo'lgan eksperimentlar uchundir yoki keyingi versiya uchun bo'lishi mumkin, siz keyinroq u barqaror bo'lgandan keyin magistralga qayta qo'shilasiz.

  • Teglar papkasi esa omboringizning tegli nusxalarini yaratish uchun mo'ljallangan, odatda relizlar nazorat punktlarida.

Lekin aytganimdek, SVN uchun papka papkadir. branch, trunk va teg shunchaki konventsiyadir.

Men "nusxa olish" so'zini bemalol ishlataman. SVN aslida ombordagi narsalarning to'liq nusxalarini yaratmaydi.

person Eric Z Beard    schedule 19.08.2008

magistral eng so'nggi manba kodi va funksiyalarini o'z ichiga olgan ishlab chiqish liniyasidir. Unda eng so'nggi xatolar tuzatilgan bo'lishi kerak, shuningdek, loyihaga qo'shilgan so'nggi xususiyatlar bo'lishi kerak.

filiallarodatda magistraldan (yoki boshqa rivojlanish liniyasidan) uzoqda, aks holda qurilishnibuzishga olib keladigan biror narsa qilish uchun ishlatiladi. Yangi xususiyatlar ko'pincha filialda quriladi va keyin yana magistralga birlashtiriladi. Filiallar odatda tarmoqlangan rivojlanish liniyasi uchun tasdiqlanmagan kodni o'z ichiga oladi. Misol uchun, dasturchi filialdagi biror narsada optimallashtirishni sinab ko'rishi va optimallashtirish qoniqarli bo'lgandan keyingina rivojlanish liniyasiga birlashishi mumkin.

teglar bu ma'lum bir vaqtda omborning oniy tasvirlari. Ularda hech qanday rivojlanish bo'lmasligi kerak. Ular ko'pincha mijozga berilgan narsaning nusxasini olish uchun ishlatiladi, shunda siz mijoz foydalanayotgan narsaga osongina kirishingiz mumkin.

Bu erda omborlar bo'yicha juda yaxshi qo'llanmaga havola:

Vikipediyadagi maqolalar ham o'qishga arziydi.

person mbillard    schedule 19.08.2008

Endi bu dasturiy ta'minotni ishlab chiqish bilan bog'liq, hech narsa haqida izchil bilim yo'q, har kimning o'ziga xos yo'li bordek tuyuladi, lekin baribir bu nisbatan yosh intizom bo'lgani uchun.

Mana mening oddiy oddiy usulim,

trunk - Magistral katalogda eng joriy, tasdiqlangan va birlashtirilgan ish to'plami mavjud. Ko'pchilik tan olganidan farqli o'laroq, mening yukxonam faqat toza, ozoda, tasdiqlangan ish uchun mo'ljallangan va rivojlanish maydoni emas, balki ozod qilish maydoni.

Magistral bo'shatishga tayyor bo'lib ko'rinsa, ma'lum bir vaqtda, u etiketlanadi va qo'yib yuboriladi.

filiallar - Filiallar katalogida tajribalar va davom etayotgan ishlar mavjud. Filial ostidagi ish magistralga birlashtirilishi tasdiqlanmaguncha u erda qoladi. Men uchun bu barcha ishlar bajariladigan maydon.

Misol uchun: men mahsulotning beshinchi bosqichi uchun iteration-5 filialiga, tajribaning to'qqizinchi bosqichi uchun prototip-9 filialiga ega bo'lishim mumkin va hokazo. yoqilgan.

teglar - Teglar katalogida tasdiqlangan filiallar va magistral relizlar suratlari mavjud. Qachonki, filial magistralga birlashishi ma'qullangan bo'lsa yoki magistraldan ajratilgan bo'lsa, teglar ostida tasdiqlangan filial yoki magistralni bo'shatish surati olinadi.

O'ylaymanki, teglar yordamida men vaqt o'tishi bilan oldinga va orqaga sakrab, qiziqish nuqtalariga osongina o'tishim mumkin.

person BakerTheHacker    schedule 30.06.2009

Men muallifining veb-saytini qidirayotganimda SVN bo'yicha ajoyib qo'llanmani topdim. //en.wikipedia.org/wiki/OpenCV" rel="noreferrer">OpenCV 2 Kompyuterda ko'rish uchun dastur dasturlash kitobi va men ulashish kerak deb o'yladim.

U SVN dan qanday foydalanish va "trunk", "teg" va "filial" iboralari nimani anglatishini o'rgatuvchi qo'llanmaga ega.

To'g'ridan-to'g'ri uning qo'llanmasidan iqtibos:

Jamoangiz hozirda ishlayotgan dasturiy ta'minot loyihangizning joriy versiyasi odatda trunk deb nomlangan katalog ostida joylashgan. Loyiha rivojlanib borar ekan, ishlab chiquvchi ushbu versiyani yangilaydi, xatolarni tuzatadi, yangi xususiyatlarni qo'shadi) va o'z o'zgarishlarini shu katalogga yuboradi.

Vaqtning istalgan nuqtasida siz versiyani muzlatib qo'yishingiz va dasturiy ta'minotning rivojlanish bosqichida bo'lgani kabi suratga olishingiz mumkin. Bu odatda sizning dasturiy ta'minotingizning rasmiy versiyalariga mos keladi, masalan, siz mijozlaringizga etkazib beradiganlar. Ushbu suratlar loyihangizning teglar katalogi ostida joylashgan.

Va nihoyat, ko'pincha dasturiy ta'minotingiz uchun yangi rivojlanish yo'nalishini yaratish foydali bo'ladi. Bu, masalan, siz dasturiy ta'minotingizni o'zgartirishingiz kerak bo'lgan muqobil dasturni sinab ko'rmoqchi bo'lganingizda sodir bo'ladi, lekin siz yangi yechimni qabul qilish yoki qabul qilmaguningizcha bu o'zgarishlarni asosiy loyihaga yuborishni xohlamaysiz. Keyin asosiy jamoa loyiha ustida ishlashni davom ettirishi mumkin, boshqa ishlab chiquvchilar esa prototip ustida ishlaydi. Loyihani rivojlantirishning ushbu yangi yo'nalishlarinifiliallar deb nomlangan katalog ostida joylashtirasiz.

person Vince    schedule 26.07.2011

Magistral katalog bu sizga eng tanish bo'lgan katalogdir, chunki u eng so'nggi o'zgarishlarni saqlash uchun ishlatiladi. Sizning asosiy kod bazangiz magistralda bo'lishi kerak.

Filiallar katalogi nima bo'lishidan qat'i nazar, filiallaringizni saqlash uchun mo'ljallangan.

Teglar katalogi asosan ma'lum bir fayllar to'plamini teglash uchun mo'ljallangan. Siz buni relizlar kabi narsalar uchun qilasiz, bunda siz “1.0” ushbu tahrirlarda ushbu fayllar boʻlishini va “1.1” ushbu versiyalarda ushbu fayllar boʻlishini xohlaysiz. Odatda teglar yaratilgandan keyin ularni o‘zgartirmaysiz. Teglar haqida qo'shimcha ma'lumot olish uchun 4-bo'lim. Tarmoqqa ajratish va Birlashtirish (Subversion bilan versiyani boshqarish).

person bradtgmurray    schedule 19.08.2008

Har bir kishi biroz boshqacha ta'rifga ega bo'lishining sabablaridan biri shundaki, Subversion filiallar va teglar uchun nol qo'llab-quvvatlamaydi. Subversion asosan shunday deydi: Biztoʻliq xususiyatli boshqa tizimlardagi filiallar va teglarni koʻrib chiqdik va ularni foydali deb topmadik, shuning uchun biz hech narsani amalga oshirmadik. Shunchaki uning nusxasini o‘rniga nomli yangi katalogga yarating. Shunda, albatta, har bir kishi biroz boshqacha konventsiyalarga ega bo'lishi mumkin. haqiqiy teg va oddiy nusxa + nomlash konventsiyasi oʻrtasidagi farqni tushunish uchun Vikipediya yozuviga qarang Subversion teglar va filiallar.

person MarcH    schedule 17.11.2010

Teg = vaqt bo'yicha aniqlangan bo'lak, odatda relizlar uchun ishlatiladi

Menimcha, bu odatda "teg" deganda nimani anglatadi. Ammo Subversionda:

Ular, albatta, hech qanday rasmiy ma'noga ega emas. Jild SVN uchun jilddir.

Men juda chalkash deb hisoblayman: filiallar yoki teglar haqida hech narsa bilmaydigan qayta ko'rib chiqishni boshqarish tizimi. Amalga oshirish nuqtai nazaridan, "nusxalar" yaratishning Subversion usuli juda aqlli, deb o'ylayman, lekin men bu haqda bilishim kerak bo'lgan narsa o‘tmagan abstraksiya.

Yoki CVS dan juda uzoq vaqtdan beri foydalanayotgandirman.

person sme    schedule 04.09.2008
comment
Muqobil nuqtai nazar shundan iboratki, buning aksi to'g'ri, ya'ni subversion ob'ekt modeliga teglar kontseptsiyasini qo'yish qarama-qarshi yo'nalishdagi sızıntılı abstraktsiya bo'ladi. O'ylaymanki, siz bilasiz, buzg'unchilik CVSga reaktsiya, CVSni to'g'ri bajarishga urinish edi. Men ma'lumotnomani topa olmadim, lekin asl subversion dizaynerlari teglar kontseptsiyasini 100% ataylab chiqarib tashlaganliklarini aytishdi, filiallar va teglar o'rtasidagi farq faqat siyosat masalasidir. Agar jamoalar siyosat va konventsiyani qo'poruvchilik ob'ekt modeli ustiga qo'ymoqchi bo'lsa, shunday bo'lsin. Bugun bizda aynan shunday. - person Darryl; 28.05.2013

O'ylaymanki, ba'zi chalkashliklar teg tushunchasi va SVNda amalga oshirish o'rtasidagi farqdan kelib chiqadi. SVN uchun teg - bu nusxa bo'lgan filial. Teglarni o'zgartirish noto'g'ri hisoblanadi va aslida TortoiseSVN kabi vositalar yo'lda ../tags/.. bilan biror narsani o'zgartirishga harakat qilsangiz, sizni ogohlantiradi.

person denis phillips    schedule 19.08.2008

Men "teg" nima ekanligini aniq bilmayman, lekin filial juda keng tarqalgan manba nazorati tushunchasidir.

Asosan, filial magistralga ta'sir qilmasdan koddagi o'zgarishlar ustida ishlash usulidir. Aytaylik, siz juda murakkab yangi xususiyatni qo'shmoqchisiz. Siz o'zgarishlarni amalga oshirayotganda ularni tekshirish imkoniyatiga ega bo'lishni xohlaysiz, lekin bu funksiyani bajarib bo'lguningizcha magistralga ta'sir qilishini xohlamaysiz.

Avval siz filial yaratasiz. Bu, asosan, filialni yaratgan vaqtingizdagi magistralning nusxasi. Shunda siz barcha ishlaringizni filialda qilasiz. Filialda qilingan har qanday o'zgarishlar magistralga ta'sir qilmaydi, shuning uchun magistral hali ham foydalanish mumkin bo'lib, boshqalarga u erda ishlashni davom ettirishga imkon beradi (masalan, xatolarni tuzatish yoki kichik yaxshilanishlar qilish). Funktsiyangiz tugagach, siz filialni magistralga qayta birlashtirasiz. Bu sizning barcha o'zgarishlaringizni filialdan magistralga o'tkazadi.

Odamlar filiallar uchun foydalanadigan bir qator naqshlar mavjud. Agar sizda bir vaqtning o'zida bir nechta asosiy versiyalari qo'llab-quvvatlanadigan mahsulotingiz bo'lsa, odatda har bir versiya filial bo'ladi. Men ishlayotgan joyda bizda QA bo'limi va ishlab chiqarish bo'limi bor. Kodimizni QAga chiqarishdan oldin biz QA bo'limiga o'zgarishlarni birlashtiramiz, so'ngra u yerdan joylashtiramiz. Ishlab chiqarishga chiqarishda biz QA bo'limidan ishlab chiqarish bo'limiga integratsiya qilamiz, shuning uchun ishlab chiqarishda ishlaydigan kod QA sinovdan o'tkazgan kod bilan bir xil ekanligini bilamiz.

Mana Vikipediyadagi filiallar yozuvi, chunki ular narsalarni mendan ko‘ra yaxshiroq tushuntirib berishi mumkin. . :)

person Herms    schedule 19.08.2008

Magistral : Agile-da har bir sprint tugagandan so'ng, biz qisman jo'natiladigan mahsulot bilan chiqamiz. Ushbu nashrlar bagajda saqlanadi.

Filiallar : Har bir davom etayotgan sprint uchun barcha parallel ishlanmalar kodlari filiallarda saqlanadi.

Teglar : Biz har safar qisman jo'natiladigan mahsulot turini beta-versiyasini chiqarganimizda, biz unga teg qilamiz. Bu bizga o'sha paytda mavjud bo'lgan kodni beradi va agar ishlab chiqish paytida kerak bo'lsa, o'sha holatga qaytishga imkon beradi.

person Ujjwal    schedule 25.04.2017
comment
Bu sizningmaxsus ish jarayoni, u umuman qo'llanilmaydi. - person Jason S; 18.09.2018

GIT bilan tanish bo'lgan odamlar uchun GIT-dagi master SVN-dagi trunkga teng.

Filial va teg GIT va SVN da bir xil terminologiyaga ega.

person Desert Rose    schedule 04.04.2018